pascal kontrola

Programovacie jazyky, rady, poradňa...
branec3
Amateur
Amateur
Príspevky: 22
Registrovaný: 08 máj 2009, 22:17

pascal kontrola

Príspevok od používateľa branec3 »

Priklad 1

Kód: Vybrať všetko

program p1;
uses crt;
var A,Moc: integer;
begin;
clrscr;
randomize;
repeat
A:=random(50);
Moc:=sqr(A);
writeln(A,' - ',Moc);
until A=0;
readln;
end.
Príklad 2:

Kód: Vybrať všetko

program p2;
uses crt;
var  I,N,S:integer;
     A:array[1..10000] of integer;
     P:real;
begin
clrscr;
randomize;
writeln('Zadaj kolko cisel mam vygenerovat, minimalna hodnota, ktoru mozes zadat je 2');
readln(N);
writeln('Nahodne cisla su: ');
For I:=1 to N do
  begin
    A[I]:=random(10)+1;
    write (A[I]:5);
  end;
writeln;
For I:=1 to N do
    S:=S+A[I];
P:=S/N;
writeln ('Priemer nahodnych cisel je ',P:3:2);
readln;
end.
Príklad 3:

Kód: Vybrať všetko

program p3;
uses crt;
var  Max,Min,I:integer; A:array[1..10] of integer;
begin
clrscr;
randomize;
Max:=0;
Min:=101;
writeln('Nahodne cisla su: ');
For I:=1 to 10 do
  begin
    A[I]:=random(100);
    write(A[I]:5);
  end;
writeln;
For I:=1 to 10 do
  begin
   If A[I]>Max then Max:=A[I];
   If A[I]<Min then Min:=A[I];
  end;
writeln ('Najvecsie cislo je ',Max,' a najmensie cislo je ',Min);
readln;
end.
Priklad 4:

Kód: Vybrať všetko

program p4;
uses crt;
var I,P,A:integer;
begin
clrscr;
randomize;
repeat
    A:=random(100);
    write(A:5);
    P:=P+1;
until A=0;
writeln;
writeln('Pocet cisel ay kym nevygenerovalo nulu je ',P-1,' .');
readln;
end.
Priklad 5:

Kód: Vybrať všetko

program p5;
uses crt;
var I,P,S,A:integer;
begin
clrscr;
randomize;
repeat
    A:=random(20);
    write(A:5);
    P:=P+1;
    S:=S+A;
until (S=1000) or (S>1000);
writeln;
writeln('Sucet vybranych cisel je ',S,' a ich pocet je ',P,' .');
readln;
end.
Priklad 6:

Kód: Vybrať všetko

program p6;
uses crt;
var I,S,N:integer;
    P:real;
    A:array[1..10000] of integer;
begin
clrscr;
randomize;
writeln('Kolko chces nahodnych cisel?');
readln(N);
writeln('Nahodne cisla su:');
For I:=1 to N do
    begin
     A[I]:=random(100)+1;
     write(A[I]:5);
     S:=S+A[I];
    end;
P:=S/N;
writeln;
writeln('Sucet vybranych cisel je ',S,' a ich priemer je ',P:3:2,' .');
readln;
end.
Príklad 7:

Kód: Vybrať všetko

program p7;
uses crt;
var I,S,S1,P,P1:integer;
    Priemer1,Priemer2:real;
    A:array[1..100] of integer;
begin
clrscr;
randomize;
writeln('Nahodnych 100 cisel:');
For I:=1 to 100 do
    begin
     A[I]:=random(100);
     write(A[I]:5);
    end;
For I:=1 to 100 do
    begin
     If (A[I]>20) and (A[I]<50) then
                                  begin
                                   P:=P+1;
                                   S:=S+A[I];
                                 end
                                else
                                 begin
                                   P1:=P1+1;
                                   S1:=S1+A[I];
                                 end;
     end;
Priemer1:=S/P;
Priemer2:=S1/P;
writeln;
writeln('Sucet cisel z intervalu 20-50 je ',S,' a ich priemer je ',Priemer1:3:2,' a ich pocet je ',P,' .');
writeln('Sucet cisel mimo intervalu 20-50 je ',S1,' a ich priemer je ',Priemer2:3:2,' a ich pocet je ',P1,' .');
readln;
end.


Priklad 10:

Kód: Vybrať všetko

