[ 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 | 105
Bydlisko: Košice/Rožň...
NapísalOffline : 01.04.2011 19:34 | C - konverzia char na int

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 | 16
Bydlisko: Levice
NapísalOffline : 01.04.2011 22:46 | C - konverzia char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.04.2011 11:51 | C - konverzia char na int

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 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 02.04.2011 14:18 | C - konverzia char na int

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 | 16
Bydlisko: Levice
NapísalOffline : 02.04.2011 14:32 | C - konverzia char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.04.2011 14:46 | C - konverzia char na int

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 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 02.04.2011 15:59 | C - konverzia char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.04.2011 16:18 | C - konverzia char na int

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 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 02.04.2011 16:28 | C - konverzia char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.04.2011 16:37 | C - konverzia char na int

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 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 02.04.2011 17:00 | C - konverzia char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.04.2011 17:11 | C - konverzia char na int

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 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 02.04.2011 17:16 | C - konverzia char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.04.2011 17:21 | C - konverzia char na int

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 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 02.04.2011 18:16 | C - konverzia char na int

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


 [ Príspevkov: 15 ] 


C - konverzia char na int



Podobné témy

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

char pole do int

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

0

379

19.01.2011 22:38

1daemon1

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

Zmena char na int

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

6

542

02.02.2012 23:18

street_punk

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

C Int to Char

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

2

353

20.10.2012 15:13

faraon

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

delete char*

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

4

444

17.11.2012 20:04

m4r14n

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

odelenie num a char

v PHP, ASP

2

374

10.11.2009 20:22

pilná lama glama

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

mer. char.zenerovej diody

v Elektronika

0

516

10.01.2012 20:34

p4tooo

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

Banalny priklad-char. tranzistora

v Elektronika

10

1161

07.03.2007 12:43

Taomas

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

C++ problem s char

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

4

457

07.10.2012 18:52

Fico

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

testovanie prvku pola char [C++]

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

6

512

06.07.2010 8:09

koso

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

402

30.04.2012 14:10

elementstyle

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

699

29.10.2011 16:40

camo

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

1026

08.10.2010 11:54

Blackshadow

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

454

18.08.2015 22:32

bebebrumik

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

547

05.12.2011 14:07

t-pack25

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

int

v Databázy

6

1367

04.09.2006 11:47

ronny

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

int.graficka

v ATI/AMD grafické karty

3

444

04.01.2010 22:29

OmeGa



© 2005 - 2024 PCforum, edited by JanoF