Skocz do zawartości
bartek5132

Pascal Game

Rekomendowane odpowiedzi

Witam.

Gra polega na tym że 1 osoba daje zadanie napisania programu(i daje program skompilowany), a ta osoba co potrafi go napisać daje w odpowiedzi kod source, jeśli autor zadania zaakceptuje, to zwycięzca zadaje kolejne zadanie.

Program number 1

Napisz program który obliczy nam pole koła, użytkownik podaje promień.Zadbaj o poprawność danych(czyli wprowadzony przez użytkownika promień nie może być mniejszy od zera).

Mój program

http://www.sendspace.pl/file/e2ef33454efd50ff5de3925

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
program polekola;

uses crt;

var

r:string;

rb:integer;

kod:integer;

begin

clrscr;

writeln('Podaj promien®.');

readln®;

val(r,rb,kod);

if kod<>0 then writeln('Promien musi byc liczba!')

else

clrscr;

writeln('Pole kola wynosi: ',pi*sqr(rb):2:2);

readln;

end.

Taka moja uwaga do ciebie, używaj czegoś takiego jak bezpieczne wprowadzanie liczb, bo się program wysypuje jak użytkownik wpisze literę zamiast liczby :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Taka moja uwaga do ciebie, używaj czegoś takiego jak bezpieczne wprowadzanie liczb, bo się program wysypuje jak użytkownik wpisze literę zamiast liczby :)

Zaliczam.

PS. Jako 1 program, nie chciałem dawać czegoś trudnego, a postawiłem na prostote.

Mój kod

program pole_kola;
uses crt;
var r:real;
BEGIN
clrscr;
writeln('Podaj promien(r)');
readln(r);
clrscr;
if(r > 0) then
writeln('Pole kola wynosi : ',3.14*(r*r):0:2)
else writeln('Promien nie moze miec wartosci ',r:0:2);
readln;
END.

teraz twoja kolej :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra, to taki prosty programik.

Program numer 2.

Napisz program, który losuje dwie liczby z zakresu 0-10, a następnie wylicza z nich objętość prostopadłościanu o podstawie kwadratu, gdzie "a" jest krawędzią podstawy, a "b" wysokością.

Miłej zabawy, a oto program w .exe.

http://www.megaupload.com/?d=PLHPAKF7

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

program objetosc_prostopadloscianu;
uses crt;
var a,b:integer;
    klawisz:char;
BEGIN
clrscr;
randomize;
write('Witaj, jestem programem, ktory losuje dwie liczby,od 0 do 10 i ');
writeln('wylicza z nich obietosc prostopadloscianu o podstawie kwadrata.');
writeln('losuje liczby...');
a:=random(10);
b:=random(10);
writeln('Wylosowalem liczby, liczba a <krawedz podstawy> to: ',a,', a liczba b<wysokosc> to: ',b,'.');
writeln('Obliczylem, objetosc wynosi: ',a*a*b);
writeln('Aby zakonczyc program nacisnij ENTER');
repeat
klawisz:=readkey;
until klawisz=Chr(13);
end.

:P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaliczam, mój kod. Twoja kolej :-)

program prostopadloscian;
uses crt;
var
a,b:byte;
begin
clrscr;
randomize;
writeln('Witaj, jestem programem, który losuje dwie liczby, od 0 do 10, i wylicza z nich obiętość prostopadłościanu o podstawie kwadrata.');
writeln('Losuję liczby...');
a:=random(11);
b:=random(11);
writeln('Wylosowałem liczby, liczba a (krawędź podstawy) to: ',a,', a liczba b (wysokość) to: ',b,'.');
writeln('Liczę obiętość.');
writeln('Obliczyłem, objętość wynosi: ',a*a*b);
writeln('Aby zakończyć program nacisnij ENTER');
readln;
end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Program numer 3

Napisz kalkulator operujący na liczbach całkowitych,wykonujący 4 działania matematyczne:

-dodawanie

-odejmowanie

-mnożenie

-dzielenie

Zasada działanie :

1. Użytkownik wpisuje 1 liczbę

2.Użytkownik podaje operator

3.Użytkownik wpisuje 2 liczbę

4.Program sprawdza czy dobrze wpisaliśmy operator matematyczny

5.Jeśli źle wpisaliśmy kończy program, w przeciwnym wypadku oblicza działanie.

6.Program pyta się czy chcemy jeszcze raz obliczyć(t - tak, n - nie).

7.Jeśli użytkownik wpisał t program wraca od początku.