program p10;
uses crt;
var A,B,C,Sodmo:integer;X1,X2,X3:real;
begin
clrscr;
writeln('Zadaj cleny(koeficienty) a,b,c z kvadratickej rovnice.');
readln (A,B,C);
clrscr;
writeln(A,'x2 + ',B,'x + ',C, '= 0');
Sodmo:=sqr(B)-(4*A*C);
If Sodmo<0 then writeln ('Kvadraticka rovnica nema riesenie.')
                   else
                        begin
                         If Sodmo=0 then
                                       begin
                                        X3:=-B/(2*A);
                                        writeln('Rovnica ma dvojnasobny koren: {',X3:3:2,'}.');
                                       end
                                   else
                                       begin
                                        X1:=(-B+(sqrt(Sodmo)))/(2*A);
                                        X2:=(-B-(sqrt(Sodmo)))/(2*A);
                                        writeln('Korene rovnice su: {',X1:3:2,', ',X2:3:2,'}.');
                                       end;
                        end;
readln;
end.
Priklad 9:

Kód: Vybrať všetko

program p9;
uses crt;
var A:array[1..10] of integer;
    D,I:integer;B:real;
begin
clrscr;
randomize;
A[1]:=random(20);
A[2]:=random(20);
D:=A[2]-A[1];
For I:=2 to 10 do
   A[I+1]:=A[1]+I*D;
for I:=1 to 10 do
   begin
    B:=I/2*(A[1]+A[I]);
    write(A[I]:3);
   end;
writeln;
write('Sucet prvych 10-tich clenov tejto aritmetickej postupnosti je: ',B:3:2,' .');
readln;
end.

V zadaní nieje či to má robiť zostupne alebo vzostupne tak keď vijde diferencia záporná tak to ide aj do záporu. Dá sa to upraviť aby to šlo len nahor, ak chceš.

Príklad 8:

Kód: Vybrať všetko

program p8;
uses crt;
var A:array[1..10] of real;
    I:integer;Q,S:real;
begin
clrscr;
randomize;
A[1]:=random(20);
while A[1]>A[2] do
A[2]:=random(20);
Q:=A[2]/A[1];
For I:=1 to 10 do
A[3]:=A[2]*Q;
A[4]:=A[3]*Q;
A[5]:=A[4]*Q;
A[6]:=A[5]*Q;
A[7]:=A[6]*Q;
A[8]:=A[7]*Q;
A[9]:=A[8]*Q;
A[10]:=A[9]*Q;
for I:=1 to 10 do
   begin
      write(A[I]:3:3,' ,');
      S:=A[I]+S;
   end;
writeln;
write('Sucet prvych 10-tich clenov tejto geometrickej postupnosti je: ',S:3:3,'.');
readln;
end.
tu je zadanie lebo nejde pridat do prilohy
http://img188.imageshack.us/my.php?imag ... 900000.jpg
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

Priklad1: Mas tam generovat cisla od 0-50, ale ty generujes iba od 0-49, takze Random(51), premennu Moc ani nemusis pouzit, staci dat:

Kód: Vybrať všetko

writeln(A,' - ',sqr(A));
Priklad2:
Namiesto celeho toho obrovskehopola sa da pouzit jedna premenna a ten priemer zase mozes vypocitat priamo vo vypise...

Kód: Vybrať všetko

program p2;
uses crt;
var  I,N,S,P:integer;
begin
clrscr;
randomize;
writeln('Zadaj kolko cisel mam vygenerovat, minimalna hodnota, ktoru mozes zadat je 2');
readln(N);
writeln('Nahodne cisla su: ');
For I:=1 to N do
  begin
    P:=random(10)+1;
    S:=S+P;
    write (P:5);
  end;
writeln;
writeln ('Priemer nahodnych cisel je ',S/N:3:2);
readln;
end.
Priklad3:
Praktickejsie je do max a min ukladat iba poradie daneho prvku z pola, ako teraz to az taky rozdiel nespravi, ale keby sipracoval s nejakymi vacsimi prvkami(zaznamy), alebo si musel pamatat aj ktory prvok to bol, tak je to lepsie. A takto ani nemussi nastavit velkost maximalneho a minimalneho prvku na nejaku specialnu hodnotu...

Kód: Vybrať všetko

program p3;
uses crt;
var  Max,Min,I:integer; A:array[0..9] of integer;
begin
clrscr;
randomize;
Max:=0;
Min:=0;
writeln('Nahodne cisla su: ');
For I:=0 to 9 do
  begin
    A[I]:=random(100);
    write(A[I]:5);
  end;
