PDA

Visualizza la versione completa : [C] Conversioni e inizializzazioni {era: scusate l'ignoranza}


sean_von_drake
07-07-2005, 13:15
scusate, qualcuno mi pu spiegare perch questo programmino non funziona? sicuramente una cavolata ma io non ci arrivo. :dh:



//
// somma di argomenti v0.1
//

#include <stdio.h>

main(int argc, char* argv[])
{
/* dichiarazioni */
int i;
int somma;
int addendo;

/*corpo principale del programma */
for(i = 1; i < argc; i++)
{
printf("l'argomento %d e' %s\n",i,argv[i]);
addendo = (int) argv[i];
printf("eseguito il cast dalla stringa '%s' all'intero '%d'\n",argv[i],addendo);
somma = somma + addendo;
}
printf("la somma di %d addendi risulta %d\n",(i - 1),somma);
return(0);
}

grazie a tutti!!!

unomichisiada
07-07-2005, 13:21
Originariamente inviato da sean_von_drake
scusate, qualcuno mi pu spiegare perch questo programmino non funziona? sicuramente una cavolata ma io non ci arrivo. :dh:



//
// somma di argomenti v0.1
//

#include <stdio.h>

main(int argc, char* argv[])
{
/* dichiarazioni */
int i;
int somma;
int addendo;

/*corpo principale del programma */
for(i = 1; i < argc; i++)
{
printf("l'argomento %d e' %s\n",i,argv[i]);
addendo = (int) argv[i];
printf("eseguito il cast dalla stringa '%s' all'intero '%d'\n",argv[i],addendo);
somma = somma + addendo;
}
printf("la somma di %d addendi risulta %d\n",(i - 1),somma);
return(0);
}

grazie a tutti!!!
A) avendo letto il regolamento sapresti che titoli come il tuo sono da esso sconsigliati se non vietati e sei passibile di chiusur adel post
B) Sei stato impreciso anche nel formulare la domanda: se vuoi aiuto devi dirci almeno che errore ti da, se tel lo da in compilazione o esecuzione, meglio ancora se posti l'output del compilatore se un errore di compilazione.

alka
07-07-2005, 13:22
Il linguaggio di programmazione va indicato nel titolo della discussione, assieme ad una descrizione estremamente sintetica del problema, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=762409).

Di quale linguaggio si tratta? Qual l'errore che ti viene restituito?

Ciao! :ciauz:

Squall1988
07-07-2005, 13:53
ci sono un paio di errori importanti nel tuo codice...

per prima cosa, argv un vettore di stringhe, quindi ogni elemento una stringa (vettore di caratteri, come preferisci). Se tu fai

addendo = (int) argv[i];

non vedo cosa possa saltare fuori, se non la conversione ad intero dell'indirizzo del primo carattere della stringa in esame, o qualcosa di altrettanto brutto :oVVoVe: :confused:

per convertire da stringa a carattere devi usare la funzione atoi, credo sia dentro la stdlib.h

addendo = atoi (argv[i]);

e questo il primo errore.

in secondo luogo, le variabili vanno sempre inizializzate prima di eseguirci qualche operazione. A meno che non le dichiari come statiche o globali, le variabili hanno, al momento della dichiarazione, un valore indefinito. Quindi quando dichiari la variabile somma devi inizializzarla ad un valore, in questo caso 0. Se avessi fatto la variabile prodotto, ovviamente l'avresti inizializzata a 1.

ecco il codice corretto, a me funge.


//
// somma di argomenti v0.1
//

#include <stdio.h>
#include <stdlib.h>
main(int argc, char* argv[])
{
/* dichiarazioni */
int i;
int somma = 0;
int addendo;

/*corpo principale del programma */
for(i = 1; i < argc; i++)
{
printf("l'argomento %d e' %s\n",i,argv[i]);
addendo = atoi (argv[i]);
printf("eseguito il cast dalla stringa '%s' all'intero '%d'\n",argv[i],addendo);
somma = somma + addendo;
}
printf("la somma di %d addendi risulta %d\n",(i - 1),somma);
system ("pause");
return(0);
}

sean_von_drake
08-07-2005, 16:34
Grazie a tutti! E scusate il modo maldestro in cui ho postato... far tesoro dell'esperienza!

Loading