Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] - Caricare array multidimensionale

    Salve ragazzi mi sono posto un quesito, ho la necessità di creare una stringa formata dai caratteri di una riga di un'array m[n][n].

    Array:

    asdf
    xcvb
    cdfs
    dxdg

    stringa1 = asdf

    per caricare il vettore utilizzo questo :


    for(i=0;i<=n;i++){
    for(k=0;k<=n;k++){
    printf("%d-%d \n",i,k);
    M[i][k] = getchar();
    }
    }
    ma stampando con la printf nel ciclo for noto che alcune posizioni vengono saltate e che l'array seppure abbia il numero degli elementi richiesti sballa le loro posizioni.Vorrei caricare l'array nel seguente modo:

    m[0][0] m[0][1]
    m[1][0] m[1][1]
    ecc ecc

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Guarda che gli array in C hanno indice che va da 0 a n-1

    Quindi deve essere

    for(i=0; i<n; i++){
    for(k=0; k<n; k++){
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ci ho provato....cosi mi carica solo due elementi se per esempio n è uguale a 2....

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Che vuoi dire ?

    Inoltre, puoi mostrare la dichiarazione dell'array ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    int n,i,k;

    scanf("%d",&n);

    char M[n][n];

    printf("Tabella");


    for(i=0;i<n;i++){
    for(k=0;k<n;k++){
    printf("%d-%d \n",i,k);
    M[i][k] = getchar();
    }
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ti confermo che devi usare i cicli da 0 a n-1 e ti ricordo che l'input da tastiera bufferizzato considera anche il tasto "Invio" che pressi per accettare i dati. Per evitare questo problema, devi pulire il buffer dopo ogni input.

    codice:
    scanf("%d",&n);
    while(!getchar());
    
    
    M[i][k] = getchar();
    while(!getchar());
    Infine, considera che l'allocazione di un array così come hai fatto è caratteristico dello standard C99 che non è usato da tanti compilatori (probabilmente tu utilizzi DevCpp con mingw ...). Sarebbe meglio utilizzare l'allocazione dinamica dell'array e un puntatore opportuno.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    oregon, non dovrebbe essere

    codice:
    while ( getchar() != '\n' );
    ?

  8. #8
    Originariamente inviato da oregon
    Ti confermo che devi usare i cicli da 0 a n-1 e ti ricordo che l'input da tastiera bufferizzato considera anche il tasto "Invio" che pressi per accettare i dati. Per evitare questo problema, devi pulire il buffer dopo ogni input.

    codice:
    scanf("%d",&n);
    while(!getchar());
    
    
    M[i][k] = getchar();
    while(!getchar());
    Infine, considera che l'allocazione di un array così come hai fatto è caratteristico dello standard C99 che non è usato da tanti compilatori (probabilmente tu utilizzi DevCpp con mingw ...). Sarebbe meglio utilizzare l'allocazione dinamica dell'array e un puntatore opportuno.
    Grazie infinite.....che svista enorme!!!!

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