dyschemist
Zespolony z forum
Dołączył: 21 Gru 2006
Posty: 149
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Z J.J. Portu
|
Wysłany: Nie 10:05, 28 Sty 2007 Temat postu: "Księgowość" |
|
|
With Ada.Text_Io;
Use Ada.Text_Io;
With Ada.Integer_Text_Io;
Use Ada.Integer_Text_Io;
With Ada.Characters.Handling;
Use Ada.Characters.Handling;
With Ada.Calendar;
Use Ada.Calendar;
Procedure Ksiegowosc Is
Type Pieniadze Is Array (Positive Range 1 .. 14) Of Integer;
Zloto : Pieniadze;
Type Zmiany Is Array (Positive Range 1 .. 100) Of Integer;
Zmiana : Zmiany;
File : File_Type;
Gracz : String (1 .. 7) := (1 .. 7 => ' ');
Liczba : Integer := 0;
Ilosc_Miast : Integer;
Licznik : Integer;
Zmieniaj : Boolean;
Znak : Character := 'a';
Function Suma_Zmian (
Zmiana : In Zmiany;
Licznik : In Integer;
Wczesniej : Integer)
Return Integer Is
Suma : Integer := 0;
Begin
Suma := Wczesniej;
For I In 1..Licznik Loop
Suma :=Suma+Zmiana(I);
End Loop;
Return Suma;
End Suma_Zmian;
Procedure Wczytaj_Liczbe (
File : In File_Type;
Dlugosc : In Positive;
Liczba : Out Integer) Is
Litera : Character := 'a';
Ujemna : Boolean := False;
Begin
Liczba := 0;
For I In 1..Dlugosc Loop
Get(File,Litera);
If Litera='-' Then
Ujemna:=True;
End If;
If Is_Digit(Litera) Then
Liczba := (Character'Pos(Litera)-48)*(10**(Dlugosc-I))+Liczba;
End If;
End Loop;
If Ujemna Then
Liczba:=-Liczba;
End If;
End Wczytaj_Liczbe;
Procedure Imie_Gracza (
Numer : In Integer;
Imie : Out String) Is
Begin
Case Numer Is
When 1 =>
Imie := "Marek ";
When 2 =>
Imie := "Meggus ";
When 3 =>
Imie := "Tweety ";
When 4 =>
Imie := "Malin ";
When 5 =>
Imie := "Asia ";
When 6 =>
Imie := "Ula ";
When 7 =>
Imie := "Plichu ";
When 8 =>
Imie := "Mirek ";
When 9 =>
Imie := "Zelek ";
When 10 =>
Imie := "Crusher";
When 11 =>
Imie := "Psojka ";
When 12 =>
Imie := "Piotrek";
When 13 =>
Imie := "Ania ";
When 14 =>
Imie := "Taj Kun";
When Others =>
Imie := "Radzio?";
End Case;
End Imie_Gracza;
Begin
-----------------------------wczytanie---------------------
Open(File,In_File,"ksiegowosc.txt");
For I In 1..14 Loop
Wczytaj_Liczbe(File,10,Zloto(I));
End Loop;
Close(File);
-------------------------poczatek programu------------------------
Loop
Put_Line("----------------------------------------------------------------------------------------");
Put_Line("Wybierz gracza");
---------------------wypisanie graczy i ich zapasow-----------
For I In 1..14 Loop
Put(I,2);
Put(" - ");
Imie_Gracza(I,Gracz);
Put(Gracz);
Put(Zloto(I),10);
New_Line;
End Loop;
---------------------wybor gracza-----------------------------
Liczba:=0;
While Not (Liczba In 1..14) Loop
Put_Line("Podaj liczbe 1 do 14");
Get(Liczba);
Imie_Gracza(Liczba,Gracz);
End Loop;
---------------------podanie liczby miast---------------------
Ilosc_Miast:=-1;
While Not (Ilosc_Miast>=0) Loop
Put("Podaj ilosc miast:");
Get(Ilosc_Miast);
End Loop;
------------------wprowadzanie zmian--------------------------
For I In 1..100 Loop
Zmiana(I):=0;
End Loop;
For I In 1..Ilosc_Miast Loop
Put_Line("Podaj dochod z prowincji");
Get(Zmiana(2*I-1));
Put_Line("Podaj dochod z miasta");
Get(Zmiana(2*I));
End Loop;
------------------zmiany dodatkowe----------------------------
Zmieniaj := True;
Licznik :=Ilosc_Miast*2;
While Zmieniaj Loop
Put_Line("Wcisnij q jesli nie chcesz już nic dodawac , lub cos innego by to zrobić");
Get_Immediate(Znak);
If To_Lower(Znak) ='q' Then
Zmieniaj:=False;
Else
Licznik:=Licznik+1;
Put_Line("Jaka ilosc zlota chcesz dodac");
Get(Zmiana(Licznik));
End If;
End Loop;
-----------------wypisanie zmian-----------------------------
Put(Gracz&" ma obecnie ");
Put(Zloto(Liczba));
Put(" zlota");
New_Line;
For I In 1..Ilosc_Miast Loop
Put("Miasto ");
Put(I,2);
Put("dodano z prowincji ");
Put(Zmiana(2*I-1),6);
Put("zB, oraz z miasta");
Put(Zmiana(2*I),6);
Put("zl");
New_Line;
End Loop;
If 2*Ilosc_Miast < Licznik Then
For I In (2*Ilosc_Miast+1)..Licznik Loop
Put("Dodatkowa zmiana -");
Put(Zmiana(I),6);
Put("zl");
New_Line;
End Loop;
End If;
Put(Gracz&" bedzie mial ");
Put(Suma_Zmian(Zmiana,Licznik,Zloto(Liczba)),10);
Put(" zlota");
New_Line;
----------------------zapis zmian-------------------
Znak:='a';
Put_Line("Czy powyzszy wynik jest poprawny i ma zostac zapisany");
While To_Lower(Znak)/='t' And To_Lower(Znak)/='n' Loop
Put_Line("T-tak, N - nie");
Get(Znak);
End Loop;
If To_Lower(Znak)='t' Then
Zloto(Liczba):=Suma_Zmian(Zmiana,Licznik,Zloto(Liczba));
End If;
Znak:='a';
Put_Line("Czy dokonales już wszystkich zmian u graczy, ktorych chciales");
Put_Line("Jesli tak, wcisnij q by zakonczyc program");
Get_Immediate(Znak);
If To_Lower(Znak) = 'q' Then
Exit;
Else
New_Line(2);
End If;
End Loop;
Open(File,Out_File,"ksiegowosc.txt");
Set_Line_Length(File,10);
For I In 1..14 Loop
Put(File,Zloto(I),10);
End Loop;
Close(File);
--------------datowanie-------------------
Zegar:=Clock;
Declare
Dzien : Integer := Day (Zegar);
Miesiac : Integer := Month (Zegar);
Data : String (1 .. 5) := (1 .. 5 => '_');
Begin
Data(1):=Character'Val(48+(Dzien/10));
Data(2):=Character'Val(48+Dzien-10*(Dzien/10));
Data(3):='_';
Dasta(4):=Character'Val(48+(Miesiac/10));
Data(5):=Character'Val(48+Miesiac-10*(Miesiac/10));
Create(File,Out_File,"ksiegowosc_zapas_"&Data&".txt");
Set_Line_Length(File,10);
For I In 1..14 Loop
Put(File,Zloto(I),10);
End Loop;
End;
Close(File);
Put_Line("Dane zostaly zapisane do pliku, program moze zakonczyc swoje dzialanie");
Delay 3.0;
Exception
When Others =>
Put("Wystapil blad programu i zaraz program zostanie zamkniety");
delay 3.0;
End Ksiegowosc;
Post został pochwalony 0 razy
Ostatnio zmieniony przez dyschemist dnia Nie 11:43, 28 Sty 2007, w całości zmieniany 1 raz
|
|