1. Algorytm - jest to skończony ciąg jasno określonych czynności niezbędnych do wykonania pewnego rodzaju zadań. Ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego. Jest to słowo powszechnie używane w informatyce, a także matematyce. Za pomocą algorytmów są tworzone m.in. programy komputerowe.
2.PROBLEM KASJERA:
a) opis problemu - często robiąc zakupy w różnego rodzaju sklepach możemy zaobserwować, iż kasjer pracujący na kasie nie ma nam jak wydać reszty. Najczęściej wynika to z tego, iż kasjer nieumiejętnie posłużył się banknotami, wydając banknoty o niskim nominale, gdy miał możliwość wydania banknotów o wysokim nominale. Aby uniknąć tego rodzaju sytuacji kasjer powinien kierować się algorytmem, polegającym na wydawaniu jak najmniejszej ilości banknotów lub monet.
b) Metody rozwiązania
- rozwiązanie za pomocą listy kroków
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
- rozwiązanie za pomocą schematów blokowych
- rozwiązanie w programie EXEL
- rozwiązanie za pomocą VBA i TURBO PASCAL listing
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;beginclrscr;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.
2.
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.beginclrscr; 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.
-oraz za pomocą C++ listing
//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;
}