Sprawdzanie ile podanych liczb jest większych od 15, a ile mniejszych od 5

0

Hej, mam taki problem z programem, mianowicie ma on określić ile liczb z podanych przez użytkownika jest większych od 15 a ile z nich mniejszych od 5 i podać zakres liczb nieobsługiwanych (np.14). Napisałem coś takiego i określenie ile z nich jest mniejszych a ile większych działa, ale podanie liczb nie występujących w tym zakresie już nie. Jeśli wiecie co jest nie tak to proszę o pomoc.

#include <iostream>
using namespace std;

int main ()
{
int a,b,c,i,u;
b=0;
c=0;
u=0;
cout<<"Podaj 20 liczb:"<<endl;
for(i=1;i<=5;i++)
{
cin>>a;
if(a>15)b=b+1;
}

{
if(a<5) c=c+1;
else;
u=u+1;
}

cout<<"Liczby wieksze od 15 to: "<<b<<endl;
cout<<"Liczby spoza zakresu to: "<<u<<endl;
cout<<"Liczby mniejsze od 5 to: "<<c<<endl;
	return 0;
}
1

Zobacz co się stanie jak poprawnie sformatujemy ten kod (chociażby tutaj)

#include <iostream>
using namespace std;

int main()
{
    int a, b, c, i, u;
    b = 0;
    c = 0;
    u = 0;
    cout << "Podaj 20 liczb:" << endl;
    for (i = 1; i <= 5; i++) {
        cin >> a;
        if (a > 15)
            b = b + 1;
    }

    {
        if (a < 5)
            c = c + 1;
        else
            ;
        u = u + 1;
    }

    cout << "Liczby wieksze od 15 to: " << b << endl;
    cout << "Liczby spoza zakresu to: " << u << endl;
    cout << "Liczby mniejsze od 5 to: " << c << endl;
    return 0;
}

Ten drugi if jest kompletnie poza pętlą.

1
cout<<"Podaj 20 liczb:"<<endl;
for(i=1;i<=5;i++)

No coś tu ewidentnie nie gra.

if(a<5) c=c+1;
else;
u=u+1;

To na pewno nie jest dobrze.

cout<<"Liczby wieksze od 15 to: "<<b<<endl;
cout<<"Liczby spoza zakresu to: "<<u<<endl;
cout<<"Liczby mniejsze od 5 to: "<<c<<endl;

A to wyświetli głupoty – sumę liczb, a nie listę liczb. Do ich przechowania potrzebujesz np. tablicy (lepiej listy), a nie zmiennych liczbowych i ich inkrementacji.

Poza tym zmienne nazywasz w taki sposób, że kompletnie nie wiadomo do czego służą.

0

Inne programy robie tak samo i działają, uzywam tej samej składni itp. A tablic to nie mialem jeszcze na zajeciach i nie wiem w ogóle co to.
I nie chodzi mi o to ze ma podac które liczby sa wieksze tylko ile ich jest.

0

No to teraz zobacz jak wygląda ten kod po sformatowaniu i popraw oczywiste błędy.

0
karmelek123123 napisał(a):

Inne programy robie tak samo i działają, uzywam tej samej składni itp. […]

No to bradzo źle, że w nawyk weszło Ci pisanie kodu w tak niechlujny sposób.

I nie chodzi mi o to ze ma podac które liczby sa wieksze tylko ile ich jest.

No to zmień treść literałów w końcowej części, be te informują o czymś zupełnie innym.

0

Dobra mam coś takiego, ale dalej nalicza liczby prawidłowe (np 50 albo 0) do liczb spoza zakresu mimo że tymi liczbami są te z zakresu 5-15. Zakładam że ja jestem ułomny i nie widzę jakieś prostej analogi, więc proszę poradźcie mi tak żeby działało :).

int main()
{
    int a, b, c, i, u;
    b = 0;
    c = 0;
    u = 0;
    cout << "Podaj 20 liczb:" << endl;
    for (i = 1; i <= 5; i++) {
        cin >> a;
        if (a > 15)
            b = b + 1;
        if (a < 5)
            c = c + 1;
        else
            ;
        u = u + 1;
    }
    cout << "Ilosc liczb wiekszych od 15 to: " << b << endl;
    cout << "Ilosc liczb spoza zakresu to: " << u << endl;
    cout << "Ilosc liczb mniejszych od 5 to: " << c << endl;
    return 0;
}
1

