sobota, 5 listopada 2016

Rozwiązywanie problemów



Wydawanie reszty



1. Sformułowanie problemu
2. Rozwiązywanie- opis słowny
Opis słowny algorytmu wydawania reszty. 
Dane:
Kwota pieniędzy do wydania, nominały banknotów i bilonu uporządkowane malejąco
Wyniki: Ilość poszczególnych nominałów banknotów i bilonu
Krok 1: Ustalenie wartości początkowych 
Krok 2: Sprawdzamy, ile razy najwyższy nominał mieści się w kwocie do wydania
Krok 3: Obliczamy resztę do wydania: poprzednia kwota - obliczona ilość * nominał
Krok 4: Przechodzimy do niższego nominału 

Krok 5: Jeśli reszta do wydania = 0 [stop] w przeciwnym razie powtarzamy kroki 2 - 4



Schematy blokowe














Realizacja

Ms Excel:



C++:

//Wydawanie reszty, C++ 

 #include <iostream> 
#include <stdlib.h> 

 using namespace std; 

 int main(int argc, char *argv[]) 
{
 //tablica dostepnych nominalow
 int N[8]={200, 100, 50, 20, 10, 5, 2, 1}; 
 int R,P, i;

 cout << "Podaj reszte do wyplacenia: ";
 cin >> R;

 i=0;
while (R>0) //dopoki nie wydano calej reszty 
 {
 if (R >= N[i]) //sprawdz czy mozna wydac danym nominalem
 { 
 P=R / N[i]; //ile razy wydac dany nominal
 R=R-(N[i]*P);  
//zmniejsz reszte o wydany nominal cout << N[i] << " x " << P << endl;
 //wypisz wynik } i++; //rozpatrz kolejny nominal 
 }

 system("PAUSE");
 return 0;
 }

Turbo Pascal:

program wydawanie_reszty;
 uses crt; var reszta : longint;
 begin
 clrscr;
 writeln('podaj kwote: ');
 readln(reszta);
 writeln; writeln(reszta div 200, ' banknotow 200zl');
 reszta:=reszta mod 200;
 writeln(reszta div 100, ' banknotow 100zl');
 reszta:=reszta mod 100;
 writeln(reszta div 50, ' banknotow 50zl');
 reszta:=reszta mod 50; writeln(reszta div 20, ' banknotow 20zl');
 reszta:=reszta mod 20;
 writeln(reszta div 10, ' banknotow 10zl');
 reszta:=reszta mod 10; writeln(reszta div 5, ' monet 5zl');
 reszta:=reszta mod 5; writeln(reszta div 2, ' monet 2 zl');
 reszta:=reszta mod 2;
 writeln(reszta, ' monet 1 zl');
 repeat until keypressed;
 end.

Turbo Pascal v.2:

program Reszta; {obliczenia w petli WHILE}
uses crt; const N: Array [1..8] of integer = (200, 100, 50, 20, 10, 5, 2, 1);
var i,P,R: longint;
begin clrscr;
Write('Podaj reszte do wyplacenia: ');
ReadLn(R);
i:=1;
while (R>0) do {dopoki nie wydano calej reszty}
begin
if R>= N[i] then {sprawdz czy mozna wydac danym nominalem}
begin
P:= R div N[i]; {ile razy wydac dany nominal}
R:= R - (P*N[i]); {zmniejsz reszte o wydany nominal}
WriteLn(N[i], ' x ', P); {wypisz wynik} 
end; inc(i);
{rozpatrz kolejny nominal} 
end;
repeat until keypressed;
end.



VBA:

Brak komentarzy:

Prześlij komentarz