Ošetření vstupu, špatně zadaný znak – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ošetření vstupu, špatně zadaný znak – C / C++ – Fórum – Programujte.comOšetření vstupu, špatně zadaný znak – C / C++ – Fórum – Programujte.com

 

Levin0
Newbie
19. 10. 2014   #1
-
0
-

Ahoj, potřebuji poradit. Už 2 hodiny se s tím peru a bezúspěšně.

Uživatel mi zadá souřadnice bodu. [x;y], když vše ok, tak přejde k zadávání dalšího bodu, celkem jsou 4.

Mám to napsané takhle pro každý bod zvlášť:

printf("Zadejte souřadnice bodu:\n");             
if(scanf("%lf%lf", &x1,&y1) != 2)
    printf("Spatne zadano.\n");

Potřebuji to, pokud se zadá špatný znak, ukončit hned u bodu 1, jinak to projde vším a u každého bodu vypíše Spatne zadano.

Spravně:

Souradnice bodu:

a 1

Spatne zadano.

Program dal nepokracuje.

Takhle mi to píše a to nechci:

Souradnice bodu1:

a 1

Spatne zadano.

Souradnice bodu2:

Spatne zadano.

Souradnice bodu3:

Spatne zadano.

Souradnice bodu4:

Spatne zadano.

Zkoušel jsem to přes return, ale to pak nepokracuje dál ani při správném zadání. Díky za každou radu!

Nahlásit jako SPAM
IP: 89.24.173.–
KIIV
~ Moderátor
+43
God of flame
19. 10. 2014   #2
-
0
-

#1 Levin
a zkusil si return zaroven s tou podminkou?

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Levin0
Newbie
19. 10. 2014   #3
-
0
-

   

printf("Zadejte souřadnice bodu:\n");             
if(scanf("%lf%lf", &x1,&y1) != 2)
    printf("Spatne zadano.\n");
	return 0; // i 1 jsem zkoušel
printf("Zadejte souradnice bodu:\n");
  s1 = scanf("%lf%lf", &x1,&y1);             
if( s1 != 2)
    printf("Spatne zadano.\n");
    return 1;

Překopal jsem i celou podmínku, ale to mi pak nefungovalo, jak myslíš ten return s tou podmínkou?

Nahlásit jako SPAM
IP: 89.24.173.–
KIIV
~ Moderátor
+43
God of flame
19. 10. 2014   #4
-
0
-

vis o tom, ze if/else/while/for vykonaj JEN JEDINEJ prikaz? Pokud jich chces vic, tak je musis dat do bloku

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Levin0
Newbie
19. 10. 2014   #5
-
0
-

   

  printf("Bod #1:\n");            
if(scanf("%lf%lf", &x1,&y1) != 2)
    printf("Nespravny vstup.\n");

    printf("Bod #2:\n");            
if(scanf("%lf%lf", &x2,&y2) != 2)
    printf("Nespravny vstup.\n");

    printf("Bod #3:\n");            
if(scanf("%lf%lf", &x3,&y3) != 2)
    printf("Nespravny vstup.\n");


   printf("Bod #4:\n");             
if(scanf("%lf%lf", &x4,&y4) != 2)
    printf("Nespravny vstup.\n")

Takhle mám celý zdroják na zadání těch bodů, aby se mi načetly všechny body. Teď právě nevím, jak dál s tím ukončením v jednotlivý podmínce. Zkoušel jsem to dávat do bloku, hrát si s tím, ale furt mi to nejde. 

Edit: je řešení exit(EXIT_FAILURE); za každou podmínku?

Nahlásit jako SPAM
IP: 89.24.173.–
Levin0
Newbie
19. 10. 2014   #6
-
0
-

#5 Levin
Tak už jsem to vyřešil, jen teď potřebuji jinou radu, jak tam přidat podmínku, když uživatel nezadá jednu hodnotu, napři zadá x1 - 4 a druhou ne, tak aby vypsal program chybové hlášení a ne jen odřádkoval a čekal na druhý znak

Nahlásit jako SPAM
IP: 89.24.173.–
KIIV
~ Moderátor
+43
God of flame
19. 10. 2014   #7
-
0
-

#6 Levin
jedine nacist celej radek a pak sscanf nebo tak

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Levin0
Newbie
19. 10. 2014   #8
-
0
-

   

	printf("Bod:\n");
    	scanf("%lf%lf", &x1,&y1);
if( x1 != 1 || y1 != 1) {
    printf("Nespravny vstup.\n");

    exit(EXIT_FAILURE==1);

Ještě bych poprosil radu, jak tam implementovat mezeru nebo enter, zkoušel jsem to  ještě za to zadat

x1 !="\n".... ale to mi házelo eror s proměnnou, ty jsou typu double a \n typu char, jak tohle skloubit dohromady, díky

Nahlásit jako SPAM
IP: 89.24.173.–
20. 10. 2014   #9
-
0
-

.... a "\n" je řetězec. Asi by sis měl nejdřív udělat jasno, co s čím chceš porovnávat.

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:18f0:95...–
Hen0
Duch
28. 10. 2014   #10
-
0
-

#8 Levin
Mě by tedy zajímalo jak jsi to s těmi vstupy vyřešil:-)

Nahlásit jako SPAM
IP: 91.232.247.–
Kit+15
Guru
28. 10. 2014   #11
-
0
-

#10 Hen
Možná si jen nechal zarovnat řádky editorem a konečně ho to praštilo do nosu.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Hen0
Duch
29. 10. 2014   #12
-
0
-

#11 Kit
No každopádně já lama na to nepřišel:-)

Nahlásit jako SPAM
IP: 212.67.76.–
Kit+15
Guru
29. 10. 2014   #13
-
0
-

#12 Hen
Zjistil jsem, že nemá smysl číst cizí chybně naformátované zdrojáky. Buď je ignoruji, anebo přeformátuji a pak teprve zkoumám. Velice rychle se tak projeví chyby typu chybějící středník, přehozená závorka, neukončený cyklus,...

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:dd3b:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Hen0
Duch
29. 10. 2014   #14
-
0
-

Dobře, jak bys to tedy napsal svými vlastními silami? Já to teď zkoušel ale pořád mi to dělá stejnou botu jako Levinovi.

Nahlásit jako SPAM
IP: 212.67.76.–
Hen0
Duch
29. 10. 2014   #15
-
0
-

#14 Hen
Už jsem to vyřešil:-) Je to fakt jednoduché a já jsem trotl:-)

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

Podobná vlákna

Ošetření vstupu. — založil jisla

Ošetření vstupu — založil Caken

Ošetření vstupů — založil vollf82

Osetreni vstupu — založil Prometheus

Ošetření vstupu — založil Koja

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ý