poniedziałek, 14 listopada 2016


Jak zacząć?

Należy najpierw wiedzieć ja zacząć samo programowanie, jest to ogromna wiedza w której należy najpierw zacząć od nauki języka którym się interesujemy np: Pascal/Excel/C++
a następnie zacząć naszą pracę!

Analiza problemu - krok 1

Tak jak wspomniałem, najpierw musimy znać problem i go przeanalizować, a mianowicie problemem jest wydawanie reszty. Możemy więc wysnuć takie zdanie: Z podanej sumy pieniędzy, którą musimy wydać klientowi obliczamy jakie banknoty i monety kolejno powinniśmy wydać. 
I to tyle, jeśli chodzi o problem, przejdźmy dalej.

Opis słowny - krok 2

Następną dość ważną rzeczą, jest szybkie, słowne opisanie czynności, które zastosujemy w algorytmie, mogą one wyglądać właśnie tak:
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 kroki2-4

Schemat blokowy - krok 3 

Teraz przyszła pora, na graficzny obraz algorytmu, czyli schemat blokowy. Ja zrobiłem go w ten sposób: 




Tutaj przykład:


Piszemy program - krok 4

Ostatnim, najważniejszym krokiem jest zamiana teorii w program. Możemy wykorzystać do tego celu wiele języków, np. C czy Pascal, ale ja użyję tak jak już powiedziałem języka C++.
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