Inserimento numeri in un array bidimensionale

di il
10 risposte

Inserimento numeri in un array bidimensionale

Ciao ragazzi, ho questo problema:


Uploaded with ImageShack.us

#include <stdio.h>
#include <stdlib.h>
main(){
     int A[4][4],x,y;
     for(x=0;x<4;x++){
          for(y=0;y<4;y++){
               scanf("%d",&A[x][y]);
          }
     }
     printf("\n");
     for(x=0;x<4;x++){
          for(y=0;y<4;y++){
               printf("%d\t",A[x][y]);
          }
          printf("\n");
     }
     system("PAUSE");
}
vorrei caricarlo in modo normale senza dover prima caricare i numeri uno sopra l'altro e poi stampare tutto; non so se sono stato abbastanza chiaro xD faccio un po pena in italiano; grazie in anticipo =)

10 Risposte

  • Re: Inserimento numeri in un array bidimensionale

    Prima di visualizzare la matrice devi per forza inserire tutti gli elementi..

    Al massimo se proprio vuoi una cosa più carina puoi fare cosi:
    
    
    #include <stdio.h>
    #include <stdlib.h>
    main(){
         int A[4][4]={{0,0,0,0},
                      {0,0,0,0},
                      {0,0,0,0},
                      {0,0,0,0}};
         int x,y,z,t;
         for(x=0;x<4;x++)
         {
              for(y=0;y<4;y++)
              {
                   system("cls");
                   printf("Inserisci elemento riga %d colonna %d: ",x+1,y+1); scanf("%d",&A[x][y]);
                   printf("\nEcco la tua matrice:\n\n");
                   for(z=0;z<4;z++)
                   {
                     for(t=0;t<4;t++)
                     {
                       printf("%d\t",A[z][t]);
                     }
                     printf("\n");
                   }
                   printf("\n\nPremi un tasto per continuare..\n");
                   getch();
               }
         }
        
         system("PAUSE");
    }
    
    Inizializzi la matrice con tutti 0 e ad ogni inserimento visualizzi tutti gli elementi e poi ripulisci lo schermo..
  • Re: Inserimento numeri in un array bidimensionale

    Penso di aver trovato una soluzione, guardate un po' come ho fatto:
    
    #include <stdio.h>
    #include <stdlib.h>
    main(){
         int J[4][4],x,y,a,b;
         for(x=0;x<4;x++){
              for(y=0;y<4;y++){
                   scanf("%d",&J[x][y]);
                   system("cls");
                   for(a=0;a<4;a++){
                        for(b=0;b<4;b++){
                             if(a>x) goto lol;
                             if(a==x && b>y) goto lol;
                             printf("%d\t",J[a][b]);
                        }
                        printf("\n");
                   }
                   lol:;
              }
         }
         system("PAUSE");
    }
    


    Uploaded with ImageShack.us

    come potevo fare altrimenti???
  • Re: Inserimento numeri in un array bidimensionale

    Complessità algoritmo 4 celle elevato a 4 for = 256 iterazioni. Certo non è una scheggia.
  • Re: Inserimento numeri in un array bidimensionale

    skynet ha scritto:


    complessità algoritmo 4 celle elevato a 4 for = 256 iterazioni. Certo non è una scheggia.
    Appunto, come devo fare?
  • Re: Inserimento numeri in un array bidimensionale

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int main()
    {
    	int A[4][4],x,y;
    
    	for(x=0;x<4;x++)
    	{
    		for(y=0;y<4;y++)
    		{
    			A[x][y] = getch() - '0';
    			printf("%d\t",A[x][y]);
    		}
    		printf("\n");
    	}
    	system("PAUSE");
    }
    
    funziona x numeri da 0 a 9 per quelli + grandi bisogna lavorarci ancora.
  • Re: Inserimento numeri in un array bidimensionale

    skynet ha scritto:


    
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int main()
    {
    	int A[4][4],x,y;
    
    	for(x=0;x<4;x++)
    	{
    		for(y=0;y<4;y++)
    		{
    			A[x][y] = getch() - '0';
    			printf("%d\t",A[x][y]);
    		}
    		printf("\n");
    	}
    	system("PAUSE");
    }
    
    funziona x numeri da 0 a 9 per quelli + grandi bisogna lavorarci ancora.
    grazie mille! puoi spiegarmi come hai fatto e che cos'è getch?
  • Re: Inserimento numeri in un array bidimensionale

    Getch() Prende uno ed un solo carattere da stdin. Praticamente non hai bisogno di fare Invio.

    getch() si trova in un'header non standard del C/C++, però. Infatti funziona solo su Windows.
  • Re: Inserimento numeri in un array bidimensionale

    Alee ha scritto:


    getch() Prende uno ed un solo carattere da stdin. Praticamente non hai bisogno di fare Invio.

    getch() si trova in un'header non standard del C/C++, però. Infatti funziona solo su Windows.
    perche ha fatto "A[x][y] = getch() - '0';" ??
  • Re: Inserimento numeri in un array bidimensionale

    Se intendi il " - '0' " lo ha ftt perchè la getch() legge un carattere quindi se tu scrivi per esempio 5 lui lo legge come un char quindi andando a sottrarre '0' (che è uguale al valore 48) tu trasformi quel numero da char a int perchè sulla tavola dei codici ascii tra un numero int e lo stesso numero char c'è una differenza di 48..

    Lo ha spiegato a me in passato xD Spero di aver capito bene xD Comunque aspetta lui per la conferma xD
  • Re: Inserimento numeri in un array bidimensionale

    Praticamente se inserisci un carattere da '0' a '9' i valori ASCII corrispondenti saranno da 48 a 57. Se al carattere che inserisci sottrai '0' (cioè 48) troverai il valore corrispondente in int.

    Esempio:
    int A = '8'; // Valore ASCII = 56
    A -= '0'; // 56 - 48 = 8 (il valore in numero)
    if (A == 8) return 0;
    else return 1;
    Questo codice ritornerà 0.
Devi accedere o registrarti per scrivere nel forum
10 risposte