Problem z prostym programem

0

Witam wszyskich, jestem bardzo początkujący to jest mój pierwszy program do napisania, muszę podzielić uczniów na grupy zależnie od podanej wartości (ilości punktów) lecz niestety nie mogę za nic dojść do tego aby po wpisaniu wartości ujemnej wyświetlało, że podane dane są nieprawidłowe. Czy ktoś mógłby mi wytłumaczyć ?

#include <iostream>

using namespace std;
int pkt;
int main()
{
    cout << "Podaj liczbe punktow uzyskanych z testu:";
    cin >>pkt;

    if(pkt<=29)
    {
        cout<<"Zostales zakwalifikowany do grupy podstawowej";
    }
    else if ((pkt>=30)&&(pkt<=49))
    {
        cout<<"Zostales zakwalifikowany do grupy sreniozaawansowanej";
    }
    else if ((pkt<0)||(pkt>=50)&&(pkt<70))
    {
        cout<<"Zostales zakwalifikowany do grupy zaawansowanej";
    }
    else
    {
        cout<<"Podales zle dane";
    }
    return 0;

}
1

Program wykonuje się od góry. Podajesz -10 to sprawdza czy jest równe lub mniejsze od 29, jeśli tak to wypisze Zostales zakwalifikowany do grupy podstawowej. Albo sprawdzaj przy tym czy wartość jest >=0 albo sprawdzaj czy jest <0 na samym początku.
Dodatkowo ta linijka jest jakaś podejrzana else if ((pkt<0)||(pkt>=50)&&(pkt<70))

0

właśnie tu już próbowałem dodać ten warunek, wcześniej wyglądała tak:
else if ((pkt>=50)&&(pkt<70))

Gdy mam tak w 1 warunku to nie wyrzuca błędnych danych (minusowych)

if((pkt>=0)&&(pkt<=29))

0

Tak jak ci napisałem wcześniej, łapiesz się na pierwszego ifa. W przypadku ujemnej wartości, prawdziwy jest pierwszy warunek i nawet tutaj nie dojdziesz.

0

Tak jak sugerowane powyżej, Ustal kolejność, np.:

int pkt;
	cout << "Podaj liczbe punktow uzyskanych z testu:";
    cin >>pkt;
	if ((pkt < 0) || (pkt > 70)) {
			cout << "Zle dane\n";
	}
	else {
		if(pkt<=29)
		{
			cout<<"Zostales zakwalifikowany do grupy podstawowej";
		}
		else if (pkt<=49)
		{
			cout<<"Zostales zakwalifikowany do grupy sreniozaawansowanej";
		}
		else 
		{
			cout<<"Zostales zakwalifikowany do grupy zaawansowanej";
		}
	}	
0

Okej zmieniłem u siebie w pierwszym ifie i nagle ruszyło, nie wiem dlaczego może znaki mniejszości z większością na odwrót wpisywałem, bardzo dziękuję za pomoc, niestety na pewno nie jest to mój ostatni problem i na pewno będę jeszcze o pomoc, bardzo Wam dziękuję

0
#include <iostream>
using namespace std;

static const char *tb[]=
{
   "Podales zle dane",
   "Zostales zakwalifikowany do grupy podstawowej",
   "Zostales zakwalifikowany do grupy sreniozaawansowanej",
   "Zostales zakwalifikowany do grupy zaawansowanej",
   "70-100",
   "Jakiś mega orzeł?"
};

int main()
{
    cout<<"Podaj liczbe punktow uzyskanych z testu: ";
    int pkt;
    cin>>pkt;
    cout<<tb[(pkt>0)+(pkt>=30)+(pkt>=50)+(pkt>=70)+(pkt>=100)]<<endl;
    return 0;
}
0

Moglibyście jeszcze powiedzieć czy ten schemat blokowy jest poprawny?
title

0
miko1282 napisał(a):

Moglibyście jeszcze powiedzieć czy ten schemat blokowy jest poprawny?

Wygląda okej.

1

"Moglibyście jeszcze powiedzieć czy ten schemat blokowy jest poprawny?"
Napisz według niego program i Przetestuj.

0
lion137 napisał(a):

"Moglibyście jeszcze powiedzieć czy ten schemat blokowy jest poprawny?"
Napisz według niego program i Przetestuj.

Wydaje mi się, że ten program niżej jest właśnie do tego schematu

#include <iostream>

using namespace std;
int pkt;
int main()
{
    cout << "Podaj liczbe punktow uzyskanych z testu:";
    cin >>pkt;

    if((pkt>=0)&&(pkt<=29))
    {
        cout<<"Zostales zakwalifikowany do grupy podstawowej";
    }
    else if ((pkt>=30)&&(pkt<=49))
    {
        cout<<"Zostales zakwalifikowany do grupy sreniozaawansowanej";
    }
    else if ((pkt>=50)&&(pkt<=70))
    {
        cout<<"Zostales zakwalifikowany do grupy zaawansowanej";
    }
    else
    {
        cout<<"Podales zle dane";
    }
    return 0;

}
0

Proszę pomożecie ? Powiedźcie tylko czy to jest dobrze, to jest mój pierwszy program nigdy wcześniej nie miałem z tym styczności i do końca nie ogarniam, malowanie konsoli jest dla mnie magią a to będzie moje następne zadanie, czy ten schemat blokowy jest prawidłowy do tego programu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1