PDA

Zobacz pełną wersję : programowanie



izbi
20-11-12, 10:09
Napisać program w języku c "wydający resztę (pensję, itp.)" za pomocą
najmniejszej liczby banknotów i monet.
(Uwaga! Należy dodać pęlę główna programu. Kolejne nawroty pętli
uzależnić od odpowiedzi na pytanie: "czy kontynuować ? (t\n)",
zadawane użytkownikowi po wyświetleniu wyników. )

thek
20-11-12, 23:08
A co to? Instytucja charytatywna dla leni? Podam algorytm. Pisz sobie kod sam:
1. Liczysz kwotę do oddania:
2. Masz tabelę z nominałami banknotów i monet. Od największej do najmniejszej
3. Bierzesz kwotę i porównujesz ją z aktualnym nominałem tablicy.
4. Jeśli kwota jest mniejsza niż aktualny nominał - olewasz krok 5 i 6.
5. Jeśli kwota jest większa od aktualnego nominału, robisz dzielenie i liczbę monet/banknotów o danym nominale sobie zapisujesz. Obliczasz resztę z dzielenia i ją do następnego kroku jako kwotę wyjściową przyjmujesz.
6. Sprawdzamy czy kwota jest równa 0.
7. Jeśli nie, przesuwamy się na następny nominał i idziemy do kroku 3.
8. Jeśli tak - koniec, czy raczej wyświetlenie wyniku i zapytanie o kontynuację.

Uwaga: normalnie liczby zmiennoprzecinkowe w komputerach są tylko przybliżeniem (liczby będące sumą potęg liczby 2 są idealnie zapisane, ale tylko one) i nie można im do końca ufać przy operacjach. Masz 2 wyjścia: stosujesz BCD albo "zamieniasz" rzeczywiste na całkowite. Ty masz tylko do 2 miejsca po przecinku, więc możesz zapisać kwotę jako liczbę groszy. A więc 1,23 PLN zapisz jako 123 grosze. W ten sposób unikniesz błędów zaokrągleń. Co do pętli to albo to rozwiązujesz etykietą (brzydkie podejście i w C/C++ nie polecane) albo nieskończoną pętlą z warunkiem wyjścia (break dla nieskończonego for lub do-while z odpowiednim warunkiem). Nie piszę więcej. Reszta to Twoja praca.

pepka
21-05-13, 13:19
I co udało się?

marysia
03-07-13, 20:14
Ciekawe, czy autor w ogóle tu zajrzał, eh.