Naprawdę, formatowanie ci nic nie podpowiada? Wywal ten średnik z else'a, u = u + 1 wykonuje się zawsze. Użyj else if zamiast kolejnego ifa, inaczej u = u + 1 będzie dalej wykonywane w niepoprawnych warunkach.

1

Formatuj kod!!!
Liczby większe od 15 zwiększają zmienną a oraz zmienną c.

@kg, wyrzucenie średnika nie wystarczy.

0

no wywale i co mi to daje, dalej jest to samo, co porawda pokminiłem i mam cos takiego, ale zlicza liczby spoza zakresu x2 czyli wychodzi ze jest ich np. 10. (formatuje kod a i tak mi wkleja wyrównany do lewej
int main()
{
int a, b, c, i, u;
b = 0;
c = 0;
u = 0;
cout << "Podaj 20 liczb:" << endl;
for (i = 1; i <= 5; i++) {
cin >> a;
if (a > 15)
b = b + 1;
else
u = u + 1;
if (a < 5)
c = c + 1;
else
u = u + 1;
}
cout << "Ilosc liczb wiekszych od 15 to: " << b << endl;
cout << "Ilosc liczb spoza zakresu to: " << u << endl;
cout << "Ilosc liczb mniejszych od 5 to: " << c << endl;
return 0;
}

0

możecie mi pomóc tak to zrobić żeby działało? i nie umiem wrzucić sformatowanego kodu a to ze liczby wieksze od 15 zwiekszaja dwie zmienne naraz to nieprawda,
sprawdziłem

1

Mi działa

#include <iostream>
using namespace std;

int main()
{
    double a = 0;
    unsigned short b = 0;
    unsigned short c = 0;
    unsigned short u = 0;
    unsigned short i = 0;
    cout << "Podaj 20 liczb:" << '\n';
    for (i = 1; i <= 5; i++) {
        cin >> a;
        if (a > 15)
            b++;
        else if (a < 5)
            c++;
        else
            u++;
    }
    cout << "Ilosc liczb wiekszych od 15 to: " << b << '\n';
    cout << "Ilosc liczb spoza zakresu to: " << u << '\n';
    cout << "Ilosc liczb mniejszych od 5 to: " << c << '\n';
    return 0;
}


1

@karmelek123123: wstawiaj kod w znaczniki kolorujące kod. Tu masz instrukcję obsługi – Formatowanie treści.

cout << "Podaj 20 liczb:" << endl;
 for (i = 1; i <= 5; i++) {

Znowu to samo – masz wczytać 20 liczb, a pętla umożliwia pobranie 5 liczb.

cin >> a;

if(a > 15)
  b = b + 1;
else
  if(a < 5)
    c = c + 1;
  else
    u = u + 1;

Logiczne – skoro liczba nie jest większa od 15 to albo jest mniejsza od 5, albo znajduje się w przedziale. Trzy przypadki, więc wykonanie jednej z trzech inkrementacji.

PS: Zapoznaj się z operatorami ++ oraz +=.

0

Zapewne docelowo chce 20 liczb, a na potrzeby testów sprawdza tylko 5, i nie chciało mu się zmieniać tego couta ;p

0

No jedyny ogarnięty, dzięki gościu :). Ogólnie to nie miałem jeszcze else if i wlasnie tak myslalem ze czegos w tym kodzie brakuje bo w takiej postaci jak ja mam to nie zadziala bo jedno wyklucza drugie. teraz juz wiem jak zrobic dzieki jeszcze raz wszystkim, trzymajcie sie.

0
if (warunek) // pierwszy if zaczyna się od if
{
    instrukcja;
    jakaś_instrukcja2;
}
else if (warunek2)
{
    jakaś_instrukcja;
    jakaś_instrukcja2;
}
else if (warunek3)
    tylko_jedna_instrukcja;
else // można użyć 'else if (warunek4)' zamiast 'else'. Samo else sprawdza wszystkie warunki które nie są warunek, warunek2 lub warunek3
{
    instrukcja;
    jakaś_instrukcja;
}

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