» »

[C++]Tezava s strukturo

[C++]Tezava s strukturo

Keki ::

Imam čudno težavo. Delam nalogo s strukturo in sem si za test napisal funkcijo ki postavi vse elementa navidezne sahovnice na karakter X oz O. In potem namesto da bi pri izpisu izrisalo sahovnico z X oz O, mi izriše kr nekaj... Isto kot da nebi klical funkcije reset.
Še koda:

struct pozicija {
       char sahovnica[8][8];
       enum na_potezi { beli, crni };
       bool rokada;
       bool passant;
       short st_polpotez;
       short st_poteze;
       

       };
       
void reset(pozicija p)
{
     for(int i=0;i<8;i++)
     {
             for(int j=0;j<8;j++)
             {
                     if((i+j)%2 == 0)
                     p.sahovnica[i][j]=='X';
                     
                     else 
                     p.sahovnica[i][j]=='O';
             }
     }
}
                     


void izrisi(pozicija p)
{
     for(int i=0;i<8;i++)
     {
             for(int j=0;j<8;j++)
             {
                     cout<<p.sahovnica[i][j];
             }
             cout<<endl;
     }
}



int main()
{

    pozicija g;
    
    reset(g);
    izrisi(g);

cin.ignore();
cin.get();
return 0;
}
http://www.alfakan.si/
http://mihajerot.si/
  • spremenilo: Keki ()

moowy123 ::

Ker ne znam postati kode, ti bom samo povedal recept in sicer v funkcijah nadomesti argument (pozicija p) s (pozicija *p), potem pa še ustrezno popravi v funkcijah . z ->, pri klicih funkcij pa uporabi operator &, in bo stvar delovala. (stestirano)

ps. problem zakaj ni delalo, je ker ni bilo inicializirano

Keki ::

Če si mislo tak, naredi isto:
struct pozicija {
       char sahovnica[8][8];
       enum na_potezi { beli, crni };
       bool rokada;
       bool passant;
       short st_polpotez;
       short st_poteze;
       };
       
void reset(pozicija* p)
{
     for(int i=0;i<8;i++)
     {
             for(int j=0;j<8;j++)
             {
                     if((i+j)%2 == 0)
                     p->sahovnica[i][j]=='X';
                     
                     else 
                     p->sahovnica[i][j]=='O';
             }
     }
}
                     


void izrisi(pozicija* p)
{
     for(int i=0;i<8;i++)
     {
             for(int j=0;j<8;j++)
             {
                     cout<<p->sahovnica[i][j];
             }
             cout<<endl;
     }
}



int main()
{

    pozicija g;
    
    reset(&g);
    izrisi(&g);

cin.ignore();
cin.get();
return 0;
}


Sem malo poštudiral pa bom pomoje malo drugače to rešo...bom vido
http://www.alfakan.si/
http://mihajerot.si/

Zgodovina sprememb…

  • spremenilo: Keki ()

moowy123 ::

Če mi poveš kako postat kodo, al pa če mi daš mail, ti pošljem to isto kodo z mojimi popravki (katere sem opisal) in stvar deluje.

Backup22 ::

//

Keki ::

v oglatih oklepajih st.koda C++ zakljucis pa z /st.koda C++ isto v oglatih oklepajih
http://www.alfakan.si/
http://mihajerot.si/

CCfly ::

Druga možnost, funkciji deklariraj v strukturi.
"My goodness, we forgot generics!" -- Danny Kalev

moowy123 ::

Evo, niti nisem mel časa pregledati tvoje popravljene kode, tko da ti kar mojo prilagam (upam da ne boste isti :D ). Uporabljal sem compiler od visual studio 2008. Je pa sigurno več načinov za implementacijo tvojega problema:

#include <iostream>
using namespace std;

struct pozicija {
   char sahovnica[8][8];
   enum na_potezi { beli, crni };
   bool rokada;
   bool passant;
   short st_polpotez;
   short st_poteze;
};
       
void reset(pozicija *p)
{
     for(int i=0;i<8;i++)
     {
         for(int j=0;j<8;j++)
         {
             if((i+j)%2 == 0)
				p->sahovnica[i][j]='X';
             
             else 
				p->sahovnica[i][j]='O';
         }
     }
}

void izrisi(pozicija *p)
{
     for(int i=0;i<8;i++)
     {
         for(int j=0;j<8;j++)
         {
			cout<<p->sahovnica[i][j];
         }
         cout<<endl;
     }
}

Če hočeš ti lahko še priložim screenshot, tako da boš videl da res deluje [:)] 

int main()
{
    pozicija g;
    
    reset(&g);
    izrisi(&g);

	cin.ignore();
	cin.get();
	return 0;
}

moowy123 ::

No, sem si vzel čas in še tvojo kodo pregledal in ugotovil kaj si pocel narobe pri tvoji popravljeni kodi:

if((i+j)%2 == 0)
        p->sahovnica[i][j]=='X'; -> TO NI QL: tukaj delas primerjavo !!             
else 
        p->sahovnica[i][j]=='O'; -> TO NI QL : tukaj delas primerjavo !!

Keki ::

hehe ja, sem tut sam opazo...nimam pojma zakaj sem dal == o_O

tnx dela zdaj
http://www.alfakan.si/
http://mihajerot.si/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Šahovski problem - mat v dveh potezah (strani: 1 2 3 4 )

Oddelek: Znanost in tehnologija
19120248 (8691) msjr
»

Igra šah

Oddelek: Programiranje
283765 (2936) mallard
»

C++ šahovske pozicije

Oddelek: Programiranje
71930 (1930) Thomas
»

Programiranje "Šah-a" v Javi

Oddelek: Programiranje
264235 (3751) OwcA
»

Kasparov vs Junior (strani: 1 2 3 4 )

Oddelek: Znanost in tehnologija
18315047 (11908) Thomas

Več podobnih tem