[ 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 | 26
Bydlisko: Kesa
NapísalOffline : 02.02.2012 18:58 | Zmena char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.02.2012 19:22 | Zmena char na int

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 | 26
Bydlisko: Kesa
Napísal autor témyOffline : 02.02.2012 21:11 | Zmena char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.02.2012 21:19 | Zmena char na int

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 | 26
Bydlisko: Kesa
Napísal autor témyOffline : 02.02.2012 22:39 | Zmena char na int

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ý: 16.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 02.02.2012 22:51 | Zmena char na int

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 | 26
Bydlisko: Kesa
Napísal autor témyOffline : 02.02.2012 23:18 | Zmena char na int

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
 [ Príspevkov: 7 ] 


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

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.

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.

C - konverzia char na int

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

14

706

02.04.2011 18:16

M4rek

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.

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.

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.

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.

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.

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.

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.

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.

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