Postfixový kalkulátor – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Postfixový kalkulátor – C / C++ – Fórum – Programujte.comPostfixový kalkulátor – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
15. 12. 2009   #1
-
0
-

Zdravím, mám úkol do školy. Napsat kalkulačku, do které se bude zadávat výraz postfixově. Měl jsem to již vyřešeno, tak že se zadalo číslo odentrovalo, zadalo druhé, enter, a operátor, enter......
Pak nám profesor aktualizoval zadání a chce aby se zadal výraz na jeden řádek. Máme využít funkci strtok. Ale mám problém: viz následující kód



string input;
cin >> input;

int velikost=input.size();
char str[500];
for (int a=0;a<=velikost;a++)
{
str[a]=input[a];

}

char delims[] = " ";
char *result2 = NULL;
result2 = strtok( str, delims );
while( result2 != NULL ) {
printf( "result is \"%s\"\n", result2 );
result2 = strtok( NULL, delims );
}


Když zadám string přímo do kódu
char input[]="ahoj jak se mas ?"

tak to chodí, ale když chci nabrat z konzole string a převést na pole charů, tak mi to vezme velikost jen po první mezeru.
Neví někdo jak to vyřešit prosím?

Nahlásit jako SPAM
IP: 93.99.61.–
Reklama
Reklama
LJ10240
Stálý člen
15. 12. 2009   #2
-
0
-

Zkus použít:
fgets(str , 500 , stdin);//načtení max 500 znaků do pole znaků str ze vstupu konzole
(velikost je pak strlen(str); tu ale už nejspíš nebudeš potřebovat, když nemusíš převádět string > char...)
nebo můžeš zkusit:
strcpy(str, input.c_str());//naplnění pole znaku str retezcem input (ktery je preveden na pole znaku pomoci .c_str())
Doufám, že to je to, cos potřeboval...

Nahlásit jako SPAM
IP: 217.30.64.–
KIIV+42
God of flame
15. 12. 2009   #3
-
0
-

To LJ1024 : proc vlastne pouziva strtok, kdyz cin> input; nacita po jednom "slove" ?

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
LJ10240
Stálý člen
15. 12. 2009   #4
-
0
-

To KIIV : Aha... Tohle jsem vedel jen o scanf().... V tom pripade je "spravna" pouze moznost
fgets(str , 500 , stdin);

Nahlásit jako SPAM
IP: 217.30.64.–
KIIV+42
God of flame
15. 12. 2009   #5
-
0
-
Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
16. 12. 2009   #6
-
0
-

Díky, nevěděl jsem, že cin> input; nacita po jednom "slove".
Teď mám další problém:
do konzole napíšu

5 5 -

a v str mám
5, ,5, ,-,[znak čtverce, ascii kod 10],0

pokud sem to dobře pochopil, tak ta nula ukončuje řetězec.
Spíš by mě ale zajímalo jak se zbavit toho čtverečku, dělá mi v tom programu celkem paseku.
char str[500];

fgets(str , 500 , stdin);
int delka;
delka=strlen(str);
string input;
int cislo = (int)str[delka-1];
str[500]-=str[delka];


char delims[] = " ";
char *str2 = NULL;
str2 = strtok( str, delims );
while( str2 != NULL ) {
input=&*str2;

Zkoušel sem to nějak odečíst ale nejde to, nevím si s tím rady :-(

Nahlásit jako SPAM
IP: 93.99.61.–
KIIV+42
God of flame
16. 12. 2009   #7
-
0
-

to je vesmes jeden ze znaku co se pouzivaj jako enter 10 a 13 ..

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
17. 12. 2009   #8
-
0
-



...

Nahlásit jako SPAM
IP: 93.99.61.–
KIIV+42
God of flame
17. 12. 2009   #9
-
0
-

muheheheheh: input =="0"||"1"||"2"||"3"||"4"||"5"||"6"||"7"||"8"||"9"
:DDD

hned nekolik chyb...
znak je pomoci jednoducheho apostrofu tj input=='0'
pak sou to formalne cisla takze jde udelat i input>='0' && input<='9'

a posledni chyba:
input =='0'||'1'||.... nemuze fungovat... vznikne ti tam true (log 1) tj. cislice 1
a ta se ma rovnat inputu...
musis pekne vypsat kazdou podminku pekne zvlast.. input =='0' || input =='1' || ....

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
18. 12. 2009   #10
-
0
-

kdo mi smazal ten můj super kód? :smile5:
Ty z toho máš hlínu, ale já v tom docele lítám
Každopádně díky za ochotu, radu a opravení. Projekt sem odeslal cvičícímu, uvidím co z toho bude.
Ještě jednou díky

Nahlásit jako SPAM
IP: 93.99.61.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 112 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý