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

C - převod parametru – C / C++ – Fórum – Programujte.comC - převod parametru – C / C++ – Fórum – Programujte.com

 

Koja
~ Anonymní uživatel
37 příspěvků
19. 10. 2008   #1
-
0
-

Zdravím :)
potřeboval bych argv[2] převést na číslo a dál s ním pracovat, jako s číslem .. při nejlepším na double. Vůbec mě ale nenapadá, jak to udělat a nijak mi to nejde .. nevíte někdo, jak na to? :/

Nahlásit jako SPAM
IP: 212.96.172.–
crAzY^
~ Moderátor
+10
Grafoman
19. 10. 2008   #2
-
0
-

To Koja : přetypovat??

double(argv[2])

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
19. 10. 2008   #3
-
0
-

To crAzY^ : eh mam pocit ze to nebude fungovat tak jak myslis :)

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Koja
~ Anonymní uživatel
37 příspěvků
19. 10. 2008   #4
-
0
-

A vážně si to zkoušel? Ono to totiž nefunguje .. přetypovat sem vážně zkoušel.

Nahlásit jako SPAM
IP: 212.96.172.–
KIIV
~ Moderátor
+43
God of flame
19. 10. 2008   #5
-
0
-
Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
crAzY^
~ Moderátor
+10
Grafoman
19. 10. 2008   #6
-
0
-

To KIIV : tak to sorry, myslel sem že by to mělo fungovat

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
19. 10. 2008   #7
-
0
-

To crAzY^ : no ono to funguje jen ne tak jak myslis... ten ukazatel na retezec se veme a pretypuje na double...
s tim co je v retezci by to nemelo nic spolecneho :)

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Koja
~ Anonymní uživatel
37 příspěvků
19. 10. 2008   #8
-
0
-

To KIIV : Super, použil sem atof a funguje to, díky :)

Nahlásit jako SPAM
IP: 212.96.172.–
KIIV
~ Moderátor
+43
God of flame
19. 10. 2008   #9
-
0
-

To Koja : akorat jeste nastuduj jak se zjistuje chyba.. tj pokud ti tam nekdo nezada cislo...

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Koja
~ Anonymní uživatel
37 příspěvků
19. 10. 2008   #10
-
0
-

Když nezadá číslo, tak to vypíšu nulu, takže by to neměl být problém :)

Nahlásit jako SPAM
IP: 212.96.172.–
Koja
~ Anonymní uživatel
37 příspěvků
21. 10. 2008   #11
-
0
-

Tak ještě něco bych potřeboval .. mám

while (scanf("%lf", &cislo) != EOF) {

c = cislo;

pole[x] = cislo;
x++;
if ((isspace(c)) && (c == '\n'))
{
printf("\n");
} else {}
}

Kde načítám hodnoty double, dokud nestistknu CTRL+D .. potřebuju ošetřit zadávání čísel double, takže když někdo zadá něco jinýho než např. 56.4 nebo 5 .. prostě nějakej text .. aby mi to vyhodilo nějakou hlášku třeba.. :/

Nahlásit jako SPAM
IP: 81.27.200.–
Romi
~ Anonymní uživatel
9 příspěvků
21. 10. 2008   #12
-
0
-

To Koja : Najdi si help k funkci scanf, tam se doctes, neco v tom smyslu, ze vraci pocet spravne nactenych prvku specifikovanych formatovacim retezcem (%d %i atd...). Takze, kdyz chces nacist long double a na vstupu je retezec, tak scanf nic nenacte (POZOR, ale sebere ti to z vyrovnavaci pameti pro vstup-vystupni operace nebo jak se to jmenuje, ted nevim ja ted volam pres skype a to uz je na me moc veci najednou :-D)

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

Zkus nedávat scanf přímo do podmínky while
a ukládej jeho výsledek do pomocný proměnný.
Tu pak otestuješ na EOF a 0. Nula vyjde při zadání nesmyslného textu..

Nahlásit jako SPAM
IP: 85.71.152.–
Koja
~ Anonymní uživatel
37 příspěvků
21. 10. 2008   #14
-
0
-

A co mám teda dát do while, když to chci načítat tak dlouho, dokud se nestiskne CTRL+D? Resp. do vstupu napíšu např.
45.6 34.6 3 53.6
6.04 45.6

Potom stisknu CTRL+D a provedou se další funkce .. zatím mi to takhle valí, akorát se nekontroluje, že je to double :/ Když se tam zadá nějakej text bo blbost, tak to hodí Segmentation fault a program se ukončí .. a místo toho bych chtěl, aby hodil hlášku, co chci já a ukončil se.

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

Tohle mi funguje
i=scanf(..)
while (i!=EOF) {
i=scanf(..)
if (i==0) hlaska else {}
}
nebo protoc do - while , pohraj si s tim.

Nahlásit jako SPAM
IP: 85.71.152.–
Koja
~ Anonymní uživatel
37 příspěvků
21. 10. 2008   #16
-
0
-

Jo, to dělá asi tak to, co to moje .. a jak mám zkontrolovat, že je to double? Že to není text? Když tam zadám text, tak mi to hodí Segmentation fault a ukončí se program. Když to zkusím nějak ošetřit a napíšu tam text, tak se to zacyklí..

Nahlásit jako SPAM
IP: 81.27.200.–
Romi
~ Anonymní uživatel
9 příspěvků
21. 10. 2008   #17
-
0
-

To o-lox: Přesně tak, jenom bych to napsal tak jak se to běžně v céčku píše :smile1:



int n; // počet načtených prvků
while ((n = scanf("%lf", &cislo)) != EOF)
{
if (n == 0)
{ // chybný vstup programu
printf("Zadavej cisla amatere!!\n");
exit(1); // ukončí celý program s chybovým kódem 1
}
pole[x++] = cislo;

/* Nechápu na co je ten kód pod komentářem. Každopádně když
* načteš něco jiného než číslo, scanf ti do "cislo" nic neuloží
* To je ten segemtation fault.. */
c = cislo;
if ((isspace(c)) && (c == '\n'))
{
printf("\n");
}
}

Nahlásit jako SPAM
IP: 147.229.197.–
Koja
~ Anonymní uživatel
37 příspěvků
21. 10. 2008   #18
-
0
-

To Romi: Super super super . . tohle sem potřeboval :) Díky moc:)

Nahlásit jako SPAM
IP: 81.27.200.–
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, 53 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ý