Kezdőoldal » Számítástechnika » Programozás » Előre definiált 2 dimenziós...

Előre definiált 2 dimenziós char tömb kiirása?

Figyelt kérdés

Szerintetek mit rontok el:

char Szavak[3][6]={{'a','l','m','a','k','l'},{'a','l','m','a','k','l'},{'a','l','m','a','k','l'}};



for(k=0; k<3; k++)

{



for(l=0; l<6; l++)

{

printf("%c", Szavak[k][l]);

}

printf("\n");

}


Csak a tömb 2.sor 2. oszlop felétől kezdi kiíratni a betűket :(


2015. okt. 17. 14:13
 1/8 anonim ***** válasza:
Nem tudom mit rontassz el mert nalam jol irja ki.
2015. okt. 17. 14:21
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

#include <stdio.h>

#include <time.h>


int main()

{

srand(time(NULL));



int i, j, k, l;


char Szavak[3][6]={{'a','l','m','a','k','l'},{'a','l','m','a','k'

,'l'},{'a','l','m','a','k','l'}};

char akasztofa[6][8];


for(i=0;i<=6;i++)

{



for(j=0;j<=7;j++)

{


switch(i)

{

case 0:

if(j>=1 && j<=5)

{

akasztofa[i][j]='-';



}

else

{

akasztofa[i][j]=0;


}

break;

case 1:

if(j==0 || j==6)

{

akasztofa[i][j]=179;


}

else

{

akasztofa[i][j]=0;


}

break;

case 2:

if(j==0)

{

akasztofa[i][j]=179;


}

else

if(j==6)

{

akasztofa[i][j]=111;


}

else

{

akasztofa[i][j]=0;


}

break;

case 3:

if(j==0 || j==6)

{

akasztofa[i][j]=179;


}

else

{

if(j==5)

{

akasztofa[i][j]='/';


}

else

{

if(j==7)

{

akasztofa[i][j]=92;


}

else{

akasztofa[i][j]=0;

}

}


}

break;

case 4:

if(j==0)

{

akasztofa[i][j]=179;


}

else

{

if(j==5)

{

akasztofa[i][j]='/';


}

else

{

if(j==7)

{

akasztofa[i][j]=92;


}

else{

akasztofa[i][j]=0;

}

}

}

break;

case 5:

if(j==0)

{

akasztofa[i][j]=179;


}

else

{

akasztofa[i][j]=0;


}


default: akasztofa[i][j]=0;


}


}


}


printf("Udvozlom! Ez az akasztofa jatek! \n");


for(i=0;i<=6;i++)

{



for(j=0;j<=7;j++)


{

printf("%c", akasztofa[i][j]);

}

printf("\n");


}


printf("Gondoltam egy szora \n");


for(i=0;i<=6;i++)

{



for(j=0;j<=7;j++)


{

switch(akasztofa[i][j])

{


case 111: break;

case '/': break;

case 92: break;

default :


if(i!=3)

{

printf("%c", akasztofa[i][j]);

}

else

if(j!=6)

{

printf("%c", akasztofa[i][j]);

}


}

}

printf("\n");


}


printf("\n");

for(k=0; k<3; k++)

{



for(l=0; l<6; l++)

{

printf("%c", Szavak[k][l]);

}

printf("\n");

}

printf("\n");



return 0;

}


ITT VAN A PROGRAMOM. EBBEN VALAMIÉRT NEM JELENÍTI MEG RENDESEN

2015. okt. 17. 14:35
 3/8 anonim ***** válasza:
Mi ez az iszonyú gányolás?
2015. okt. 17. 15:40
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:

Kedves kérdező, legközelebb használj valamilyen kódmegosztó weboldalt (pastie.org, pastabin(pont)com,...), mert így időbe telik míg kibogarássza az ember az unindentált karakterhalmazból a kódot.


Indentáltam, a default ágakat lezártam break-kel és feltöltöttem kettőre is - látszódik a probléma:

[link]

[link]


Viszont gépemen, GCC 4.8.4 használatával szépen kiírja a három "almakl"-t tartalmazó karaktertömböt.

2015. okt. 17. 16:41
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:

Túlindexelsz!


akasztofa[6][8]


for (i = 0; i <= 6; i++) for (j = 0; j <= 7; j++)


helyett


for (i = 0; i < 6; i++) for (j = 0; j < 8; j++)


Amikor beleírsz az akasztofa[6] memóriaterületre egészen pontosan 8-szor a következő sorral:


default:

akasztofa[i][j] = 0;


akkor az akasztofa utáni memóriaterületre kezd 0-kat beleírni ami pont a Szavak tömböd által elfoglalt memória terület, tehát a Szavak tömb első 8 elemét kinullázod.

2015. okt. 17. 16:59
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Utolsó 1000 hála :D sose jöttem volna rá :S
2015. okt. 17. 17:06
 7/8 anonim ***** válasza:

A #5-ös hozzászóló jól látta - a túlindexelés kiiktatásával szépen lefut a kód:

[link]


Bár kérdező ha elfogadsz egy javaslatot - a szavakat tárold így:

[link]


Illetve definiáld előre az akasztófát is - elkerülve ezzel a ronda, hosszú, és felesleges case szerkezetet - mondjuk egy 3 dimenziós char típusú tömbben, ahol az egyik dimenzió az akasztófa állapota, a másik dimenzió a szélesség, a harmadik meg a magasság.

2015. okt. 17. 17:17
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
utolsó! köszi a tippet :D
2015. okt. 18. 12:37

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!