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

    [C++] Aiuto array bidimensionali

    Ciao ragazzi, devo fare un mini giochino in C++ ma ho bisogno di un chiarimento in merito agli array bidimensionali. Questo è il codice:

    codice:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    const int N=12;
        char t[N][N]={{"a"},{"a"},{"a"},{"a"},
                      {"a"},{"a"},{"a"},{"a"},
                      {"a"},{"a"},{"a"},{"a"}};
                     
                      
                     
                      
        cout << t;
    }
    Quando compilo e eseguo il programma il terminale mi dice: 0x28fea0 invece che stamparmi a video le "a". Perche?


    Grazie ciao!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Perchè dovrebbe stamparti la "a"? Tu stai buttando in output "t", che è un puntatore (un indirizzo di memoria), non il valore puntato da "t".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ok hai ragione cavolo, ma allora come faccio a stampare la tabellina con tutte le "a" scritte? Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ancora devo capire perchè dichiari un array bidimensionale 12 x 12 (di caratteri) se poi nella pratica costruisci 1 array con 12 array da 1 elemento stringa (che è già di per se un errore piuttosto grave). Forse a te basta un array monodimensionale da 12 elementi carattere:

    codice:
    char t[N]={'a','a','a','a',
               'a','a','a','a',
               'a','a','a','a'};
    Mi sa che devi rivedere tanti concetti: la differenza fra un carattere e una stringa (array o puntatore di caratteri), la differenza fra array mono e multidimensionali...

    Poi, per scorrerlo, in questo caso è sufficiente un for.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Devo fare un giochino che ha bisogno di una tabella (è un labirinto). In questa tabella devo inserire il carattere "#" nei bordi come zona da non toccare. Per fare la tabell,a ho bisogno di un array bidimensionale giusto (rigaxcolonna)? A me serve un array di 10x10 in cui nei bordi devo inserire il carattere "#" e nel campo di gioco le "@". Il campo di gioco viene definito come (N-2)x(N-2) con N costante=10. Come faccio a farlo? Please aiutami sono alle prime armi

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Allora quello che ti serve (o meglio, che ti può tornare maggiormente utile) è un array bidimensionale 10 x 10 di caratteri:

    codice:
    int N = 10;
    
    // Dichiaro un array bidimensionale di 10 x 10 elementi
    char matrice[N][N];
    
    // Lo riempio con il carattere '#' nei bordi e '@' all'interno
    for(int riga=0; riga<N; riga++) {
       for(int colonna=0; colonna<N; colonna++) {
          if ((riga == 0) || (riga == N-1) ||
              (colonna == 0) || (colonna == N-1)) {
             // Sono nel bordo
             matrice[riga][colonna] = '#';
          } else {
             // Sono all'interno del campo
             matrice[riga][colonna] = '@';
          }
       }
    }
    L'istruzione if per il riempimento della matrice si può tranquillamente sostituire con un'assegnazione unica facendo uso dell'operatore ternario '?'.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Grazie davvero. Scusami ma sono alle prime armi con la programmazione e cerco di avere un pò di aiuti da chi ne sà più di me così da ingranare e andare .

  8. #8
    Scusatemi se vi rompo ancora ma avrei ancora bisogno di un vostro aiutino:

    che comando devo usare sempre in C++ per assegnare a un array bidimensionale (t[M][M], con M=5) il valore blank (spazio vuoto)?
    Se io scrivo t[M][M]={" "} mi dice: expected primary expression before '{'.

    Come devo fare ragazzi? Grazie ciao


    P.S.: l'array è di tipo char dichiarato in precedenza.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Fallo nella dichiarazione

    char t[M][M]={" "};
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    O usi la strcpy, oppure cambi strategia e usi l' allocazione dinamica.

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.