Pagina 1 di 2

perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 4 ott 2009, 16:42
da bob93
Il compilatore nn mi da nessun errore...però i conti nn tornano il programma mi da in output dei risultati sbagliati...come mai?? grazie

Codice: Seleziona tutto
//Programma dimostrativo sull'utilizzo della funzione If
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


main()

{
      int R1=20,R2=30,t,RT;
     
      printf("Inserisci t ");
      scanf("%d \n", & t);
     
      if (t=0)
          RT=(R1*R2)/(R1+R2);
      else if (t=1)
          RT=R1+R2;
         

      printf("%d \n",RT);
     
      system("pause");
      return 0;
     
     
                 
}

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 4 ott 2009, 16:42
da DonJ
tanto per curiosità, cosa deve fare il programma?

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 4 ott 2009, 16:50
da DonJ
ah ma sei sicuro che nell'if non ci vada un "==" anzichè "=" ?
penso che in c
t=0
sia un'assegnazione di 0 alla variabile t

prova a fare
if (t==0)

e se non funziona, che risultati ti da? con quali input?


edit:
e se t non è né 0 né 1 come risponde il programma?

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 5 ott 2009, 14:04
da angus
Codice: Seleziona tutto
//Programma dimostrativo sull'utilizzo della funzione If
...

IF è un "costrutto" e non una "funzione"

Se vuoi un consiglio spassionato, leggiti un buon libro di C... o anche qualche semplice guida online.
Molte cose ti saranno chiare.

saluti

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 5 ott 2009, 16:55
da angus
DonJ ha scritto:tanto per curiosità, cosa deve fare il programma?

immagino (anche leggendo altri post di questi giorni) che voglia, date due resistenze R1 e R2, ottenere il parallelo RT (se mette t=0) e la serie RT (se mette t=1)

Giusto il tuo discorso del doppio "==", ma credo che bob93 debba cominciare dalle basi, altrimenti oltre ad acquisire un sistema sbagliato di programmare... al prossimo "scalino" è ancora qua.

just my 2 cents

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 5 ott 2009, 17:02
da DonJ
angus ha scritto:immagino (anche leggendo altri post di questi giorni) che voglia, date due resistenze R1 e R2, ottenere il parallelo RT (se mette t=0) e la serie RT (se mette t=1)

Giusto il tuo discorso del doppio "==", ma credo che bob93 debba cominciare dalle basi, altrimenti oltre ad acquisire un sistema sbagliato di programmare... al prossimo "scalino" è ancora qua.

just my 2 cents

si hai ragione
ho esaminato il programma puramente dal lato informatico, ci ho pensato dopo al calcolo delle resistenze.

il problema è che bob93 viene qui (come tanti altri) cercando di farsi dire la soluzione senza perderci del tempo sopra,
quando basterebbero 5 minuti di google per trovare l'errore :\
poi di solito il compilatore segna dove sbagli, no?

comunque sono già un po' di giorni che non torna sul topic, quindi immagino abbia risolto

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 5 ott 2009, 17:15
da EdmondDantes
Ciao bob93.
Quel segno di "=" all'interno del costrutto IF non mi piace per niente (non conosco il C, ma sicuramente è quello).

Il simbolo "=" è il simbolo assegnazione.
Scrivendo t=0 imponi il valore zero alla variabile t.

Il simobolo "==" è un operatore relazionale, nel caso specifico l'operatore di uguaglianza.
Scrivendo IF(t==0) esprimi questo concetto: se la variabile t è uguale a zero allora fai questo.

Inoltre, ti voglio avvissare, che l'essere intelligente è l'operatore non il PC! Non devi fidarti di cosa ti dice il compilatore, perché è in grado di trovare errori di sintassi.
Per esempio se vuoi ottenere una somma e scrivi c=a*b, il codice, per il compilatore, è corretto...ma evidentemente c'è qualcosa che non va!

Comunque, confondere il simbolo "==" col simbolo "=" è un tipico errore che si commette agli inizi. Non preoccuparti.
La cosa importante è: scrivi prima i tuoi codici su un foglio e fai quello che farebbe il PC, secondo il suo pensiero (stupido) e no secondo il tuo.
A occhio si ved che vuoi fare serie o parallelo a secondo del valor della variabile t.

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 5 ott 2009, 17:59
da angus
Codice: Seleziona tutto
//Programma dimostrativo sull'utilizzo della funzione If
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


* if è un costrutto e non una funzione
* #include <stdlib.h> non lo metterei, solo per usare system()... comunque vedi tu
* #include <math.h> invece è proprio inutile per fare somme e divisioni

Codice: Seleziona tutto
main()
{
      int R1=20,R2=30,t,RT;


* visto che fai delle divisioni, io userei un "float" al posto di un "int", almeno per R1,R2,RT
* RT=0 (già che ci sei)

Codice: Seleziona tutto
      if (t=0)
          RT=(R1*R2)/(R1+R2);
      else if (t=1)
          RT=R1+R2;

* t==0 e t==1, come già ti è stato detto
* aggiungerei anche un altro else printf("Errore \n"); return 1; ...giusto per...


Codice: Seleziona tutto
      printf("%d \n",RT);

* se usi float, %d diventa %f ..volendo puoi decidere anche la precisione...

Codice: Seleziona tutto
      system("pause");

* inutile, secondo me. vedi sopra

Codice: Seleziona tutto
      return 0;
}

finalmente :)


compito per casa: fai la stessa cosa con un numero N di resistenze inserite dall'utente :mrgreen:

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 6 ott 2009, 15:57
da bob93
ok grazie a tutti....ho risolto il problema consisteva nel sostituire il "=" con "=="....grazie di nuovo....però oggi ho un altro problema con il C...questo è il sorgente sapreste dirmi dov'è l'errore....
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>

#define s 0
#define c 0


main()

{
  int n,m;
             do{
                   printf("Inserisci un numero ");
                   scanf("%d",&n);
                   
                   s=s+n
                   c= c++
               }
               while(n=>0);
  m=s/c;
  printf("mediia è %d \n",m);
  system("pause");
                 

}

Re: perché nn funziona(LINGUAGGIO C)??

MessaggioInviato: 6 ott 2009, 16:10
da Paolino
Io ne vedo almeno due: ti mancano i punti e virgola ";" al termine di due righe di codice:

Codice: Seleziona tutto
s=s+n;
c= c++;


Inoltre non ha senso scrivere
Codice: Seleziona tutto
c=c++;


Basterebbe:
Codice: Seleziona tutto
c++;


Questo, però, se scriviamo:
Codice: Seleziona tutto
int c;
int s;

senza usare i
Codice: Seleziona tutto
#define


Ciao.

Paolo.

Edit: le variabili vanno inizializzate:

Codice: Seleziona tutto
int c;
int s;

void main (void)
{
   c = 0;
   s = 0;
}