Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
Mam v jednom poli napr:
char* map = "6#|5-";
a potreboval by som aby mi to vypisalo 6 krat mriezku za sebou a potom 5-krat pomlcu .. cize ###### -----
Napadlo ma, ze asi by trebalo nejak previest tie cisla z charu na int aby som potom mohol dat vypisat 6-krat mriezku
Neviete s tym niekto helpnut ?
Diky
|
|
Registrovaný: 16.08.09 Prihlásený: 07.03.14 Príspevky: 186 Témy: 16 | 16 Bydlisko: Levice |
M4rek píše: Mam v jednom poli napr: Napadlo ma, ze asi by trebalo nejak previest tie cisla z charu na int aby som potom mohol dat vypisat 6-krat mriezku
Neviete s tym niekto helpnut ?
http://www.asciitable.com/
_________________ "Najlepším spôsobom, ako sa na budúcnosť pripraviť, je vymyslieť si ju." - John Sculley |
|
Registrovaný: 11.01.09 Prihlásený: 17.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Ak som to pochopil spravne, tak sa ma vypisat iba znak, ktory je za cislom a vypise sa prave tolko krat, ake velke je cislo. V tom pripade takto moze vyzerat riesenie:
Kód: #include <stdio.h> #include <stdlib.h> #include <string.h>
int main() {
char count[10]; char* map = "63#|11-abc32+"; unsigned int i, j, k, count_int;
/* vyprazdni pole count */ memset( (void*) count, 0, 10 );
count_int = 0;
/* * cyklus for opakuj, pokial nedojdeme na koniec retazca map, * alebo pokial nebude retazec count plne naplneny cislami */ for( i = 0, j = 0; i < strlen(map); i++ ) {
/* ak je i-ty znak v poli map cislo, uloz ho do pola count */ if ( ( map[i] >= '0' ) && ( map[i] <= '9' ) ) count[j++] = map[i]; else { /* * ak sa narazi na znak, pred ktorym nie je cislo * tak ho nevypis. Inak ho vypis count_int - krat */ if ( strlen( count ) != 0 ) {
count_int = atoi( count ); for ( k = 0; k < count_int; k++ ) printf( "%c", map[i] );
/* vyprazdnenie pola count a vynulovanie count_int */ memset( (void*) count, 0, 10 ); count_int = 0; j = 0;
} }
}
putchar( '\n' ); return 0;
}
|
|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
nejak mi to neberie tuto podmienku if:
Kód: int a=strlen(map);
for(i=0; i<=a; i++) { if ( ( map[i] >= '0' ) && ( map[i] <= '9' ) ) . . .
mam char* map = "7#";
ked k tomu if dam vetvu else tak sa vykona ta vetva else, cize podmienka sa nevyhodnoti kladne, aj ked tam je na pozicii map[0] sedmicka - cize cislo
|
|
Registrovaný: 16.08.09 Prihlásený: 07.03.14 Príspevky: 186 Témy: 16 | 16 Bydlisko: Levice |
Fico píše: Ak som to pochopil spravne, tak sa ma vypisat iba znak, ktory je za cislom a vypise sa prave tolko krat, ake velke je cislo. V tom pripade takto moze vyzerat riesenie:
Nechápem prečo musíš hneď písať celý program. Človek si potom môže pomyslieť, že skúsený užívateľ sa tu potrebuje ukazovať s takýmito triviálnosťami.
_________________ "Najlepším spôsobom, ako sa na budúcnosť pripraviť, je vymyslieť si ju." - John Sculley |
|
Registrovaný: 11.01.09 Prihlásený: 17.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
pizet píše: Nechápem prečo musíš hneď písať celý program. Človek si potom môže pomyslieť, že skúsený užívateľ sa tu potrebuje ukazovať s takýmito triviálnosťami.
Co ti vadi? Spytaj sa ho, ci ti pomohol tvoj prispevok. Myslim, ze ASCII tabulka tu ani nebola nutna a okrem toho, nieco take najde na googli okamzite ( + je to hned v prvom vlakne tejto sekcie ). Je lepsie, ak si clovek pozrie cele riesenie a podla toho si to moze lubovolne upravit podla seba. Ked mu dam len nejaky popis, tak sa to tu bude tahat este 10 prispevkov, ako dalej. O rank som neziadal, ale pravdepodobne som ho nedostal koli linku, ktory absolutne nepomoze ...
@M4rek: ak ti vadi, ze som ti tu dal cele riesenie, prosim, vyjadri sa.
K problemu: pridaj za riadok int a = strlen( map ); toto:
Kód: printf( "%d\n", a );
a napis sem cislo, co ti to vypisalo. Pripadne, ak si menil viacero casti, posli sem cely zdrojak - to bude asi lepsie, lebo z tohto kusku kodu nevidim problem.
|
|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
vobec mi nevadi, ze si tu dal cely kod, praveze aspon si viem pozriet ako sa to robi a podla toho si urobit nejak svoje
Uz mi to berie tu podmienku, bralo aj predtym, len som tam mal jednu chybu preto sa mi to zdalo, ze to ide zle.
No mam tuto funkciu:
Kód: void turnOn() { int i,k,cislo, x=0, y=0; int a=strlen(map);
for(i=0; i<=a; i++) {
if ( ( map[i] >= '0' ) && ( map[i] <= '9' ) && (map[i+1]=='#') ) { cislo = (int)(map[i]-48); for(k=0; k<cislo; k++) {world[x][y]=WALL; y++;} } else break; } } s tym, ze mam #define WALL -1 Takze potrebujem aby ked natrafi na cislo, za ktorym je mriezka tak aby povkladalo do pola world[x][y] hodnotu WALL s tym, ze vlozi jedno WALL, inkrementuje y a vlozi dalsie WALL atd. 7-krat, kedze v map bola sedmicka ... no nejak mi to nefunguje. Mam potom dalsiu funkciu na vykreslenie, no nevykresli vobec nic. A ta funkcia na vykreslenie je na 100% dobra, lebo funguje to s inym turnOn, kde sa pocita so zapisom ####### a nie 7# .. len teraz sa to pokusam pretransformovat na take turnOn aby to pocitalo so zapisom 7# predtym (pre zapis v map #######) som to robil tak, ze Kód: for(i=0; i<a; i++) { switch(map[i]) { case '#': world[x][y]=WALL; y++; break; . . .
a teraz potrebujem tiez do world dat WALL ... lebo funkcia na vykreslenie je robena tak, ze tam kde je WALL vypise mriezku
|
|
Registrovaný: 11.01.09 Prihlásený: 17.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Karel?
Dopln si do tejto funkcie nieco taketo:
Kód: for ( i = 0; i < sirka_pola_world; i++ ) { for ( j = 0; j < vyska_pola_world; j++ ) printf( "%d ", world[i][j] ); putchar( '\n' ); }
A ak tam budes mat -1 niekde, tak zapisane je to spravne a nejako chybne to potom nacitavas. Z toho kusku kodu nevidim ziaden problem, vyzera to spravne, funkcne.
|
|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
hej Karel
teraz to mam takto cele spolu a nevypise to vobec nic:
Kód: void turnOn() { int i, j, k, cislo, x=0, y=0; int a=strlen(map);
for(i=0; i<=a; i++) {
if ( ( map[i] >= '0' ) && ( map[i] <= '9' ) && ( map[i+1] == '#' )) { cislo = (int)(map[i]-48); for(k=0; k<cislo; k++) {world[x][y]=WALL; y++;} } else break; }
for ( i = 0; i < world_width; i++ ) { for ( j = 0; j < world_height; j++ ) printf( "%d ", world[i][j] ); putchar( '\n' ); }
}
no zaujimave, ze ked v tomto riadku: for(k=0; k<cislo; k++) {world[x][y]=WALL; y++;}
zmenim to plnenie pola a dam tak len tak napr.: for(k=0; k<cislo; k++) {printf("#");} tak to vypise 7 mriezok ... tak nechapem preco to potom nepriraduje do toho pola hodnoty WALL
|
|
Registrovaný: 11.01.09 Prihlásený: 17.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Chybu mas niekde inde. Ked vravis, ze ti to nevypise nic, tak tuna chyba nie je. Vies pouzivat debugger? Ak ano, ked si na riadku cislo = (int)(map[i]-48); pozri sa, aky udaj obsahuje premenna cislo a map. Potom pri vypisovani sa pozri na samotne pole world, ake ma hodnoty. Ak nevies, tak sem postni cely zdrojak, pripadne mi ho posli cez SS.
|
|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
v map je: 0x4030a0 "7#" a v cislo je 7 .. ale vo world su same nuly
|
|
Registrovaný: 11.01.09 Prihlásený: 17.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
V tom pripade ti je jasne, ze zapis do pola prebehne spravne? Jedine, zeby WALL nebolo -1 pripadne pole world je typu unsigned int. Akeho je typu? Skus este toto:
Kód: for(k=0; k<cislo; k++) {world[x][y]=WALL; printf( "--- world[%d][%d] = %d\n", x, y, world[x][y] ); y++;}
Hned po pridani ti aj vypse, aky udaj je v danom prvku pola world.
|
|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
hm, ked som tam dal ten riadok co si mi napisal, tak vypise, ze od world[0][0] po world[0][6] su mínus jednotky
|
|
Registrovaný: 11.01.09 Prihlásený: 17.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Problem vyrieseny, zapisujes inak, ako citas. Je mozne ze si zamienas vysku so sirkou. Ale tu ti uz nepomozem, nakolko z tychto doterajsich kodov to zistit nepojde.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 03.02.07 Prihlásený: 25.04.18 Príspevky: 478 Témy: 105 | 105 Bydlisko: Košice/Rožň... |
nn, uz viem kde bol problem ... zabudol som priradit do world_height a world_width x a y takze preto to nevypisovalo, lebo height a width boli nula, takze cyklus for neprebehol ani raz
ale diky, pomohol si mi
|
|
Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 2 | 358 | 20.10.2012 15:13 faraon | | v Assembler, C, C++, Pascal, Java | 0 | 382 | 19.01.2011 22:38 1daemon1 | | v Assembler, C, C++, Pascal, Java | 6 | 545 | 02.02.2012 23:18 street_punk | | v Assembler, C, C++, Pascal, Java | 4 | 450 | 17.11.2012 20:04 m4r14n | | v PHP, ASP | 2 | 377 | 10.11.2009 20:22 pilná lama glama | | v Elektronika | 0 | 524 | 10.01.2012 20:34 p4tooo | | v Elektronika | 10 | 1167 | 07.03.2007 12:43 Taomas | | v Assembler, C, C++, Pascal, Java | 4 | 461 | 07.10.2012 18:52 Fico | | v Assembler, C, C++, Pascal, Java | 6 | 517 | 06.07.2010 8:09 koso | | v Databázy | 2 | 706 | 29.10.2011 16:40 camo | | v Assembler, C, C++, Pascal, Java | 9 | 1028 | 08.10.2010 11:54 Blackshadow | | v Assembler, C, C++, Pascal, Java | 2 | 405 | 30.04.2012 14:10 elementstyle | | v Assembler, C, C++, Pascal, Java | 5 | 551 | 05.12.2011 14:07 t-pack25 | | v Assembler, C, C++, Pascal, Java | 5 | 463 | 18.08.2015 22:32 bebebrumik | | v Databázy | 6 | 1373 | 04.09.2006 11:47 ronny | | v ATI/AMD grafické karty | 3 | 451 | 04.01.2010 22:29 OmeGa |
|