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

If sprawdzający wprowadzone dane

0 głosów
861 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,850 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,850 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,850 p.)
Też pozdrawiam :)
–1 głos
odpowiedź 3 stycznia 2016 przez arek01996 Stary wyjadacz (12,080 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 316 wizyt
pytanie zadane 19 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,660 p.)
0 głosów
2 odpowiedzi 380 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)
0 głosów
2 odpowiedzi 365 wizyt
pytanie zadane 5 lutego 2022 w C# przez chrystian Gaduła (4,780 p.)

93,800 zapytań

142,768 odpowiedzi

323,461 komentarzy

63,421 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...