Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14

    [C]spiegazioni su array

    ciao a tutti sono nuovo del forum e sto cercando di imparare qualcosa.
    Vorrei capire come mai il primo printf() stampa i numeri mentre il secondo no.
    Come faccio a memorizzare i dati per stamparli o verificarli successivamente?

    codice:
    #include <stdio.h>
    int main ()
    {
        int int_array[5];
        int i=0;
        for (i=0; i<5; i++)
        {
            int_array[i]=i;
            printf ("%d\n", int_array[i]); // stampa perfettamente i numeri
            }                                    // da 0 a 4
            printf ("%d\n", int_array[i]); // riga che non funziona
            getchar();
            getchar();
    }
    ringrazio anticipatamente gip

  2. #2

    Re: [C]spiegazioni su array

    Originariamente inviato da gip1975
    ciao a tutti sono nuovo del forum e sto cercando di imparare qualcosa.
    Vorrei capire come mai il primo printf() stampa i numeri mentre il secondo no.
    Come faccio a memorizzare i dati per stamparli o verificarli successivamente?

    codice:
    #include <stdio.h>
    int main ()
    {
        int int_array[5];
        int i=0;
        for (i=0; i<5; i++)
        {
            int_array[i]=i;
            printf ("%d\n", int_array[i]); // stampa perfettamente i numeri
            }                                    // da 0 a 4
            printf ("%d\n", int_array[i]); // riga che non funziona
            getchar();
            getchar();
    }
    ringrazio anticipatamente gip
    Benvenuto nel forum di HTML.it

    Soluzione semplice: il tuo secondi printf è fuori dal ciclo for (vedi le parentesi graffe), quindi stamperà solamente l'ultimo valore.
    La prossima volta specifica meglio l'espressione "non funziona": da errori? Da risultati imprevedibili?


    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14
    grazie della risposta.
    ok ho capito il problema.
    Come faccio a ricordare i dati per tutta l'esecuzione del programma?
    Nel secondo printf() stampa il numero 112 penso che sia un numero casuale.
    Immagini allegate Immagini allegate

  4. #4
    Dipende..in alcuni casi si utilizzano i puntatori, tuttavia dovresti fare un esempio specifico.

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    int_array[5] come valore non esiste,tu nel printf fuori dal ciclo stavi tentando di stampare il sesto elemento dell' array,che non hai inizializzato.

  6. #6
    Originariamente inviato da ramy89
    int_array[5] come valore non esiste,tu nel printf fuori dal ciclo stavi tentando di stampare il sesto elemento dell' array,che non hai inizializzato.
    Aggiungo: ricorda che quando si inizializza un array così:

    codice:
    int array[n]
    il tuo array andrà da 0 a (n-1), ovverò conterrà n elementi.


    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14
    ciao grazie della spiegazione avete trovato al volo il problema!!

    codice:
    printf ("%d\n", int_array[5]); // riga che non funziona
    l'output è 112

    codice:
    printf ("%d\n", int_array[4]); // riga che non funziona
    l'output è 4
    se come ultimo ciclo prende i=5 il tutto non va' se modifico in questo modo
    il problema è risolto, stampo tutti i numeri senza ricorrere ai puntatori
    che devo ancora "studiare"

    codice:
    #include <stdio.h>
    int main ()
    {
        int int_array[5];
        int i=0;
        for (i=0; i<5; i++)
        {
            int_array[i]=i;
            printf ("%d\n", int_array[i]); // stampa perfettamente i numeri da 0 a 4
            }                               
        for (i=0; i<5; i++)                   //  riprendo tutto l'array e ristampo
        {
            printf ("%d\n", int_array[i]);// riga che dava problemi con numeri casuali
            } 
            getchar();
            getchar();
    }
    domani vi posto tutto il mio mini-sorgente per calcolare i numeri primi
    vorrei scrivere tutto da solo per capire dove sbaglio e imparare di più

    io dovrei confrontare tutti i dati memorizzati dopo il calcolo e ne basterebbe 1 solo per dire,
    ad esempio 9 a%b=0 b=3, non è un numero primo.

    ciao gip

    ps se esiste un metodo più semplice me lo suggerite??

  8. #8
    Originariamente inviato da gip1975
    ciao grazie della spiegazione avete trovato al volo il problema!!

    codice:
    printf ("%d\n", int_array[5]); // riga che non funziona
    l'output è 112

    codice:
    printf ("%d\n", int_array[4]); // riga che non funziona
    l'output è 4
    se come ultimo ciclo prende i=5 il tutto non va' se modifico in questo modo
    il problema è risolto, stampo tutti i numeri senza ricorrere ai puntatori
    che devo ancora "studiare"

    codice:
    #include <stdio.h>
    int main ()
    {
        int int_array[5];
        int i=0;
        for (i=0; i<5; i++)
        {
            int_array[i]=i;
            printf ("%d\n", int_array[i]); // stampa perfettamente i numeri da 0 a 4
            }                               
        for (i=0; i<5; i++)                   //  riprendo tutto l'array e ristampo
        {
            printf ("%d\n", int_array[i]);// riga che dava problemi con numeri casuali
            } 
            getchar();
            getchar();
    }
    domani vi posto tutto il mio mini-sorgente per calcolare i numeri primi
    vorrei scrivere tutto da solo per capire dove sbaglio e imparare di più

    io dovrei confrontare tutti i dati memorizzati dopo il calcolo e ne basterebbe 1 solo per dire,
    ad esempio 9 a%b=0 b=3, non è un numero primo.

    ciao gip

    ps se esiste un metodo più semplice me lo suggerite??
    Più semplice per il nuovo problema? Devi aprire un'altra discussione ma fai una ricerca nel forum, è un argomento già trattato quello dei numeri primi.

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14
    Più semplice per il nuovo problema? Devi aprire un'altra discussione ma fai una ricerca nel forum, è un argomento già trattato quello dei numeri primi.
    io intendevo una soluzione più semplice o diversa rispetto al ciclo for().

    posto il mio piccolo programmino per calcolare i numeri primi funziona tutto alla perfezione.
    codice:
    #include <stdio.h>
    int main()
    {
    int x;
    int a=2,b=1,c,d,i;
    printf("calcolo numeri primi inserisci il numero fino a dove vuoi arrivare \n\n");
    scanf("%d" , &x);
    int n_array[x];
    printf("\nnumero inserito %d\n\n", x);
    printf("i numeri primi sono \n\n");
    while (a<=x){
            b=1;
          while (b<=a){
                c=a%b;
                d=b-1;
                n_array[d]=c;                                 
                b++;
                }
                for (i=1; i<d-1; i++)
            {
            if (n_array[i]==0) 
                            goto incremento;
                            }
            printf(" %d\t",a);
            goto incremento;
            incremento:
                       a++; 
            }         
    getchar();
    getchar();
    }
    posso migliorare?
    pensavo di togliere qualche variabile per il conteggio ma non penso sia possibile
    come impostazione può andare bene??
    è il mio primo programma, se così, si può chiamare.
    ciao a tutti gip

  10. #10
    Originariamente inviato da gip1975
    io intendevo una soluzione più semplice o diversa rispetto al ciclo for().

    posto il mio piccolo programmino per calcolare i numeri primi funziona tutto alla perfezione.
    codice:
    #include <stdio.h>
    int main()
    {
    int x;
    int a=2,b=1,c,d,i;
    printf("calcolo numeri primi inserisci il numero fino a dove vuoi arrivare \n\n");
    scanf("%d" , &x);
    int n_array[x];
    printf("\nnumero inserito %d\n\n", x);
    printf("i numeri primi sono \n\n");
    while (a<=x){
            b=1;
          while (b<=a){
                c=a%b;
                d=b-1;
                n_array[d]=c;                                 
                b++;
                }
                for (i=1; i<d-1; i++)
            {
            if (n_array[i]==0) 
                            goto incremento;
                            }
            printf(" %d\t",a);
            goto incremento;
            incremento:
                       a++; 
            }         
    getchar();
    getchar();
    }
    posso migliorare?
    pensavo di togliere qualche variabile per il conteggio ma non penso sia possibile
    come impostazione può andare bene??
    è il mio primo programma, se così, si può chiamare.
    ciao a tutti gip
    quello che ti dirò adesso te lo devi ricordare per qualsiasi linguaggio e per qualsiasi progetto
    mai mai mai mai mai mai maaaai usare il GOTO
    MAI. C'è sempre un modo per evitarlo (e spesso è banale)
    Il goto per te non deve proprio esistere (E effettivamente in molti linguaggi lo stanno totalmente levando come costrutto)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.