Zadanie z Pascala

Dane jest ziarno generatora z oraz liczba całkowita n. Wygeneruj tablicę A zawierającą n liczb całkowitych (nie wolno używać Randomize):

ReadLn(RandSeed, n);
For i:=1 To n Do A[i]:=Random(100);

Następnie oblicz:

- sumę wyrazów parzystych,
- sumę wyrazów nieparzystych,
- sumę wyrazów o parzystych numerach (A[2]+A[4]+A[6]+...+A[1000]),
- sumę wyrazów o nieparzystych numerach,
- sumę wyrazów o numerach od 1 do n Div 2,
- sumę wyrazów o numerach od (n Div 2)+1 do n.

Wejście

Pierwszy wiersz wejścia zawiera liczbę całkowitą z z zakresu 1..50000 oraz liczbę całkowitą n z zakresu 1..1000.
Wyjście

W pierwszym wyjścia należy zapisać wartości dwóch pierwszych sum oddzielone pojedynczą spacją, w wierszu drugim wartości kolejych dwóch sum i w wierszu trzecim wartości sumy piątej i szóstej. Wiersz czwarty powinien zawierać największą z wszystkich sum.
Jeżeli n<10, to w wierszu piątym należy wypisać tablicę A.
Przykład

Dla pliku wejściowego:

39815 1

poprawną odpowiedzią jest plik wynikowy:

0 85
0 85
0 85
85
85

1

Odpowiedzi

Najlepsza Odpowiedź!
2010-01-23T02:06:18+01:00
Zdaje się, że o coś takiego chodziło jak poniżej.
P.S. na przyszłość podawać też kompilator jaki bo musiałem zgadnąć ze chodziło o Free Pascal'a.

program cos;
uses crt;
var z : Word;
n,i : Integer;
A : array[1..1000] of Byte;
SumParz, SumNparz, SumParzN, SumNparzN, SumN1, SumN2, max : Word;

begin
clrscr;
SumNparz:=0;
SumParz:=0;
writeln('Podaj ziarno generatora oraz n:');
readln(z, n);
RandSeed := z;
for i:=1 to n do
begin
A[i]:=Random(100);

if (A[i] mod 2 = 0) then
SumParz := SumParz + A[i]
else
SumNparz := SumNparz + A[i];

if (i mod 2 = 0) then
SumParzN := SumParzN + A[i]
else
SumNparzN := SumNparzN + A[i];

if (i <= (n div 2)) then
SumN1 := SumN1 + A[i];

if (i >= (n div 2)+1) then
SumN2 := SumN2 + A[i];
end;
max := SumParz;
if SumNparz > max then max := SumNparz;
if SumParzN > max then max := SumParzN;
if SumNparzN > max then max := SumNparzN;
if SumN1 > max then max := SumN1;
if SumN2 > max then max := SumN2;

writeln(SumParz,' ',SumNparz);
writeln(SumParzN,' ',SumNparzN);
writeln(SumN1,' ',SumN2);
writeln(max);
if n<10 then
begin
for i:=1 to n do
write(A[i],' ');
end;
readln;
end.


--------------------
Przykłady uruchomienia:
--------------------

1.

Podaj ziarno generatora oraz n:
39815 1
0 85
0 85
0 85
85
85

2.

Podaj ziarno generatora oraz n:
39815 5
74 167
71 170
122 119
170
85 37 40 34 45