writeln;
For I:=0 to 9 do
  begin
   If A[I]>A[Max] then Max:=I;
   If A[I]<A[Min] then Min:=I;
  end;
writeln ('Najvecsie cislo je ',A[Max],' a najmensie cislo je ',A[Min]);
readln;
end.
alebo by sa to dalo riesit tvojim sposobom, ale zase by sa dalo odstranit pole...

Priklad4: Mas tam v deklaracii premennu I, ktoru vobec nepouzivas a podla toho zadania by to mohlo byt chapane aj tak, ze tu nulu uz nevypises, ale to uz je detail...

Priklad5: tato podmienka:

Kód: Vybrať všetko

until (S=1000) or (S>1000); 
sa da zapisat aj jednoduchsie..t.j.

Kód: Vybrať všetko

until (S>=1000) 
Priklad6: To iste co v priklade2

Priklad7:

Pole sa da odstranit, hodit do jedneho cyklu, na konci sidruhy priemer pocital s poctom prvych ciselavo vypise tych druhych cisel si sucet nemal vypisat.

Kód: Vybrať všetko

program p7;
uses crt;
var I,S,S1,P,P1:integer;
    A:integer;
begin
clrscr;
randomize;
writeln('Nahodnych 100 cisel:');
For I:=1 to 100 do
    begin
     A:=random(100);
     If (A>20) and (A<50) then
                                  begin
                                   P:=P+1;
                                   S:=S+A;
                                   write(A:5);
                                 end
                                else
                                 begin
                                   P1:=P1+1;
                                   S1:=S1+A;
                                 end;
    end;
writeln;
writeln('Sucet cisel z intervalu 20-50 je ',S,' a ich priemer je ',S/P:3:2,' a ich pocet je ',P,' .');
writeln('Mimo intervalu 20-50 je ich priemer ',S1/P1:3:2,' a ich pocet je ',P1,' .');
readln;
end.
Priklad8: Bud generuj real alebo vypisuj celeciselne. Random(20)->0-19,cize Random(20)+1 a tie jednotlive prvky mozes pocitat v cykle a nemusis ich pocitat kazdy osobitne.

Kód: Vybrať všetko

program p8;
uses crt;
var A:array[1..10] of real;
    I:integer;Q,S:real;
begin
clrscr;
randomize;
A[1]:=(random(2000)+1)/100;
while A[1]>A[2] do
A[2]:=(random(2000)+1)/100;
Q:=A[2]/A[1];
For I:=3 to 10 do
A[I]:=A[I-1]*Q;
for I:=1 to 10 do
   begin
      write(A[I]:3:3,' ,');
      S:=A[I]+S;
   end;
writeln;
write('Sucet prvych 10-tich clenov tejto geometrickej postupnosti je: ',S:3:3,'.');
readln;
end.
Priklad9: Znovu to generovanie si pozri.

Priklad10: koeficienty su urcene nahodnym vyberom, cize asi generovane a nie nacitane ;)


To je asi tak vsetko aj ked je mozne, ze som daco prehliadol, minimalne tie Randomy si este popozeraj, tam si mal chyb dost. A niekde by mozno nebolo zle osetrit nech vypisuje ked zadas nieco ine ako by si ma(v tych prikladoch, kde potrebujes vstup od uzivatela)

//este co ma napadlo, tak ak cches trosku skratit program tak abynemuseli byt taketo riadky:

Kód: Vybrať všetko

writeln;
writeln('Sucet vybranych cisel je ',S,' a ich priemer je ',P:3:2,' .'); 
sa da pouzit aj

Kód: Vybrať všetko

writeln(#10#13'Sucet vybranych cisel je ',S,' a ich priemer je ',P:3:2,' .'); 
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Príspevok od používateľa mirak2 »

v 3. priklade je chybicka mensia:
Max:=0;
Min:=0;
ak das min 0 a budes kontrolovat minimum tak nulove minimum bude stale mensie ako generovane cislo...minimum treba nastavit na maximalne cislo ktore sa da vygenerovat..v tomto pripade na 99

edit: jaj takto...to boli indexy...potom hej, mea culpa
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

Mal som tam mensiu chybu ale ta 0 tam nastavena moze byt...lebo porovnavam A>A[min], kde min je nastavene na 0 takze porovnavam A[0]>A[0]. V tomto pripade podmienkaneni splnena. potom A[1]>A[0]..a uz porovnavanormalne. takze tam tych 99nastavenych mat nemusim ;)
Napísať odpoveď