Převod do soustavy – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Převod do soustavy – C / C++ – Fórum – Programujte.comPřevod do soustavy – C / C++ – Fórum – Programujte.com

 

Mautinek
~ Redaktor
0
Grafoman
21. 10. 2008   #1
-
0
-

Zdravím,
potřebuji převést zadané znaky do 36-tkové soustavy. Napsal jsem si následující funkci:

int prevedZnaky(int c)

{
if (c >= 'A' && c <= 'Z')
{ // od zadané hodnoty 'c' odečte 'A' (A = 10) a přičte 10 (pismena začínají v soustavě od 10)
return c - 'A' + 10;
}
else if (c >= '0' && c <= '9')
{ // od zadané hodnoty 'c' odečte '0', číslice začínají v soustavě od 0
return c - '0';
}
else
{ // v ostatních případech vypíše chybu
fprintf(stderr, "Chyba - zadany nepovolene znaky.");
return EXIT_FAILURE;
}

}


Povolené vstupní znaky jsou jen 0-9 a A-Z, pokud se tedy zadá 'a' atd. měl by program skončit s chybou. On skončí ale na konci chybové hlášky mi ještě vypíše číslo '1' nevíte, kde se ta jednička bere? Díky za každou odpověď

Nahlásit jako SPAM
IP: 83.240.87.–
Programujte.com redaktor
Sleduj mě na @MartinSimko
ondra
~ Anonymní uživatel
244 příspěvků
21. 10. 2008   #2
-
0
-

Jestli to není třeba hodnota EXIT_FAILURE.

Nahlásit jako SPAM
IP: 194.138.12.–
Mautinek
~ Redaktor
0
Grafoman
21. 10. 2008   #3
-
0
-

Když odmažu return EXIT_FAILURE; tam mám na konci změť nějakých čísel, takže ta 1 bude asi hodnota EXIT_FAILURE, nedá se to nějak ošetřit, aby to nevracelo nic? Tedy ani 0, 1 apod.? Díky

Nahlásit jako SPAM
IP: 83.240.87.–
Programujte.com redaktor
Sleduj mě na @MartinSimko
ondra
~ Anonymní uživatel
244 příspěvků
21. 10. 2008   #4
-
0
-

V C++ lze vyhodit výjimku.

V C i C++ lze vracet speciální hodnotu, která indikuje chybu a nemůže být jinak vrácena. V tomto případě se nabízí třeba nějaké záporné číslo. Nebo třeba 1234.

Nahlásit jako SPAM
IP: 194.138.12.–
o-lox0
Super člen
21. 10. 2008   #5
-
0
-

Taky se dá použít druhý argument - int *v (pro výsledek) a funkci void(nebo int 0=OK,1=chyba)
knihovny C volí pro sebe tento přístup

Nahlásit jako SPAM
IP: 85.71.152.–
KIIV
~ Moderátor
+43
God of flame
21. 10. 2008   #6
-
0
-

pripadne misto return hodit exit(1)

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mautinek
~ Redaktor
0
Grafoman
21. 10. 2008   #7
-
0
-

Díky to exit(1) funguje, ale přesně nevím co to dělá, není to nějak "prasácké"? V C dělám jen chvíli...

Nahlásit jako SPAM
IP: 83.240.87.–
Programujte.com redaktor
Sleduj mě na @MartinSimko
ondra
~ Anonymní uživatel
244 příspěvků
21. 10. 2008   #8
-
0
-

exit prasácké není. Prostě to ukončí program s exit codem, který se tomu předá v parametru (a je jedno, jestli je program zrovna v nějaké funkci nebo v main()). Záleží samozřejmě na tom, jestli je úmyslem při chybě hned ukončovat celý program nebo dělat nějaké zotavení z té chyby.

Nahlásit jako SPAM
IP: 194.138.12.–
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, 33 hostů

Moderátoři diskuze

 

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