czwartek, 4 października 2012

Spotkanie 4

1. Algorytm - w matematyce oraz informatyce skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Algorytm ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego. Badaniem algorytmów zajmuje się algorytmika. Algorytm może zostać zaimplementowany w postaci programu komputerowego.

2. Problem kasjera:
a. opis problemu:
Wydawanie reszty za pomocą najmniejszej liczby monet lub banknotów to nieskończony problem. Zarówno klienci, jaki i sprzedawcy (świadomie bądź nie) dążą zazwyczaj właśnie do minimalizacji tzw. drobniaków. Operowanie mniejszej liczb nominałów to także mniejsze prawdopodobieństwo pomyłki.

b.metod rozwiązania:

-list 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


-schemat blokowy 

-excel 

-turbo pascal(listing) 


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.





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.


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


-viscal basic for application



Brak komentarzy:

Prześlij komentarz