Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    434

    [c++] "bordi" di un array bidimensionale

    Ciao,
    avrei una domanda abbastanza banale: voglio creare una stanza 5x5 i cui bordi vengano marcati come "muri". La stanza è un array di 25 oggetti appartenenti alla classe floor, che ha come attributo, fra gli altri, il booleano iswall. Ho scritto questo breve frammento:

    #include <iostream>

    using namespace std;

    class floor{
    bool isdirty;
    bool iswall;

    public:

    floor() { iswall = false; isdirty = false; }
    void setwall() { iswall = true; }
    void showall() { if(iswall) cout << " w "; }
    };


    int main(){

    floor f[25];

    int count=0;
    int i;
    int j;


    cout << "\n\n";


    for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
    if(i == 0 || i == 4 || j == 0 || j == 4) f[i*5+j].setwall();
    }
    }

    for (i = 0; i < 25; i++) {
    if(!(count % 5)) cout << "\n";
    f[i].showall();
    count++;
    }


    cout << "\n\n";

    return 0;

    }
    compilo e mi esce questo:

    w w w w w
    w w
    w w
    w w
    w w w w w

    mentre invece dovrebbe essere così:

    codice:
    w w w w w
    w           w
    w           w
    w           w
    w w w w w
    Perchè una cosa del genere? Come posso rimediare?


    Sifr

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Beh scusa... stai stampando solo delle "w", non vedo alcun codice che stampa uno spazio se non è un muro!

    Poi comunque potresti fare l'array molto più semplicemente con floor f[5][5];
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Forse perche', se non e' muro, lo devi indicare ?

    codice:
    void showall() { if(iswall) cout << " w "; else cout << "   "; }

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    434
    whooooops

    Non posso neanche tentare la scusa dell'ora tarda che è troppo presto

    Grazie

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.