poniedziałek, 7 października 2013

Rozwiązywanie problemów.

1.Lista kroków
2.Schemat blokowy
3.Arkusz kalkulacyjny
4.Visual Basiic
5.Turbo pascal
6.C++

1.Lista kroków


Wykonanie algorytmu opisujemy przedstawiając kolejne kroki tego procesu. W każdym kroku opisujemy zwięźle wykonywaną operację. Istnieją pewne zasady tego opisu, które poznasz analizując kolejne algorytmy. Kroki są numerowane i wykonywane zgodnie z numerami, o ile nie zostanie nakazane inaczej. Przed listą kroków należy umieścić tzw. specyfikację danych. Jest to opis danych wejściowych i wyjściowych algorytmu. Dane wejściowe to informacja, którą musi otrzymać algorytm w celu rozwiązania problemu. Dane wyjściowe to wyniki pracy algorytmu.

Algorytm Euklidesa wyznaczania NWD dwóch liczb a i b

Wejście:
    a,b - liczby naturalne, których NWD oblicza algorytm
Wyjście:
    a lub b - wartość NWD pierwotnych liczb a i b.

Krok 1:Czytaj a,b; wczytujemy dane wejściowe
Krok 2:Jeśli a bto idź do kroku 5; jeśli a = b, to NWD jest a lub b
Krok 3:Jeśli a > bto a ← a - bInaczej b ← b - a; jeśli a jest różne od b, to od większej liczby odejmujemy mniejszą
Krok 4:Idź do kroku 2; wracamy do sprawdzania warunku w kroku 2
Krok 5:Pisz a; wypisujemy NWD
Krok 6:Zakończ; koniec algorytmu



2.Schemat blokowy.
Algorytm opisywany jest w sposób graficzny za pomocą następujących symboli:
Symbol startowy, od którego rozpoczyna się wykonanie algorytmu
Symbol końca algorytmu
Strzałka określa kierunek wykonania. Prowadzi do następnego symbolu w algorytmie.
Symbol przetwarzania danych
Symbol operacji wprowadzania danych lub wyprowadzania wyników.
Symbol decyzyjny. W zależności od wyniku testu idziemy drogą TAK, jeśli test jest spełniony lub drogą NIE, jeśli test nie jest spełniony.
Schemat blokowy również wymaga specyfikacji danych wejściowych i wyjściowych.


3.Arkusz kalkulacyjny.


Rozwiazanie problemu w arkuszu kalkulacyjnym MS Excel444




5)Rozwiazywanie problemu przy pomocy Turbo Pascal (listing)

Sposób 1.

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.



6)Rozwiazywanie problemu przy pomocy 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;
}







Brak komentarzy:

Prześlij komentarz