Somma di interi.

di il
42 risposte

Somma di interi.

(Calcolare la somma di numeri interi pari) Scrivete un programma che calcoli e stampi la somma degli interi pari da 2 a 30
#include <stdio.h>


int i;
int sum=0;

int main()
{
    for(i=2; i<=30; i=i+2){
        sum= sum+2;
        printf("Risultato della somma:%d\n",sum);
    }

}


Se inizializzo la sum=0 o non la inizializzo e la dichiaro solo come int, il risultato del programma è sempre lo stesso perchè è il ciclo for che itera, quindi, secondo voi, come è più corretto dichiarare quella variabile Int sum?

Deve o non deve essere inizializzata a 0?

42 Risposte

  • Re: Somma di interi.

    In alcuni linguaggi le variabili vengono impostate a zero, compreso in alcuni compilatori.

    Io per non sapere ne leggere ne scrivere le inizializzo sempre ( tranne quando mi dimentico, per fortuna il compilatore poi me lo ricorda ).
  • Re: Somma di interi.

    Ma se inizializzo o non, CLion non mi da warning, il che significa che il programma a me non me lo ricorderebbe, cosa che invece accade a te!

    Anche perche'non e'un errore di sintassi o altro!

    Scusami, ma che programma usi che ti avvisa che non hai inizializzato?

    Da premettere che nel programma che ho fatto io, e' l'iterazione che porta alla somma di Interi!
  • Re: Somma di interi.

    Non conosco CLion, io sto usando vecchie versioni del compilatore Borland che mi segnala queste cose.

    Se lo fa lui credo che CLion che dovrebbe essere nuovo segnali molto di più, magari sono delle impostazioni da cambiare.
  • Re: Somma di interi.

    Non so che dirti!
  • Re: Somma di interi.

    Scusa, la domanda (o il problema) qual è?

    La variabile sum è dichiarata correttamente. Impostare il suo valore a zero non è necessario essendo una variabile globale (e non è necessario che sia globale).
    Questo non è il caso in cui il compilatore avvisa con un warning.
  • Re: Somma di interi.

    MT09_full ha scritto:


    Deve o non deve essere inizializzata a 0?
    Per il buon funzionamento del programma la variabile sum ovviamente deve essere inizializzata a zero.
    Detto ciò, le variabili globali sono inizializzate a zero di default, quindi nel caso specifico non è necessario scriverlo.


    P.S.1
    Perché dichiari i e sum come variabili globali e non locali?

    P.S.2
    Hai provato a lanciare il programma? L'output è quello che ti aspetteresti?
  • Re: Somma di interi.

    Nippolo ha scritto:


    MT09_full ha scritto:


    Deve o non deve essere inizializzata a 0?
    Per il buon funzionamento del programma la variabile sum ovviamente deve essere inizializzata a zero.
    Detto ciò, le variabili globali sono inizializzate a zero di default, quindi nel caso specifico non è necessario scriverlo.


    P.S.1
    Perché dichiari i e sum come variabili globali e non locali?

    P.S.2
    Hai provato a lanciare il programma? L'output è quello che ti aspetteresti?
    Dato che e'un piccolo programmino, ho pensato di porle come globali, ma so benissimo che avrei potuto metterle come locali!
    Anche perche'il prog. funziona lo stesso.
    Pero'cosi' facendo, trovo maggior ordine ponendole in globale!

    Ho lanciato il prog. e ha dato l'esito che mi aspettavo, non capisco il perche' di questa domanda che mi hai posto?
  • Re: Somma di interi.

    Usare variabili globali non ha a che fare con l'ordine. Le globali si usano in casi specifici e limitati ed è bene abituarsi a non utilizzarle.

    Per quanto riguarda il risultato qual è quello che ottieni? Secondo te è corretto? E dato che hai lanciato hai visto una sola riga o tante righe? Era quello che voleva il testo dell'esercizio?
  • Re: Somma di interi.

    Mancava la i come variabile globale

    Visti i thread passati, è chiaro che o il ragazzo non ha voglia di studiare oppure sa già programmare e si sta divertendo con il repertorio classico della cattiva programmazione. Che voglia che avete di rispondergli...
  • Re: Somma di interi.

    oregon ha scritto:


    Usare variabili globali non ha a che fare con l'ordine. Le globali si usano in casi specifici e limitati ed è bene abituarsi a non utilizzarle.

    Per quanto riguarda il risultato qual è quello che ottieni? Secondo te è corretto? E dato che hai lanciato hai visto una sola riga o tante righe? Era quello che voleva il testo dell'esercizio?

    Ti ho dato la risposta, il programmino che ho fatto, eseguiva correttamente quello che era richiesto nella traccia!

    Come vedi, si apre un thread e tu stai li a tendere lo stesso in off topic!
  • Re: Somma di interi.

    MT09_full ha scritto:


    oregon ha scritto:


    Ti ho dato la risposta, il programmino che ho fatto, eseguiva correttamente quello che era richiesto nella traccia!
    Beh, non è vero (non esegue correttamente). E' da un po' che te lo diciamo.
    Come vedi, si apre un thread e tu stai li a tendere lo stesso in off topic!
    Veramente non ho scritto nulla di OT. Non capisco a cosa ti riferisci che sia OT.

    Ho scritto in tanti modi che il codice è sbagliato (e non solo io, rivedi quello che hanno scritto gli altri), ma tu non hai colto il suggerimento. Quindi sono perfettamente IN TOPIC.

    P.S. Non continuare a mettere i ! alla fine di ogni frase, non serve a nulla.
  • Re: Somma di interi.

    Ciao MT09_full!

    Punto primo, quando dichiari una variabile senza inizializzata (es: int num) il compilatore prende uno spazio di memoria pari a "sizeof(int)" quindi 4 byte.
    Questo spazio di memoria non sempre è pulito, quindi con valore pari a NULL. Invero continuando a stampare più variabili inizializzate poco prima, non è escluso che lo spazio preso in memoria (dal compilatore in fase di esecuzione della funzione main in questo caso) sia già stato utilizzato e non adeguatamente pulito.
    Questo comporta non solo l'uso di una variabile con valore errato, ma potrebbe anche darsi che il compilatore prenda uno spazio che prima poteva essere dedicato a una stringa (chat e int), questo non potrebbe che aggravare la situazione.

    Punto secondo, come ti hanno già detto, le variabili interne a una funzione (che solo quest'ultima andrà ad utilizzare) è ottimale dichiararle nella funzione stessa. Questo per evitare sprechi di memoria inutilmente.
    In alternativa se la stessa variabile dovessi utilizzarla in poche funzioni e non in tutte (es: 3 funzioni su 9), conviene anche qua passare questa variabile come parametro.
    Insomma dichiarare una variabile, di singola utilità, in modo globale è ciò che un programma ottimale ripudia.

    Spero di essere stato esaustivo con la risposta!.
    Ci si vede!
  • Re: Somma di interi.

    Shrimpy, sei stato chiarissimo e professionale, ti ringrazio per queste dritte, che solo un vero programmatore sa a seguito di esperienza!
    I manuali tendono a dirti quello che e' fattibile o no, ma non danno molte attenzioni su quello che e'meglio fare e non!
  • Re: Somma di interi.

    Allora ho fatto un altro piccolo programmino e in questo caso ho inserito le variabili in locale ed ho inizializzato le stesse.

    (Calcolare il prodotto di numeri interi dispari) Scrivete un programma che calcoli e stam-
    pi il prodotto degli interi dispari da 1 a 15.
     
     #include <stdio.h>
    
    int main() {
    
        int x=1;
        int prodotto=1;
        for(x=1;x<=15;x=x+2){
            prodotto=prodotto*x;
        }
        printf("Prodotto degli interi dispari:%d\n",prodotto);
        return 0;
    }
     


    Ho inizializzato anche la variabile x, anche se per iterazione avrebbe funzionato con la sola dichiarazione!

    ~Shrimpy, cosa ne dici?
Devi accedere o registrarti per scrivere nel forum
42 risposte