Nie liczy poprawnie wartości

0

Kod

#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;
}

Mógłby ktoś bardziej kumaty to zobaczyć i stwierdzić czemu nie zlicza właściwej wartości?

1

Nie używaj zmiennych globalnych.
Powiedz jakie jest zadanie.

0

Robię zadanie z kursu p. Mirosława (ostatnie minuty). Program ma zliczać liczyć ile cukierków jest dla każdego z uczniów i ile z tego co zostanie dla Jasia. Na podstawie wprowadzonych wartości w powyższym kursie działa poprawnie, ale jak wpiszę inne to już jest błąd.

0

Przejrzałem filmik i skompilowałem Twój kod. Otrzymujesz takie same wyniki jak autor filmu więc nie bardzo rozumiem o co chodzi?

0

Jak pisałem. Działa prawidłowo tak jak powinien na wartościach wpisanych w kursie, ale już przy innych dzieje się coś nie tak.

0
  1. program liczy dobrze, co najwyżej inaczej niż chciałeś, by liczył.
  2. Opisz, jak chcesz zeby policzył, to podpowiedzą Tobie na co zwrócic uwagę.
0

Trochę dziwnie liczy

Wpisałem 30 uczniów w klasie i 50 cukierków. Wynik to 1 dla ucznia i 21 dla Jasia ;)

5

Ja bym w sumie ostatnią operacje na modulo zamieniła, ale jak kto woli :P

0

Wszystko gra i burczy :P Moze po prostu nie uwzględniłeś, że Jaś jest jednym z uczniów tej klasy i też dostaje cukierki jako uczeń i oddzielnie mu jeszcze zostają lub nie ;).

8
Cornellia napisał(a):

Ja bym w sumie ostatnią operacje na modulo zamieniła, ale jak kto woli :P

Modulo będzie wolniejsze. - _13th_Dragon wczoraj, 21:44

Jak zwykle to samo.

Mówienie "xyz będzie wolniejsze/szybsze" bez sprawdzenia jest nierozsądne. Na x86 modulo będzie szybsze. Dlaczego? Bo instrukcja idiv robi obie rzeczy na raz - dzielenie i modulo. Kompilator nie jest głupi i wykorzystuje obydwa te wyniki.

Kiedy doda się "super sprytną optymalizację" polegającą na zamianie modulo na mnożenie z odejmowaniem, po idiv trzeba jeszcze wykonać te "sprytne dodatki". To z pewnością niczego nie przyśpiesza.

To już po raz któryś pokazuje, że zazwyczaj próba bycia mądrzejszym od kompilatora jest pozbawiona sensu. Kod ma być przede wszystkim czytelny i jasny (pokazywać intencję).

(ASM - http://goo.gl/2xtiA8)

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