8.W przeciwnym wypadku kończy działanie programu. 

Mój program(exe)

http://www.megaupload.com/?d=YIBSMPOW

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Megaupload zamknięte, także twojej pracy nie widziałem. Miałem chwilę wolną to napisałem ten oto malutki program.

Program kalkulator;
Uses CRT;

Var
        a, b : integer;
        x, Y_N    : char;

Procedure operatorm;
begin

        Writeln('Wynik:');
        
        if x = '+' then
			Writeln(a, ' + ', b, ' = ', a+b);
        if x = '-' then
			Writeln(a, ' - ', b, ' = ', a-b);
        if x = '*' then
			Writeln(a, ' * ', b, ' = ', a*b);
        if (x = '/') or (x = ':') then
			Writeln(a, ' : ', b, ' = ', a div b);
end;

Begin
        ClrScr;
        TextColor(3);
        Writeln('**************************************');
        Writeln('**   Kalkulator v0.1 for pawno.pl   **');
        Writeln('***************************************');
        Writeln;
        TextColor(7);
        REPEAT;
                Writeln;
                Writeln('Podaj a');
                Readln(a);
                TextColor(14);
                Writeln('Podaj operator matematyczny(jakie dzialanie chcesz wykonac?)');
                Writeln('Dostspne: Dodawanie(+), Odejmowanie(-), mnozenie(*), dzielenie(:)');
                TextColor(7);
                Readln(x);
                Writeln('Podaj b: ');
                Readln(b);
                operatorm;
                Writeln;
                TextColor(14);
                Writeln('Nacisnij T(ak), by wykonac kolejne dzialanie lub N(nie) by zamknac program');
                TextColor(7);
        Y_N := UpCase(ReadKey);
        Until NOT (Y_N = 'T');
End.

Jeśli wszystko ok to kolejne zadanie...

Napisz program z użyciem procedury, która obliczy silnie z podanej liczby. Po obliczeniu program ma zapytać, czy ma zakończyć działanie czy działać od początku.

exe: http://www.sendspace.com/file/ofhiv7

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mój kodzik:

Program Obliczanie_silni;

Uses CRT;

Var
A, B, C, D: integer;
Next : char;

Procedure Factorial;
BEGIN
B := 1;
for C:=1 to A do B := B*C;

WriteLn('Silnia liczby ', A, ' wynosi ', B, '.');
Writeln;
Writeln('Klawisz Y - zacznij od poczatku, inny klawisz - zakonczenie programu.');
END;

BEGIN
ClrScr;
WriteLn('======================================');
WriteLn('====  Obliczanie silni by ProfeQ  ====');
WriteLn('====    Stworzone dla pawno.pl    ====');
WriteLn('======================================');
WriteLn;
Repeat;

WriteLn;
WriteLn('Podaj liczbe, ktorej silnie chcesz obliczyc.');
ReadLn(A);
Factorial;
Next := UpCase(ReadKey);
Until NOT (Next = 'Y');
END.[/code]

Czekam na akceptację, trzeba rozruszać tę gierkę 8)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No to ja też dam.

Dopiero zauważyłem, ze jest nowy program. A ja dałem na kalkulator...Zaraz napisze nowy.

program cos;
uses crt;
var
a,b:integer;
koniec:char;


{--------------------------}

Function dodaj (a:integer;b:integer):integer;
begin
dodaj:=a+b;
end;
{--------------------------}
Function odejmij (a:integer;b:integer):integer;
begin
odejmij:=a-b;
end;
{--------------------------}
Function iloczyn (a:integer;b:integer):integer;
begin
iloczyn:=a*b;
end;
{--------------------------}
Function iloraz (a:integer;b:integer):real;
begin
if(b=0)then
write('Nie mozna dzielic przez 0');

iloraz:=a/b;
end;
{--------------------------}
function menu:char;
var
liczba:integer;
liczba2:integer;
wybor:char;
begin
writeln('Program kalkulator.');
writeln;
write('**********************');
writeln;
writeln('1 - dodawanie');
writeln('2 - odejmowanie');
writeln('3 - mnozenie');
writeln('4 - dzielenie');
writeln('5 - Koniec Programu');
write('**********************');
writeln;
write('Podaj pierwsza liczbe: ');
readln(liczba);
write('Podaj druga liczbe: ');
readln(liczba2);
writeln;
writeln('Wybierz dziaanie: ');
readln(wybor);

