Ošetření programu na špatné hodnoty – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ošetření programu na špatné hodnoty – C / C++ – Fórum – Programujte.comOšetření programu na špatné hodnoty – C / C++ – Fórum – Programujte.com

 

kedlik
~ Anonymní uživatel
7 příspěvků
8. 5. 2013   #1
-
0
-

Ahoj,

potřeboval bych trochu pomoct. Potřebuji ošetřit program aby mi to při zadání záporných čísel a větších jak 10 hodilo varování, že to nelze(to mam), ale potřebuji aby se to pak vrátilo na začátek programu + ošetření na na znaky, můžu zadávat pouze čísla.

Předem děkuji za rady

int main()
{

    printf("********************************\nVYTEJTE V PROGRAMU HANOJSKE VEZE\n********************************\n");

    int n;
    int cnt;                                     // deklerace promìných
    printf("Zadej pocet kotoucu :\n") ;          // vipis na obrazovku
    scanf("%i", &n);
    if (n>10)
    {
        printf("Zadal si %i kotoucu to je moc, trvalo bz to dlouho",n);
        return 0;
    }
    else if (n<0)
    {
        printf("zadal si %i kotoucu to nelze, jak bz si to chtel provest?",n);
        return 0;
    }


    cnt=PVez(n,1,2,3);
    printf("Pocet volani: %i\n", cnt);
    getchar();
    return 0;
}

Nahlásit jako SPAM
IP: 81.201.60.–
lukas.balaz0
Super člen
8. 5. 2013   #2
-
0
-

Skús to dať celé do funkcie a ak sa vyskytne chyba (zadaný počet je >10 alebo <0), tak tu funkciu znovu zavoláš, prídeš na začiatok

Nahlásit jako SPAM
IP: 213.215.106.–
kedlik
~ Anonymní uživatel
7 příspěvků
8. 5. 2013   #3
-
0
-

#2 lukas.balaz
to tě napadlo, ale bohužel nevím jak.   

Nahlásit jako SPAM
IP: 81.201.60.–
vitamin+8
Grafoman
8. 5. 2013   #4
-
0
-

#3 kedlik
Pouzi cyklus (for, while, do-while).


cyklus{

    printf("Zadej pocet kotoucu :\n") ;      
    scanf("%i", &n);
    if (n>10){
	//...
    }
    else if (n<0){
        //...
    }
    else{
 	stop_cyklu;
    }

}
cnt=PVez(n,1,2,3);
printf("Pocet volani: %i\n", cnt);
getchar();
return 0;
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
lukas.balaz0
Super člen
8. 5. 2013   #5
-
0
-

Je jedno ci to urobis rekurziou alebo cyklom. A aby to bolo isto cislo, nacitaj ci char nie int, potom zisit, ci je prvy znak toho co si nacital cislo a ak ano, vsetky cisla az po prve pismeno do intu dostanes myslim ze pomocou funkcie atoi(). NIe som si isty ci to bude fungovat.

Nahlásit jako SPAM
IP: 213.215.106.–
kedlik
~ Anonymní uživatel
7 příspěvků
8. 5. 2013   #6
-
0
-

#4 vitamin
dík za radu, ale já jsem na toto blbej a pořád nevím jak. Pokud by si měl čas byl bych rád, kdyby si mi ukázal jak to má vypadat.

Nahlásit jako SPAM
IP: 81.201.60.–
vitamin+8
Grafoman
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
ingiraxo+15
Grafoman
8. 5. 2013   #8
-
0
-

však ti to už  vitamin napsal.. 

int ziskejPocetZKonzole()
{
    int pocet;

    while (1)
    {
        printf("Zadej pocet kotoucu: ");
        scanf("%d", &pocet);

        if (pocet > 10)
        {
            printf("Nelze zadat vice kotoucu nez 10!\n");
        }
        else if (pocet <= 0)
        {
            printf("Bez kotoucu to nepujde!\n");
        }
        else return pocet;
    }
}

