• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

If sprawdzający wprowadzone dane

Object Storage Arubacloud
0 głosów
285 wizyt
pytanie zadane 3 stycznia 2016 w C i C++ przez Lukasz Bywalec (2,320 p.)
edycja 3 stycznia 2016 przez Lukasz

Potrzebuje napisać if'a który zabezpieczy przed wprowadzeniem do zmiennej int jakieś litery badz ciagu znaków oraz liczb które są poza skalą ocen ( 1-6 ). Z liczbami sam umiem poradzic ale ze znakami juz nie. probówałem juz z funckcjami isalpha() i podobnymi ale nic to nei dawało, gdzyż po wpisaniu jeden raz litery pętla w której siedzi ten if zaczynala wykonywac sie w nieskończonosc.

 

KOD:

int main()
{
    cout<<"Ile masz przedmiotow ocenianych? ";
    cin>>ile;
    int *oceny;
    oceny=new int [ile];

    for (int i=0;i<ile;i++)
    {
        cout<<"Podaj "<<i+1<<". ocene: ";
        cin>>oceny[i];

        if(oceny[i]>6||oceny[i]<1)
        {
            cout<<"Wprowadziles zny znak. Podaj liczbe od 1 do 6!"<<endl;
            i--;
        }
        else{
        suma+=oceny[i];
        }
    }
    cout<<endl<<"Srednia wynosi: "<<fixed<<setprecision(2)<<suma/ile<<endl;
    system("pause");
    return 0;
}

 

4 odpowiedzi

0 głosów
odpowiedź 3 stycznia 2016 przez Colossus Mądrala (6,410 p.)
	int ile,suma=0;
	char ocena;
    cout<<"Ile masz przedmiotow ocenianych? ";
    cin>>ile;
    for (int i=0;i<ile;i++)
    {
        cout<<"Podaj "<<i+1<<". ocene: ";
        cin>>ocena;
 
        if(ocena>=49 && ocena<=54)
        {
        	suma+=(int)ocena-48;
        }
        else{
	     cout<<" Wprowadziles zny znak. Podaj liczbe od 1 do 6!"<<endl;
         i--;
        }
    }

 

komentarz 3 stycznia 2016 przez Munvik Dyskutant (9,350 p.)

A czemu tam jest 

if(ocena>=49 && ocena<=54)

Zamiast 

if(ocena>6 && ocena<1)

?

komentarz 3 stycznia 2016 przez Colossus Mądrala (6,410 p.)
Słyszałeś o kodzie ASCII?
komentarz 3 stycznia 2016 przez Munvik Dyskutant (9,350 p.)
Ok, masz rację, jest to typ char. Mój błąd, pozdrawiam :)
komentarz 3 stycznia 2016 przez Colossus Mądrala (6,410 p.)
Też pozdrawiam :)
–1 głos
odpowiedź 3 stycznia 2016 przez arek01996 Stary wyjadacz (12,100 p.)
zabespieczy... zabezpieczy*

"przed wprowadzeniem do zmiennej int jakieś litery" ???? do int literę chcesz wprowadzić ? Int przechowuje tylko liczby całkowite.
(Uprzedzając mądralińskich faktycznie można rzutować int na char ale int to wciąż liczba, a nie litera).

Za głupi jestem żeby Ci pomóc bo nie wiem, o co dokładnie chodzi... . Może błąd leży w tym, że do int przypisujesz "ciąg znaków" ?
komentarz 3 stycznia 2016 przez Lukasz Bywalec (2,320 p.)
bo jest tablica intów oceny. i jeżeli przez przypadek zamiast np. 2 wpisze tam litere G to chce zeby ni wywalało programu tylko sprawdzało co wprowadzam do tej tablicy int i wyrzucało błąd i prosiło aby wprowadzic ponownie.

Ten if ma być takim zabezpieczeniem
–1 głos
odpowiedź 3 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)
Możesz wszystko zamknąć w pętli for(;;)
komentarz 3 stycznia 2016 przez Lukasz Bywalec (2,320 p.)
nie rozumiem co mam zamknąc w tej pentli
komentarz 3 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)
Cały program, on początku int main do końca
–1 głos
odpowiedź 3 stycznia 2016 przez Melchior Obywatel (1,300 p.)
komentarz 3 stycznia 2016 przez Melchior Obywatel (1,300 p.)

Dobra masz gotową odpowiedz 

	while (!cin.good())
	{
		
		cin.clear();
		cin.ignore();
		cout << "zle\n";
		cin >> x;
	}

PS. Dzięki za minusa;)

komentarz 3 stycznia 2016 przez Lukasz Bywalec (2,320 p.)
dzięki. To nie aj minusowałem ;)

Podobne pytania

+1 głos
0 odpowiedzi 141 wizyt
pytanie zadane 19 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,080 p.)
0 głosów
2 odpowiedzi 115 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)
0 głosów
2 odpowiedzi 145 wizyt
pytanie zadane 5 lutego 2022 w C# przez chrystian Gaduła (4,780 p.)

92,615 zapytań

141,465 odpowiedzi

319,783 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...