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

Problem z if'em.

Object Storage Arubacloud
0 głosów
253 wizyt
pytanie zadane 9 stycznia 2019 w C i C++ przez KonDZIKs Bywalec (2,770 p.)

Witam. :)
Mam pytanie dlaczego if dochodzi tylko do momentu "Sugerowana ocena to: 2!" jeżeli srednia jest wieksza. Mam tez pytanie czy da sie ten warunek zrobić w jakiś bardziej schludny i krotszy sposob?

Mam też prośbę abyście wtrącili swoje uwagi co w tym kodzie jest nie tak jak można go skrócić co poprawić co jest błędne.

Dziękuję bardzo za odpowiedzi. :)

 

Kod:

#include <iostream>

using namespace std;

int rozmiar = 0;
float* p = new float[rozmiar];

float oceny;
float suma, srednia;

int main()
{
	cout <<"Podaj ilosc ocen: ";
	cin >>rozmiar;
	
	
    for (int i=0;i<rozmiar;i++)
    {
        cout << "Podaj " << i+1 <<" ocene: ";
        cin >> oceny;
        suma += oceny;
        p[i] = oceny;
	}
	
	cout << "Twoje oceny to: ";
	for(int i=0; i<rozmiar; i++)
	{
		cout << p[i] <<", ";
	}
    srednia = suma/rozmiar;
    
    cout <<endl <<"Srednia Twoich ocen to: "<< srednia<<endl ;
    
    if(srednia<1.75)
    {
    	cout<<"Sugerowana ocena to: 1!";
	}
	else if(srednia>1.75)
	{
	cout<<"Sugerowana ocena to: 2!";
	}
	else if (srednia> 2,75)
	{
	cout <<"Sugerowana ocena to: 3";
	}
	else if (srednia> 3,75)
	{
	cout <<"Sugerowana ocena to: 4";
	}
	else
	{
	cout <<"Sugerowana ocena to: 5";
	}
	
    
    return 0;
}

 

komentarz 9 stycznia 2019 przez JAKUBW Nałogowiec (33,470 p.)
(srednia> 2,75)

Przecinek w liczbie w programowaniu pisze się jako kropkę. Tak zapisany jest błędem a kod może ci się nie skompilować.

komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Dziękuje :) zauważyłem po dodaniu postu już poprawione :D
komentarz 9 stycznia 2019 przez monika90 Pasjonat (22,940 p.)
float* p = new float[rozmiar];

rozmiar jest równy zeru, twój program ma niezdefiniowane zachowanie
komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Usunąłem to przyrownanie do zera. Co to znaczy ze ma niezdefiniowane zachowanie?
komentarz 9 stycznia 2019 przez monika90 Pasjonat (22,940 p.)
Nie miałeś tam żadnego przyrównania do zera. Twoja dynamiczna tablica ma rozmiar zero, bo najpierw ją tworzysz, a dopiero później wczytujesz rozmiar.

"ma niezdefiniowane zachowanie", to znaczy że jest błędny.

4 odpowiedzi

0 głosów
odpowiedź 9 stycznia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
Dzieje się tak ponieważ przecież warunek >1.75 jest Twoim ostatnim sprawdzanym warunkiem... każdy następny będzie wyłapany własnie przez ten.
komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Dziękuje za odpowiedź. :)
0 głosów
odpowiedź 9 stycznia 2019 przez RafalS VIP (122,820 p.)

Bo ify musisz robić przedziałami. 5 jest tak samo większe od 1.75 jak 2 czy 3:

else if(srednia>1.75 && srednia <2.75)

I nie ucz sie pracowac na zmiennych globalnych. Deklaruj zmienne w mainie.

komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Dziękuje zrobiłem tak jak Pan napisał i działa :)
0 głosów
odpowiedź 9 stycznia 2019 przez Snejki Stary wyjadacz (14,520 p.)
Nie idzie dalej bo jak masz średnią 5, no to ona jest większa od 1.75, więc nie sprawdza już dalszych warunków.
komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Dziękuje za odpowiedź. :)
–1 głos
odpowiedź 9 stycznia 2019 przez niezalogowany

Sprawdzasz czy średnia > 1.75 więc niezależnie czy średnia = 4 czy średnia = 1.76 warunek jest prawdziwy i nie sprawdza dalej.

proponuję coś takiego:

cout << "Sugerowana ocena to: " << (int)srednia << endl

 

komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Oo :)
Czegos takiego szukałem tylko pytanie czy da się jakoś ustalić ,że ocena zostaje zaokraglona jezeli po przecinku znajduje się 0,75? :)
 

I czy (int) ma sluzyć zaokrągleniu sredniej do liczb calkowitych?
komentarz 9 stycznia 2019 przez niezalogowany
(typ) to rzutowaniu zmienia aktualny tym zmiennej na tą podaną w nawiasie
komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Ok rozumiem. A jeżeli chciałbym aby było to zaokrąglane po tej wartosci 0,75 to w jaki sposób zrobić to krócej? :)
komentarz 9 stycznia 2019 przez niezalogowany
Nie skrócisz
komentarz 9 stycznia 2019 przez KonDZIKs Bywalec (2,770 p.)
Ok dzięki :)

Podobne pytania

+1 głos
2 odpowiedzi 855 wizyt
pytanie zadane 17 czerwca 2019 w Rozwój zawodowy, nauka, praca przez derbool Nowicjusz (130 p.)
0 głosów
4 odpowiedzi 2,038 wizyt
0 głosów
3 odpowiedzi 268 wizyt
pytanie zadane 9 czerwca 2015 w C i C++ przez PapiK Początkujący (420 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 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!

...