int main()
{
    int pocetKotoucu = ziskejPocetZKonzole();

    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
kedlik
~ Anonymní uživatel
7 příspěvků
8. 5. 2013   #9
-
0
-

už to funguje, ale ted přestali fungovat cisla od 1 - 9, mělo by to začít přeskládávat kotouče, ale nic   

#include <stdio.h>
#include <conio.h>


int PVez(int vyska, int odkud,int kam,int pomoci)   // deklerování promìných

{
    static int counter;
    counter ++;
    if (vyska > 0)
    {
        PVez((vyska-1), odkud, pomoci, kam);
        printf("Prenes kotouc z %i tyce na %i tyc\n ", odkud, kam);
        PVez((vyska-1), pomoci, kam, odkud);
    }

    return counter;
}

int main()
{
    printf("********************************\nVYTEJTE V PROGRAMU HANOJSKE VEZE\n********************************\n");


    int n;
    int cnt;
    while (1)
    {
        printf("Zadej pocet kotoucu :\n") ;
        scanf("%i", &n);

        if (n > 10)
        {
            printf("Nelze zadat vice kotoucu nez 10!\n");
        }
        else if (n <= 0)
        {
            printf("Bez kotoucu to nepujde!\n");
        }
        else return n;
    }

    cnt=PVez(n,1,2,3);
    printf("Pocet volani: %i\n", cnt);
    getchar();
    return 0;

}

Nahlásit jako SPAM
IP: 81.201.60.–
vitamin+8
Grafoman
8. 5. 2013   #10
-
0
-

#9 kedlik
return-om sa ukoncuje cela funkcia, na ukoncenie cyklu sluzi nieco ine (podrobnosti mas v tom linku co som ti sem dal vyzsie)

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
kedlik
~ Anonymní uživatel
7 příspěvků
9. 5. 2013   #11
-
0
-

omlouvám se, že ještě píšu, ale nějak se to pořád nechce rozběhnou, problém je u else  continue ,když chci pokračovat v programu, nejspíš špatně udělané závorky. Díky za radu.

#include <stdio.h>
#include <conio.h>


int PVez(int vyska, int odkud,int kam,int pomoci)   // deklerování promìných

{
    static int counter;
    counter ++;
    if (vyska > 0)
    {
        PVez((vyska-1), odkud, pomoci, kam);
        printf("Prenes kotouc z %i tyce na %i tyc\n ", odkud, kam);
        PVez((vyska-1), pomoci, kam, odkud);
    }

    return counter;
}

int main()
{
    printf("********************************\nVYTEJTE V PROGRAMU HANOJSKE VEZE\n********************************\n");


    int n;
    int cnt;
    int jakToDopadlo
    while (1)
    {
        printf("Zadej pocet kotoucu :\n") ;
        scanf("%i", &n);

        if (n > 10)
        {
            printf("Nelze zadat vice kotoucu nez 10!\n");
        }
        else if (n <= 0)
        {
            printf("Bez kotoucu to nepujde!\n");
        }
        else

            {
                continue;
            }

    }


    cnt=PVez(n,1,2,3);
    printf("Pocet volani: %i\n", cnt);
    getchar();
    return 0;

}

Nahlásit jako SPAM
IP: 81.201.60.–
ingiraxo+15
Grafoman
9. 5. 2013   #12
-
0
-

#11 kedlik
tam nemá bejt continue ale break

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
kedlik
~ Anonymní uživatel
7 příspěvků
9. 5. 2013   #13
-
0
-

#12 ingiraxo
dneska mi to učitel ukazoval a bylo to continue(zapomněl jsem to uložit)

Nahlásit jako SPAM
IP: 81.201.60.–
vitamin+8
Grafoman
9. 5. 2013   #14
-
0
-

#13 kedlik
Dal som ti sem link na tutorial, preco si ho neprecitas?

break - okamžitě ukončuje provádění cyklu a opouští jej

continue – udělá skok na konec cyklu a vynutí jeho opakování, cyklus se tedy neukončuje

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
kedlik
~ Anonymní uživatel
7 příspěvků
9. 5. 2013   #15
-
0
-

#14 vitamin
už to mám, ale jak jsem psal učitel mi to dneska ukazoval přes continue.

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