PDA

Visualizza la versione completa : Programma calcolo somma valori e confronto


yassassin83
10-09-2006, 14:42
Salve a tuttti, sono un sistemista ventitrenne che si sta avvicinando al fantastico mofdo della programmazione, come prima cosa sento di dover un complimento a ttti voi che, anche se non ho mai scritto, seguo abastanza spesso, vi trovo molto preparati e fantasiosi, complimenti!
Seconda cosa volevo subito porvi un quesito.....questo codice uno dei classici programmi che si tentano all'inizio della propria strada nel mondo della programmazione:


#include <stdio.h>
int c1=0, c2=0;
main()
{
printf ("\nciao questo programma esamina due cifre e determina quale la maggiore");
printf ("\n\ninserisci la prima cifra: ");
scanf ("%d",&c1);
printf ("\n\ninserisci la seconda cifra: ");
scanf ("%d",&c2);
if (c1 > c2)
printf ("\n\ala prima cifra maggiore della seconda");
else if (c1 = c2)
printf ("\n\ale due cifre sono uguali");
else printf ("\n\ala seconda cifra maggiore della prima cifra");
}

ok l'ambiente di sviluppo dev-c++, compilo il tutto e ho il mio bel programma.exe
ora alla prima esecuzione del prog va tutto ok, le cifre vengono riconosciute perfettamente, se invece lancio nuovamente il prog qualsiasi cifra io metto mi da sempre il messaggio che le de cifre sono uguali....valori in memoria? che ne pensate??? altra anomalia che in output il carattere "" non viene visualizzato correttamente....che ne pensate???
grazie mille

yassassin83
10-09-2006, 14:46
mi correggo automaticamente....penso che il problema sia nell'if nidificato perche se immetto la prima cifra maggiore della seconda allora mi da il messaggio corretto ma non riesce a funzionare il resto

U-bahn
10-09-2006, 15:31
il primo if corretto infatti, come hai detto tu,
se la prima cifra maggiore della seconda il programma
funziona.

l'errore sta nell'else if, questo:


else if (c1 = c2)
un errore.

in C '=' equivale ad un assegnamento: l'espressione "c1 = c2"
assegna a 'c1' il valore di 'c2', che diventa anche il valore dell'espressione.

Ora, se 'c2' uguale a zero (e 'c1' < 0), l'espressione viene
valutata come falsa ed il programma prosegue correttamente, ma, in tutti
gli altri casi, l'espressione risulta vera e viene eseguita la parte di codice
corrispondente.

tutto questo :fagiano: per dirti che avresti dovuto usare
'==', al posto di '='


else if (c1 == c2)

che compie un test sull'uguaglianza dei due valori

:ciauz:

yassassin83
10-09-2006, 15:33
grazie grazie u-bahm hop capito tutto

per l'altra cosa del carattere sai nulla?

U-bahn
10-09-2006, 18:10
alcuni compilatori si comportano come ci si aspetterebbe quando
incontrano caratteri accentati all'interno di stringhe e caratteri
(...), altri no

se il tuo tra questi ultimi (...:)...) devi utilizzare il valore
decimale, oppure quello esadecimale o, ancora, quello ottale:

es.

printf("%c %c %c\n", 232, 0xe8, 0350);
printf("\xe8 \350\n");

questi i codici dei caratteri accentati nel set di caratteri
extended ASCII (8 bit, unsigned, da 0 a 255):



CARATTERE | DECIMALE | ESADECIMALE | OTTALE
--------------|----------|-------------|-------
| | |
| 192 | 0xc0 | 0300
| 200 | 0xc8 | 0310
| 201 | 0xc9 | 0311
| 204 | 0xcc | 0314
| 210 | 0xd2 | 0322
| 217 | 0xd9 | 0331
| 224 | 0xe0 | 0340
| 232 | 0xe8 | 0350
| 233 | 0xe9 | 0351
| 236 | 0xec | 0354
| 242 | 0xf2 | 0362
| 249 | 0xf9 | 0371


:ciauz:

Loading