Visualizzazione dei risultati da 1 a 7 su 7

Discussione: C errore

  1. #1

    C errore

    ho fatto questo sorgente solo per capire come funziano
    gli array multidimensionali!

    include <stdio.h>

    int array[4][2];
    int x,a,array1,count,count1;
    int main()
    {
    for(a=0;a<=3;a++)
    {
    for(x=0;x<=1;x++)
    {
    printf("\n\ainserisci il numero %d %d\t\t",a+1,x+1);
    scanf("%d",&array[a][x]);
    }
    }

    return 0;
    }

    volevo che l'output fosse:

    0 0 qui inserisco il numero
    0 1 qui inserisco il numero
    1 0 qui inserisco il numero
    1 1 qui inserisco il numero
    2 0 qui inserisco il numero
    2 1 qui inserisco il numero
    3 0 qui inserisco il numero
    3 1 qui inserisco il numero

    invece l'output è:
    1 1 qui inserisco il numero
    1 2 qui inserisco il numero
    2 1 qui inserisco il numero
    2 2 qui inserisco il numero
    3 1 qui inserisco il numero
    3 2 qui inserisco il numero
    4 1 qui inserisco il numero
    4 2 qui inserisco il numero

    perchè questa differenza?
    come devo fare per avere l'output che voglio???
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    173
    Codice PHP:
    for(a=0;a<=[B]4[/B];a++)
    ....
    printf("\n\ainserisci il numero %d %d\t\t",a,x); 
    Nel ciclo for devi imporre come limite il valore max dell'array, altrimenti il prg. non lo sfrutta completamente l'interro array multidimensionale!
    Inoltre nella chiamata printf nel tuo avevi a+1 e x+1 e nel prg avevi un doppio incremento del valore assegnato alle var a e x uno nei cicli for e uno nella chiamata a printf e quindi non si partiva dal valore 0 ma da quello 0 + 1 = 1!
    (Lo so che la somma è banale, ma è per kiarire!)

    CIAO

  3. #3
    Non è proprio così....
    intanto il ciclo va bene così, se metti
    for(a=0;a<=4;a++)

    accedi a una posizione di memoria che non è allocata (a[4])
    volendo puoi fare
    for(a=0;a<4;a++)

    Inoltre nella printf non incrementi le variabile a ed x, solo
    visualizzi il loro valore +1, ecco perchè ti viene quell'output.

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    173
    Hai ragione, scusa con il ciclo for mi sono confuso, grazie del chiarimento!!
    per quanto riguarda printf intendevo dire che con la notazione usata da Mercuzio si aggiungeva uno al valore della variabile!

    GRAZIE E CIAO

  5. #5
    no,magari ho capito male, ma io so che l'array
    usa i numeri da zero ad n-1 cioè:
    array[4][2] c'è "spazio" da 0-0 a 3-1.
    non è quindi sbagliato il mio ciclo for dove metto x<=3 e non x<4.
    cmq,come dite voi bisogna togliere il +1, io incremento una variabile che verrebbe incrementata ugualmente, in quanto sia x che y sono nel ciclo for e vengono incrementate volta per volta.
    scusate, ho scoperto la risposta dopo poco che avevo messo sul forum la domanda.
    grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    173
    Si infatti gli array hanno valore da 0 a n - 1; sono io che ho fatto confusione, kiedo scusa!!

    CIAO

  7. #7
    figurati, non ti preoccupare,
    grazie comunque

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.