Somma di interi.

di il
42 risposte

42 Risposte - Pagina 2

  • Re: Somma di interi.

    Shrimpy ha scritto:


    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.
    Tutto ciò vale solo per le variabili locali, non per le globali che sono sempre inizializzate a zero (era questo il caso). Attenzione
    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.
    Questo non può succedere con le globali.
    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.
    Non si spreca memoria. E non è per questo che non si usano le globali.
    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.
    Le variabili e i parametri hanno utilizzo diverso. Che c'entra?
    Spero di essere stato esaustivo con la risposta!.
    In realtà, a parte la buona volontà, hai dato informazioni sbagliate e fuorvianti.
  • Re: Somma di interi.

    MT09_full ha scritto:


    Shrimpy, sei stato chiarissimo e professionale, ti ringrazio per queste dritte, che solo un vero programmatore sa a seguito di esperienza!
    In realtà ha dato informazioni sbagliate. Ma tu non lo sai.

    Rimane il fatto che il primo esercizio (sommatoria) è sbagliato.
    I manuali tendono a dirti quello che e' fattibile o no, ma non danno molte attenzioni su quello che e'meglio fare e non!
    No, molti manuali lo fanno. Dipende dal testo.
  • Re: Somma di interi.

    MT09_full ha scritto:


    ~Shrimpy, cosa ne dici?
    Non ci si rivolge ad un solo utente nel forum. Oltre che vietato è anche poco corretto.

    E' anche vietato parlare di altro che non sia indicato nel titolo, il secondo codice andrebbe discusso in altro thread. Qui è OT.
  • Re: Somma di interi.

    Ok oregon, la prossima volta apro un altro thread, era solo per dare continuazione al thread!
  • Re: Somma di interi.

    La "continuazione" potrebbe valere all'infinito con tutti gli esercizi del libro. Fossi in te riprenderei e correggerei il primo esercizio, ma fai come vuoi.
  • Re: Somma di interi.

    MT09_full ha scritto:


    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!
    Lieto di esserti stato utile
  • Re: Somma di interi.

    oregon ha scritto:


    La "continuazione" potrebbe valere all'infinito con tutti gli esercizi del libro. Fossi in te riprenderei e correggerei il primo esercizio, ma fai come vuoi.
    Vedi che ho verificato e l'esercizio è corretto!
    Grazie
  • Re: Somma di interi.

    MT09_full" post_id="8686593" time="1646663809 ha scritto:


     
     #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;
    }
     


    ~Shrimpy, cosa ne dici?
    Questo è un buon punto di partenza per il tuo programmino.
    Alcune dritte che sento di darti:
    - In questo caso hai fatto bene a usare le variabili locali, (come tu stesso hai specificato) dovresti non inizializzare la variabile iterativa, ovvero la "x" per intenderci. Dato che il ciclo for lo fa già di suo. Sempre per motivi di spazio.
    - Nelle funzioni non devono comparire numeri (se non 0 e 1) Difatti è buona norma definire le costanti (es il tuo 15), esterne al main.
    - Il ciclo di for (come molti altri) finché deve eseguire una sola istruzione, può essere usato senza le parentesi graffe.
    - Infine si, è stato carino chiedere il mio aiuto, ma un forum è formato da più utenti anche più qualificati di me...

    Comunque, il codice sarebbe di questo formato:
    #define MAX 15
    
    int main()
    {
        int x, dispari = 2;
        for(x=1; x<=MAX; x+=dispari) // L'operatore * prima delluguale sta a dire x = x * dispari
           ...
    }
  • Re: Somma di interi.

    Tante grazie ancora!
  • Re: Somma di interi.

    oregon ha scritto:


    Tutto ciò vale solo per le variabili locali, non per le globali che sono sempre inizializzate a zero (era questo il caso). Attenzione

    Non si spreca memoria. E non è per questo che non si usano le globali.
    Primo stavo parlando nel corpo della funzione, secondo vorresti dirmi che data una variabile globale essa non occuperà spazio nella memoria?
    Magari ti dico io!

    oregon ha scritto:


    Le variabili e i parametri hanno utilizzo diverso. Che c'entra?
    Centra, ma evidentemente non hai capito il concetto che volevo trasmettere.
    Se una variabile dovessero contendersela due o più funzioni, questa si passerebbe come parametro.

    oregon ha scritto:


    In realtà, a parte la buona volontà, hai dato informazioni sbagliate e fuorvianti.
    Certo, ho proprio dato informazioni sbagliate e furiovianti (che oltre ciò sono sinonimi, quindi perché ripetere il concetto?), difatti l'utente ha ringraziato te per la tua spiegazione, tra l'altro molto esaustiva, al suo problema.
  • Re: Somma di interi.

    MT09_full ha scritto:


    oregon ha scritto:


    La "continuazione" potrebbe valere all'infinito con tutti gli esercizi del libro. Fossi in te riprenderei e correggerei il primo esercizio, ma fai come vuoi.
    Vedi che ho verificato e l'esercizio è corretto!
    Grazie
    Vedo che non ti fidi. Va beh ...
  • Re: Somma di interi.

    Weierstrass ha scritto:


    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...
    Sinceramente non condivido quest'idea, io non sono portato a pensare che una persona facente una domanda su un forum, sia degno di una risposta esaustiva.
    Detto questo ognuno è libero di condividere la sua, se voi persone che leggete e non volete rispondere per i motivi da te elencati, siete liberissimi di non farlo, e nessuno ha il diritto di contestare o rimproverarvi.

    edit: HO SBAGLIATO IL CONCETTO MAMMAMIA
  • Re: Somma di interi.

    Shrimpy ha scritto:



    for(x=1; x<=MAX; x+=dispari) // L'operatore * prima delluguale sta a dire x = x * dispari
    Ma nel codice non usi *=
  • Re: Somma di interi.

    Shrimpy ha scritto:


    Primo stavo parlando nel corpo della funzione, secondo vorresti dirmi che data una variabile globale essa non occuperà spazio nella memoria?
    Magari ti dico io! Non si utilizza memoria di più di quanto ne utilizzi all'interno della funzione. Capiamoci. Una variabile è una variabile.
    Centra, ma evidentemente non hai capito il concetto che volevo trasmettere.
    Se una variabile dovessero contendersela due o più funzioni, questa si passerebbe come parametro.
    No, mi sa che non hai capito tu. Se io utilizzo i nelle for di tre funzioni, secondo te passo i come parametro?
    Cosa c'entra, ripeto?

    oregon ha scritto:


    In realtà, a parte la buona volontà, hai dato informazioni sbagliate e fuorvianti.
    Dai, sono parole con significato diverso, non sono ripetizioni. Anche la lingua italiana?
    l'utente ha ringraziato te per la tua spiegazione, tra l'altro molto esaustiva, al suo problema.
    L'utente è ancora convinto che il primo esercizio faccia quanto richiesto dall'esercizio perché ha meno esperienza di te, che comunque non hai detto che il suo primo codice è sbagliato.

    Ripeto, tu hai una preparazione "scolastica", lui sta iniziando adesso quindi ha bisogno di informazioni precise.
  • Re: Somma di interi.

    Oregon; a quanto pare io ho le mie buone motivazioni di (ri)affermare quanto ho detto e te hai le tue per fare la medesima cosa.
    Smettiamola di mangiarci il fegato vicendevolmente perfavore.
Devi accedere o registrarti per scrivere nel forum
42 risposte