Ĺadny brzuch
Mam taka drobna sprawe na temat wyjatków,
nie wim jak napisac obsloge wyjatku podczas takiego kodu
int pobierz_cyfre;
cin>>pobierz_cyfre;
chodzi mi dokladnie o to aby program sie nie zawieszal jezeli ktos poda znak ,tylko zgalszal wyjatek np. cout<<"Nie podales cyfry";
Eeee, może coś w tym stylu (bez wyjątków):
int liczba; cin >> liczba; if (!cin.good()) cout << "Nie podales liczby, ty chultaju!\n";
:google:
link
link
Zdaje ise ze to wszystko co Ci potrzebne. Jak widzisz mozna to znalezc. Pewnie bym nawet podal kod ale w c++ nie programuje...
Robie taki fajny programik a propo wzorów fizycznych itd.., i zastosowalem tutaj to co napisales ale nadal sie program zawiesza :(
#include<iostream>
#include<conio.h>
#include<cstdlib>
#include"startfunkcje_2.h"
using namespace std;
int main()
{
double wybor_obliczen;
int wybor_int;
for(;;)//poczatek najwiekszego fora
{
for(;;)
{
system("cls");
cout<<"\t\t------------------------------------"<<endl;
cout<<"\t\t- WZORY FIZYCZNE -"<<endl;
cout<<"\t\t------------------------------------"<<endl;
cout<<endl;
cout<<"[ 1] - obliczenia z ruchem jednostajnie liniowym"<<endl;
cout<<"[ 2] - szybkosc ruchu jedenostajnego po okregu"<<endl;
cout<<"[ 3] - obliczenia z ruchem jednostajnie przyspieszonym"<<endl;
cout<<"[ 4] - ped ciala"<<endl;
cout<<"[ 5] - sila"<<endl;
cout<<"[ 6] - ciezar ciala"<<endl;
cout<<"[ 7] - praca"<<endl;
cout<<"[ 8] - moc"<<endl;
cout<<"[ 9] - energia potencjalna grawitacji"<<endl;
cout<<"[10] - energia kinetyczna"<<endl;
cout<<"[11] - obliczenia z gestoscia, masa, objetoscia"<<endl;
cout<<"[12] - ciplo wlasciwe"<<endl;
cout<<"[13] - czestotliwosc"<<endl;
cout<<"[14] - okres drgan"<<endl;
cout<<"[15] - obliczenia zwiazane z pradem"<<endl;
cout<<"[16] - napiecie elektryczne"<<endl;
cout<<"[17] - praca pradu"<<endl;
cout<<"[18] - moc pradu"<<endl;
cout<<"[19] - opor elektryczny(rezystancja)"<<endl;
cout<<"[20] - opor zastepczy polaczenia szeregowego"<<endl;
cout<<"[21] - opor zastepczy polaczenia rownoleglego"<<endl;
cout<<"[22] - zdolnosc skupiajaca soczewki"<<endl;
cout<<"[23] - ogniskowa soczewki"<<endl;
cout<<"\n wybierz ->";
cin>>wybor_obliczen;
if(!cin.good())cout<<"Nie podales liczby !";break;
if((wybor_obliczen==1)||(wybor_obliczen==2)||(wybor_obliczen==3)||(wybor_obliczen==4)||(wybor_obliczen==5)||(wybor_obliczen==6)||(wybor_obliczen==7)||(wybor_obliczen==8)||(wybor_obliczen==9)||(wybor_obliczen==10)||(wybor_obliczen==11)||(wybor_obliczen==12)||(wybor_obliczen==13)||(wybor_obliczen==14)||(wybor_obliczen==15)||(wybor_obliczen==16)||(wybor_obliczen==17)||(wybor_obliczen==18)||(wybor_obliczen==19)||(wybor_obliczen==20)||(wybor_obliczen==21)||(wybor_obliczen==22)||(wybor_obliczen==23))break;
}
switch(static_cast<int>(wybor_obliczen))
{
case 1 : F_OZRJL();break;
case 2 : F_SRJPO();break;
case 3 : F_0ZRJP();break;
//...
}
getch();
}//koniec njawiekszgo fora
getch();
}
Użytkownik zbyrek edytował ten post 10 marzec 2007, 17:01
Co wg Ciebie znaczy ze program sie zawiesza? I powiedz jak ma Ci program opuscic nieskonczona petle jezeli nie masz wyjscia ustawionego?
to ze jeszcze nie ma wyjscia to ja wiem, (ten program jest w trakcie robienia), chodzi glownie o to ze jak podasz litere to nie powraca do tego glownego fora i nie mozna podac liczby na nowo..
to ze jeszcze nie ma wyjscia to ja wiem, (ten program jest w trakcie robienia), chodzi glownie o to ze jak podasz litere to nie powraca do tego glownego fora i nie mozna podac liczby na nowo..
A stosowales wyjatki? Bo widze tylko ze metode podana przez pban'a uzywales...
błąd w lini:
if(!cin.good())cout<<"Nie podales liczby !";break;
ma być:
if(!cin.good()){cout<<"Nie podales liczby !";break; }
(dodałem nawiasy klamrowe)
@Ali240: pbNan-a* :P
int liczba; if (cin >> liczba) cout << "Udało się!\n";
Zatem
if (!cin >> liczba) cout << "Niepowodzenie!\n";
Czyli
do { cout << "Wpisz liczbe:" << endl; } while (!cin >> liczba)
I zdziwię się, jeśli to nie będzie działać.
A z wyjątkami to tak:
cin.exceptions(ios::failbit | ios::badbit | ios::eofbit); try { cin >> liczba; } catch (ios::failure) { cout << "Blad!" << endl; }
Ale ja jestem cienki w te klocki :)
//No i loguś ze swym rozwiązaniem szybszy :) Ciekawym, które prawidłowe?
Użytkownik pbnan edytował ten post 10 marzec 2007, 17:56
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
nie wim jak napisac obsloge wyjatku podczas takiego kodu
int pobierz_cyfre;
cin>>pobierz_cyfre;
chodzi mi dokladnie o to aby program sie nie zawieszal jezeli ktos poda znak ,tylko zgalszal wyjatek np. cout<<"Nie podales cyfry";
Eeee, może coś w tym stylu (bez wyjątków):
int liczba; cin >> liczba; if (!cin.good()) cout << "Nie podales liczby, ty chultaju!\n";
:google:
link
link
Zdaje ise ze to wszystko co Ci potrzebne. Jak widzisz mozna to znalezc. Pewnie bym nawet podal kod ale w c++ nie programuje...
Robie taki fajny programik a propo wzorów fizycznych itd.., i zastosowalem tutaj to co napisales ale nadal sie program zawiesza :(
#include<iostream>
#include<conio.h>
#include<cstdlib>
#include"startfunkcje_2.h"
using namespace std;
int main()
{
double wybor_obliczen;
int wybor_int;
for(;;)//poczatek najwiekszego fora
{
for(;;)
{
system("cls");
cout<<"\t\t------------------------------------"<<endl;
cout<<"\t\t- WZORY FIZYCZNE -"<<endl;
cout<<"\t\t------------------------------------"<<endl;
cout<<endl;
cout<<"[ 1] - obliczenia z ruchem jednostajnie liniowym"<<endl;
cout<<"[ 2] - szybkosc ruchu jedenostajnego po okregu"<<endl;
cout<<"[ 3] - obliczenia z ruchem jednostajnie przyspieszonym"<<endl;
cout<<"[ 4] - ped ciala"<<endl;
cout<<"[ 5] - sila"<<endl;
cout<<"[ 6] - ciezar ciala"<<endl;
cout<<"[ 7] - praca"<<endl;
cout<<"[ 8] - moc"<<endl;
cout<<"[ 9] - energia potencjalna grawitacji"<<endl;
cout<<"[10] - energia kinetyczna"<<endl;
cout<<"[11] - obliczenia z gestoscia, masa, objetoscia"<<endl;
cout<<"[12] - ciplo wlasciwe"<<endl;
cout<<"[13] - czestotliwosc"<<endl;
cout<<"[14] - okres drgan"<<endl;
cout<<"[15] - obliczenia zwiazane z pradem"<<endl;
cout<<"[16] - napiecie elektryczne"<<endl;
cout<<"[17] - praca pradu"<<endl;
cout<<"[18] - moc pradu"<<endl;
cout<<"[19] - opor elektryczny(rezystancja)"<<endl;
cout<<"[20] - opor zastepczy polaczenia szeregowego"<<endl;
cout<<"[21] - opor zastepczy polaczenia rownoleglego"<<endl;
cout<<"[22] - zdolnosc skupiajaca soczewki"<<endl;
cout<<"[23] - ogniskowa soczewki"<<endl;
cout<<"\n wybierz ->";
cin>>wybor_obliczen;
if(!cin.good())cout<<"Nie podales liczby !";break;
if((wybor_obliczen==1)||(wybor_obliczen==2)||(wybor_obliczen==3)||(wybor_obliczen==4)||(wybor_obliczen==5)||(wybor_obliczen==6)||(wybor_obliczen==7)||(wybor_obliczen==8)||(wybor_obliczen==9)||(wybor_obliczen==10)||(wybor_obliczen==11)||(wybor_obliczen==12)||(wybor_obliczen==13)||(wybor_obliczen==14)||(wybor_obliczen==15)||(wybor_obliczen==16)||(wybor_obliczen==17)||(wybor_obliczen==18)||(wybor_obliczen==19)||(wybor_obliczen==20)||(wybor_obliczen==21)||(wybor_obliczen==22)||(wybor_obliczen==23))break;
}
switch(static_cast<int>(wybor_obliczen))
{
case 1 : F_OZRJL();break;
case 2 : F_SRJPO();break;
case 3 : F_0ZRJP();break;
//...
}
getch();
}//koniec njawiekszgo fora
getch();
}
Użytkownik zbyrek edytował ten post 10 marzec 2007, 17:01
Co wg Ciebie znaczy ze program sie zawiesza? I powiedz jak ma Ci program opuscic nieskonczona petle jezeli nie masz wyjscia ustawionego?
to ze jeszcze nie ma wyjscia to ja wiem, (ten program jest w trakcie robienia), chodzi glownie o to ze jak podasz litere to nie powraca do tego glownego fora i nie mozna podac liczby na nowo..
to ze jeszcze nie ma wyjscia to ja wiem, (ten program jest w trakcie robienia), chodzi glownie o to ze jak podasz litere to nie powraca do tego glownego fora i nie mozna podac liczby na nowo..
A stosowales wyjatki? Bo widze tylko ze metode podana przez pban'a uzywales...
błąd w lini:
if(!cin.good())cout<<"Nie podales liczby !";break;
ma być:
if(!cin.good()){cout<<"Nie podales liczby !";break; }
(dodałem nawiasy klamrowe)
@Ali240: pbNan-a* :P
int liczba; if (cin >> liczba) cout << "Udało się!\n";
Zatem
if (!cin >> liczba) cout << "Niepowodzenie!\n";
Czyli
do { cout << "Wpisz liczbe:" << endl; } while (!cin >> liczba)
I zdziwię się, jeśli to nie będzie działać.
A z wyjątkami to tak:
cin.exceptions(ios::failbit | ios::badbit | ios::eofbit); try { cin >> liczba; } catch (ios::failure) { cout << "Blad!" << endl; }
Ale ja jestem cienki w te klocki :)
//No i loguś ze swym rozwiązaniem szybszy :) Ciekawym, które prawidłowe?
Użytkownik pbnan edytował ten post 10 marzec 2007, 17:56