Obsah fóra
PravidláRegistrovaťPrihlásenie




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

Užívateľ
Užívateľ
Zmena char na int

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok NapísalOffline : 02.02.2012 18:58

Mám za úlohu: Vstupom je reťazec a pole celých čísel. Funkcia vypisuje reťazec znak po znaku, pričom ak natrafí na znak '*', vypíše nasledujúci znak (môže byť aj '*') toľkokrát, aké číslo nasleduje v poli.

Mám ten problém, že keď chcem hodnotu z poľa priradiť do premennej pom, tak mi nepriradí jej číselnú hodnotu, ale jej ASCII hodnotu. Nechápem prečo, keďže tam mám int

Kód:
void vypis_retazca_nasobkom_pola(char retazec[], int pole[], int dlzka_retazca, int dlzka_pola)
{
   int i, j = 0, k;
   int pom;

   for(i = 0; i < dlzka_retazca; i++)
   {
      if(retazec[i] == '*')
      {
         if(pole[j] <= dlzka_pola) //zacne sa pole odznova
            j = 0;

         pom = pole[j];
         for(k = 0; k < pom; k++)
            putchar(retazec[i + 1]);
         i++;
         j++;
      }
      putchar(retazec[i]);
   }
}







_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Skúsený užívateľ
Skúsený užívateľ
Zmena char na int

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.02.2012 19:22

Tuto cast:
Kód:
if(pole[j] <= dlzka_pola) //zacne sa pole odznova
     j = 0;

si nemyslel nahodou takto:
Kód:
if( j >= dlzka_pola) //zacne sa pole odznova
     j = 0;

???

Po dalsie, neviem isto, ale ja chapem zadanie tak, ze nasledujuci znak sa ma vypisat x-krat, nie x-krat + 1, ako to mas ty. Cize si este mozes upravit cyklus:
Kód:
for(k = 0; k < pom; k++)

napriklad takto:
Kód:
for(k = 1; k < pom; k++)


Offline

Užívateľ
Užívateľ
Zmena char na int

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok Napísal autor témyOffline : 02.02.2012 21:11

To su zatial len malickosti, s ktorými som sa ešte nezaoberal. Každý program si krokujem, tak by som nato došiel. To if som tam doplnil len teraz a hej, máš pravdu, takto by to robilo vkuse zacinalo na prvom prvku v poli. A aj to k má byť od 0. Ale ako vravím, stýmto som sa netrápil zatial, bolo to písané v rýchlosti. Problém mi robí to čo som napísal hore. Do premennej pom sa mi neuloži hodnota prvku ale ascii hodnota. To si mi zabudol poradiť :)







_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Skúsený užívateľ
Skúsený užívateľ
Zmena char na int

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.02.2012 21:19

Tak ja som si to skusil a ak to mas tak, ako som to upravil, funguje to spravne. Zalezi teda, ake pole predavas funkcii. Pre ilustraciu, moj priklad vyzeral takto:
Kód:
#include <stdio.h>
#include <string.h>


void vypis_retazca_nasobkom_pola(char retazec[], int pole[], int dlzka_retazca, int dlzka_pola)
{
   int i, j = 0, k;
   int pom;

   for(i = 0; i < dlzka_retazca; i++)
   {
      if(retazec[i] == '*')
      {
         if( j >= dlzka_pola) //zacne sa pole odznova
            j = 0;

         pom = pole[j];
         for(k = 1; k < pom; k++)
            putchar(retazec[i + 1]);
         i++;
         j++;
      }
      putchar(retazec[i]);
   }
}




int main()
{

    char s[] = "skus*ka vypisov*ania tex*tu";
    int p[] = { 3, 5, 2 };        /* moje pole, ktore davam funkcii ako argument */
    vypis_retazca_nasobkom_pola( s, p, strlen( s ), 3 );

    putchar( '\n' );
    return 0;

}


Vypis:
Citácia:
skuskkka vypisovaaaaania texttu


Je mozne, ze nejakym sposobom nespravne zadavas pole.


Offline

Užívateľ
Užívateľ
Zmena char na int

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok Napísal autor témyOffline : 02.02.2012 22:39

Program ide, len mi zobere zlú hodnotu. Tu mám funkciu načítavania

Kód:
int nacitanie_cisiel_v_poli(int pole[])
{
   int i;
   int pom;
   int pocet = 0;

   for(i= 0; i < max; i++)
   {
      pom = getchar();
      if(pom == '\n')
         break;
      pole[i] = pom;
      pocet++;
   }
   return pocet;
}







_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Skúsený užívateľ
Skúsený užívateľ
Zmena char na int

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 02.02.2012 22:51

Cize ty touto funkciou nacitavas cisla do premennej pole? Preto tie ASCII hodnoty. Totizto getchar() vracia ASCII hodnoty znaku nacitaneho zo vstupu. Darmo ty napises cislo, stale sa jedna o znak. Mozes ho treda prekonvertovat takto jednoducho, bez pouzitia nejakych externych funkcii:
Kód:
pom = getchar();
pom -= 0x30;
if ( ( pom > 9 ) || ( pom < 0 ) )
    /* osetrit na nespravny vstup */
    break;


0x30 je hexa vyjadrenie znaku '0'. Ak teda zadas povedzme cislo '5', jeho ascii v hexa sustave je 0x35. 0x35 - 0x30 je 0x05. Cize dostal si zo znaku '5' ciselnu hodnotu 5. Teraz by ti to malo fungovat spravne.


Offline

Užívateľ
Užívateľ
Zmena char na int

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok Napísal autor témyOffline : 02.02.2012 23:18

Aha, díky. Tieto súvislosti programovania a sústav budeme preberat až teraz v lete. Takže ten môj if je tam zbitočný, nahradím ho tým tvojím.







_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Odpovedať na tému [ Príspevkov: 7 ] 


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

328

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

356

19.01.2011 22:38

1daemon1 Zobrazenie posledných príspevkov

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

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

14

681

02.04.2011 18:16

M4rek 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

413

17.11.2012 20:04

m4r14n 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

347

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. C++ problem s char

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

4

427

07.10.2012 18:52

Fico Zobrazenie posledných príspevkov

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

v Elektronika

10

1123

07.03.2007 12:43

Taomas Zobrazenie posledných príspevkov

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

v Elektronika

0

490

10.01.2012 20:34

p4tooo 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

482

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

373

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

666

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

996

08.10.2010 11:54

Blackshadow 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

523

05.12.2011 14:07

t-pack25 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

414

18.08.2015 22:32

bebebrumik Zobrazenie posledných príspevkov

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

v Databázy

6

1321

04.09.2006 11:47

ronny Zobrazenie posledných príspevkov

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

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

4

466

30.11.2010 12:54

capricorn7 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