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

Lekcja 1 z kursy C++, problem z funkcją int

VPS Starter Arubacloud
0 głosów
294 wizyt
pytanie zadane 10 lutego 2016 w C i C++ przez gandzia1518 Nowicjusz (150 p.)
Witam, mam pytanie do pierwszej lekcji kursu >> https://www.youtube.com/watch?v=Kc98tH59A_U . Mianowicie po stworzeniu tego programiku i wpisaniu liczb podanych w kursie zwraca on prawidłowe liczby. Jednak po wpisaniu kolejno ilość uczniów 10, ilość cukierków 20, program zwraca nieprawdiłowe wartości. Zacząłem dzisiaj moją przygodę z C++ dlatego zadaję takie elementarne pytanie.  Poniżej kopia programu.

 

#include <iostream>

using namespace std;

int uczniowie, cukierki, x, y;

int main()
{
    cout << "Ilu uczniow jest w Twojej klasie Jasiu: ";
    cin >> uczniowie;
    cout << "Ile cukierkow kupila mama:";
    cin >> cukierki;

    x = cukierki/(uczniowie-1);
    cout << "Ilosc cukierkow dla ucznia:" << x << endl;

    y = cukierki-x*(uczniowie-1);
    cout << "Cukierki dla Jasia:" << y;

    return 0;
}

2 odpowiedzi

0 głosów
odpowiedź 10 lutego 2016 przez xydden Gaduła (4,480 p.)
wybrane 10 lutego 2016 przez gandzia1518
 
Najlepsza
poniewasz 10/20 = 0,5 a int działa tylko z liczbami całkowitymi zamień int na float i bendzie działać.
komentarz 10 lutego 2016 przez secsec Mądrala (7,250 p.)
Działać będzie, ale nie poprawnie. Z częścią ułamkową, po co komu wiedzieć, że dostanie np. 2,3485 cukierka?? Nie wprowadzaj w błąd jeżeli sam nie wiesz.
komentarz 10 lutego 2016 przez niezalogowany
Dla ciebie może niepoprawnie, ale dla autora tematu może działać poprawnie. Każdy słowo poprawnie rozumie inaczej.
komentarz 10 lutego 2016 przez secsec Mądrala (7,250 p.)
Poprawnie czyli program działa tak jak powinien, a nie zawierać część ułamkową. Chciałbyś w szkole dostać 2 cukierki i 0,50 z trzeciego cukierka? Raczej nie, więc po co zawierać część ułamkową? Lepiej dojść do logicznego wytłumaczenia czemu pokazuje taki, a nie inny wynik i na podstawie tego zrobić coś porządnie, a nie iść na skróty.
komentarz 10 lutego 2016 przez secsec Mądrala (7,250 p.)
I po drugie, po zmianie int na float i wpisaniu takich wartości jak p. Mirosław na YT zamiast zwrócić

- dla każdego ucznia 2

- dla jasia na wieczór 7

na float zwraca

- dla każdego ucznia 2.23333

- dla jasia na wieczór 0

bo float zlicza część ułamkową 'dla każdego ucznia' i zaokrągla i wprowadzonej, początkowej wartości.
0 głosów
odpowiedź 10 lutego 2016 przez secsec Mądrala (7,250 p.)
Ogólnie to ten program dobrze działa, bo weź pod uwagę to, że Jaś jest jednym z uczniów tej klasy. Ale ogólnie wyliczenie tego co zostało dla Jasia powinno odbyć się przez zastosowanie modulo (reszty z dzielenia).

Powiedzmy 25 uczniów i 80 cukierków = ilość cukierków dla ucznia 3, dla jasia 8 bo:

80 : 25 = 3 (dokładnie 3.2)

25 * reszta z dzielenia (powinno być modulo) 0,20 = 5 i jaś jest jednym z uczniów zatem + 3 daje nam 8.

Podobne pytania

0 głosów
1 odpowiedź 185 wizyt
pytanie zadane 28 maja 2019 w C i C++ przez szprej Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 1,228 wizyt
0 głosów
5 odpowiedzi 322 wizyt
pytanie zadane 4 grudnia 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)

93,023 zapytań

141,986 odpowiedzi

321,290 komentarzy

62,370 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...