Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 15 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok NapísalOffline : 01.04.2011 19:34

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


Offline

Užívateľ
Užívateľ
C - konverzia char na int

Registrovaný: 16.08.09
Prihlásený: 07.03.14
Príspevky: 186
Témy: 16
Bydlisko: Levice
Príspevok NapísalOffline : 01.04.2011 22:46

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
Offline

Skúsený užívateľ
Skúsený užívateľ
C - konverzia char na int

Registrovaný: 11.01.09
Prihlásený: 18.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.04.2011 11:51

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;

}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok Napísal autor témyOffline : 02.04.2011 14:18

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


Offline

Užívateľ
Užívateľ
C - konverzia char na int

Registrovaný: 16.08.09
Prihlásený: 07.03.14
Príspevky: 186
Témy: 16
Bydlisko: Levice
Príspevok NapísalOffline : 02.04.2011 14:32

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
Offline

Skúsený užívateľ
Skúsený užívateľ
C - konverzia char na int

Registrovaný: 11.01.09
Prihlásený: 18.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.04.2011 14:46

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok Napísal autor témyOffline : 02.04.2011 15:59

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


Offline

Skúsený užívateľ
Skúsený užívateľ
C - konverzia char na int

Registrovaný: 11.01.09
Prihlásený: 18.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.04.2011 16:18

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok Napísal autor témyOffline : 02.04.2011 16:28

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


Offline

Skúsený užívateľ
Skúsený užívateľ
C - konverzia char na int

Registrovaný: 11.01.09
Prihlásený: 18.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.04.2011 16:37

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok Napísal autor témyOffline : 02.04.2011 17:00

v map je: 0x4030a0 "7#" a v cislo je 7 .. ale vo world su same nuly


Offline

Skúsený užívateľ
Skúsený užívateľ
C - konverzia char na int

Registrovaný: 11.01.09
Prihlásený: 18.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.04.2011 17:11

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok Napísal autor témyOffline : 02.04.2011 17:16

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


Offline

Skúsený užívateľ
Skúsený užívateľ
C - konverzia char na int

Registrovaný: 11.01.09
Prihlásený: 18.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.04.2011 17:21

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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105
Bydlisko: Košice/Rožň...
Príspevok Napísal autor témyOffline : 02.04.2011 18:16

nn, uz viem kde bol problem ... zabudol som priradit do world_height a world_width x a y :lol: takze preto to nevypisovalo, lebo height a width boli nula, takze cyklus for neprebehol ani raz :D

ale diky, pomohol si mi


Odpovedať na tému [ Príspevkov: 15 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. C Int to Char

v Assembler, C, C++, Pascal, Java

2

322

20.10.2012 15:13

faraon Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. char pole do int

v Assembler, C, C++, Pascal, Java

0

350

19.01.2011 22:38

1daemon1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zmena char na int

v Assembler, C, C++, Pascal, Java

6

507

02.02.2012 23:18

street_punk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. delete char*

v Assembler, C, C++, Pascal, Java

4

408

17.11.2012 20:04

m4r14n Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ problem s char

v Assembler, C, C++, Pascal, Java

4

421

07.10.2012 18:52

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. odelenie num a char

v PHP, ASP

2

341

10.11.2009 20:22

pilná lama glama Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. mer. char.zenerovej diody

v Elektronika

0

485

10.01.2012 20:34

p4tooo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Banalny priklad-char. tranzistora

v Elektronika

10

1117

07.03.2007 12:43

Taomas Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. testovanie prvku pola char [C++]

v Assembler, C, C++, Pascal, Java

6

474

06.07.2010 8:09

koso Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Práca s dynamickou pamäťou v char

v Assembler, C, C++, Pascal, Java

2

365

30.04.2012 14:10

elementstyle Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Update stĺpca char cez regulárny výraz

v Databázy

2

660

29.10.2011 16:40

camo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C: z getchar() do char *retazec

v Assembler, C, C++, Pascal, Java

9

989

08.10.2010 11:54

Blackshadow Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - vypísanie súčtu znakov (char) - vobec nechápem výsledok

v Assembler, C, C++, Pascal, Java

5

408

18.08.2015 22:32

bebebrumik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C, problem s osetrenim vstupu z klavesnice - char

v Assembler, C, C++, Pascal, Java

5

519

05.12.2011 14:07

t-pack25 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. int

v Databázy

6

1314

04.09.2006 11:47

ronny Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. int.graficka

v ATI/AMD grafické karty

3

418

04.01.2010 22:29

OmeGa Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra