problem so subormi v C

Programovacie jazyky, rady, poradňa...
vvTF
Expert
Expert
Používateľov profilový obrázok
Príspevky: 151
Registrovaný: 27 apr 2006, 21:39

problem so subormi v C

Príspevok od používateľa vvTF »

mam subor a v nom text -> "nieco 12345";
potrebujem zneho vybrat to nieco a 12345 tak aby nieco bol text a 12345 bolo cislo, viem si to pekne zotriedit do 2 premennych ale nejde mi to cislo previest na ciselny typ aby sa snim dali robit ciselne operacie .. :)

Potrebujem teda vlastne tieto veci zistit:
- ako napriklad int a=5,b=5; zlucit tak aby z toho bolo napriklad int a=55;
- nejaku fnkciu ktora by dokopy zlucila do jednej premennej znaky ktore s pomocou fgetc() vyberam zo subora
- ako previes napriklad char[5] = 12345; na int 12345; (toto som si spravil pomocou ascII ze vybera kazdy znak a podla asci urcujem o ake cislo ide, ale stale mi chyba funckia ktora by mi spravila z 5 cislic 5 ciferne cislo)

(Hore som popisal problem ak niekto poznate lepsie riesenia tak prosim napiste) Za odpovede, ak niekto viete riesit tuto problematiku dekujem.
konyk87
King
King
Používateľov profilový obrázok
Príspevky: 1709
Registrovaný: 24 okt 2007, 15:56

Príspevok od používateľa konyk87 »

no ak vies, ze to cislo bude 5-ciferne tak je to jednoduche...
prevedies si kazdy char na prislusne cislo a ides:

Kód: Vybrať všetko

sum = (1*10000) + (2*1000) + (3*100) + (4*10) + 5;
a mozes veselo robit operacie ake len chces...

horsie by to bolo ak by bol pocet cifier premenlivy...
ak si nahodim Visual Studio tak to vyskusam, ale neslubujem...
vvTF
Expert
Expert
Používateľov profilový obrázok
Príspevky: 151
Registrovaný: 27 apr 2006, 21:39

Príspevok od používateľa vvTF »

Cifry su premenlive , ale potom by sa dalo pouzit strlen/len (neivem ktora je pre C++) a dat len ify na N ciferne cisla

taka otazocka ako sa v C++ zlucuju dve string premenne ?
konyk87
King
King
Používateľov profilový obrázok
Príspevky: 1709
Registrovaný: 24 okt 2007, 15:56

Príspevok od používateľa konyk87 »

no neviem ci by bolo rozumne robit tolko if-ov :) skor by som to riesil cez nejake pole, kde by kazdy dalsi index znamenal nasobenie 10, ak by sa rovnal prvok pol 0 jednoducho by sa nic nepripocitalo..neviem ci chapes ako to myslim..

strlen je v C => len je v C++ (v tom som v zivote nerobil, skor Java)

v C sa funkcia na spajanie vola strcat (ak sa nemylim) a podla logiky z predchadzajuceho prikladu by to v C++ mohlo byt cat :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

To nieco môže obsahovať medzeru? Ak nie, tak môžeš použiť funkciu fscanf.
vvTF
Expert
Expert
Používateľov profilový obrázok
Príspevky: 151
Registrovaný: 27 apr 2006, 21:39

Príspevok od používateľa vvTF »

konyk87 napísal:no neviem ci by bolo rozumne robit tolko if-ov :) skor by som to riesil cez nejake pole, kde by kazdy dalsi index znamenal nasobenie 10, ak by sa rovnal prvok pol 0 jednoducho by sa nic nepripocitalo..neviem ci chapes ako to myslim..
napis to prosim ta radsej v skratke normal v kode ... tym sa pochopime lepsie :) .. pokial som to dobre pochopil tak tym nasobenim 10kou by to ale muselo byt opacne 12345 ale 54321 nie ?
vvTF
Expert
Expert
Používateľov profilový obrázok
Príspevky: 151
Registrovaný: 27 apr 2006, 21:39

Príspevok od používateľa vvTF »

chrono napísal:To nieco môže obsahovať medzeru? Ak nie, tak môžeš použiť funkciu fscanf.
Nejak mi tento prispevok nezapada do kontextu :) neviem uz je pozde vecer , tak sorry ked tak :)
ttt4
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 01 dec 2005, 23:43

Príspevok od používateľa ttt4 »

atoi() prevod string do int
pr.
#include <stdio.h>
#include <stdlib.h>

int main ()
{
int i;
char szInput [256];
printf ("Enter a number: ");
fgets ( szInput, 256, stdin );
i = atoi (szInput);
printf ("The value entered is %d. The double is %d.\n",i,i*2);
return 0;
}
itoa() prevod z int do string
pr.
#include <stdio.h>
#include <stdlib.h>

int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}
je to zo stranky http://www.cplusplus.com/ sam som to kedysi davno potreboval tak som si to zapamatal. :) Na tej stranke najdes aj funkcie potrebne k praci zo stringami.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

vvTF napísal:Nejak mi tento prispevok nezapada do kontextu :) neviem uz je pozde vecer , tak sorry ked tak :)
Načo budem načítavať číslo ako reťazec (a potom z toho počítať číslo), keď to môžem načítať hneď ako číslo pomocou tej funkcie fscanf? Ale predpokladám, že si sa ani nepozrel, čo tá funkcia vlastne robí.
q-parser
Professional
Professional
Používateľov profilový obrázok
Príspevky: 1410
Registrovaný: 04 dec 2004, 16:48
Bydlisko: /dev/null
Kontaktovať používateľa:

Príspevok od používateľa q-parser »

Priklanam sa k rieseniu pomocou fscanf. Zda sa mi mierne od veci nacitavat data po znakoch, zlucit ich dokopy do retazca a prevadzat na cislo. Vytvoril by som 2 polia, jedno na na lavu stranu (znak, retazec) a druhe na ciselne hodnoty. Pripadne by sa mohli zdruzit do jednej struktury pre poriadok.
Napísať odpoveď