Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    scusate l'ignoranza...

    scusate, qualcuno mi può spiegare perché questo programmino non funziona? sicuramente è una cavolata ma io non ci arrivo.

    codice:
    //
    // 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!!!
    - Sean von Drake

    http://www.videoarts.eu/ realizzazione siti web bologna

    "Sono un servitore del fuoco segreto, e reggo la Fiamma di Anor."

  2. #2

    Re: scusate l'ignoranza...

    Originariamente inviato da sean_von_drake
    scusate, qualcuno mi può spiegare perché questo programmino non funziona? sicuramente è una cavolata ma io non ci arrivo.

    codice:
    //
    // 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.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Il linguaggio di programmazione va indicato nel titolo della discussione, assieme ad una descrizione estremamente sintetica del problema, come da Regolamento.

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

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    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 VVoVe:

    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.

    codice:
    //
    // 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);
        }
    *********************************
    Andrea
    *********************************

  5. #5
    Grazie a tutti! E scusate il modo maldestro in cui ho postato... farò tesoro dell'esperienza!
    - Sean von Drake

    http://www.videoarts.eu/ realizzazione siti web bologna

    "Sono un servitore del fuoco segreto, e reggo la Fiamma di Anor."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.