if (wybor='1') then
writeln('Wynik wynosi: ',dodaj(liczba,liczba2))
else if (wybor='2') then
writeln('Wynik wynosi: ',odejmij(liczba,liczba2))
else if (wybor='3') then
writeln('Wynik wynosi: ',iloczyn(liczba,liczba2))
else if (wybor='4') then
writeln('Wynik wynosi: ',iloraz(liczba,liczba2))
else if (wybor='5') then
writeln('Koncze program')
else
writeln('Niewlasciwe dzialanie');

menu:=wybor;

end;
{--------------------------}


begin
clrscr;

repeat


koniec:=menu;

until(koniec='5');

readln;
end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Profek - akceptuje, dobrze program działa. Teraz Ty wymyślasz zadanko.(Kod swój wrzucę jak będę na swoim kompie)

//UP: Używaj klawisza spacji, nie jest to oczywiście obowiązkowe ale warto dbać o przejrzystość kodu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Program numer 5

To teraz coś banalnego dla rozruszania tematu.

- Stwórz program, który wyświetli kolejno liczby od 0 do 10 jedna pod drugą, następnie zamknie się automatycznie po 5 sekundach od rozpoczęcia pracy. Warunki: użycie procedury i pętli for.

Plik exe w załączniku.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

program kle;
uses crt;
var i: byte;

begin
        for i := 0 to 10 do writeln(i);
        delay(5000);
end.

Nie wiem do czego można by tu użyć procedury.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ano do wyliczenia dziesięciu liczb. Umieszczasz kod wyliczający liczby we własnej procedurze, a nie bezpośrednio w głównym bloku kodu ::) Czekam na poprawiony kod.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
program kle;
uses crt;
var i: byte;

procedure wylicz_10_liczb_bo_bezposrenio_nie_moge;
begin
        for i := 0 to 10 do writeln(i);
end;

begin
       wylicz_10_liczb_bo_bezposrenio_nie_moge;
        delay(5000);
end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No i bardzo pięknie, zaliczam :D Teraz Twoja kolejka, a oto mój kod:

Program Wyliczanie_liczb;

Uses CRT;

Var
A: integer;

Procedure Calculate;
BEGIN
FOR A := 0 to 10 do
  WriteLn(A);
END;

BEGIN
ClrScr;
WriteLn('======================================');
WriteLn('====  Wyliczanie liczb by ProfeQ  ====');
WriteLn('====    Stworzone dla pawno.pl    ====');
WriteLn('======================================');
WriteLn;
Calculate;
WriteLn;
WriteLn('====    Program zostanie zamkniety za 5 sekund.    ====');
Delay(5000);
END.[/code]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No to proszę, teraz moja kolejka jak mniemam :D

Program numer 5

Prawdopodobnie wszyscy znają "gierkę", program, który losuje liczbę od 0 do 100000 i musimy w tą liczbę trafić. Tym razem będzie inaczej.

Program losuje liczbę z takiego zakresu, ale tym razem to funkcja losująca będzie w to grać :D

Musisz napisać program, który używając funkcji losującej trafi najszybciej w tą liczbę (na pewno nie chodzi tu o trafienie random(100000) = random(100000) xD). W moim przypadku trafia w mniej niż 40 próbach. Program w załączniku jak ktoś nie zrozumiał.

A i jeszcze jedno: trzeba zrobić podobnie jak u mnie:

[random 1]: liczba

[random 2 ( #proba )]: liczba

[random 2 ( #proba )]: liczba

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

program CeKa;

        uses crt;

        var start, koniec, losowanie, liczba, count: integer;

        begin

             koniec := 10000;

             start := 0;

             count := 1;

             liczba := random(koniec);

             losowanie := random((koniec)-(start))+(start);

             writeln('-----------------------------------');

             writeln('[radnom 1]: ', liczba);

             while liczba <> losowanie do

             begin

                  if losowanie < liczba then

                  begin

                       writeln('[random 2 (#proba ', count,']: ', losowanie, ' Liczba za mala!');

                       start := losowanie;

                  end;

                  if losowanie > liczba then

                  begin

                       writeln('[random 2 (#proba ', count,']: ', losowanie, ' Liczba za duza!');

                       koniec := losowanie;

                  end;

                  Inc(count);


                  losowanie := random((koniec)-(start))+(start);

             end;

             writeln('[Wylosowano (#', count, ' prob!)] ', losowanie, '=', liczba);


             Delay(50000);

        end.

Może mało optymalne i badziewnie napisane, ale to jest mój pierwszy "program" w pascalu. ^^

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×