Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ помогите с задачкой даделать масив

Автор: Lakibooy 31.05.2007 18:53

Пожалуста помогите с решение задачи!

Составьте программу для задания одномерного массива А из n(n) произвольных целых чисел
и вывода следующих сумм:
1.a(1)+a(2)
a(3)+a(4)
a(n-1)+a(n)

2.a(1)+a(n)
a(2)+a(n-1)
a(n/2)+a(n/2+1)

найти сумму всех элементов
наити произведение
найти макс. элемент массива
найти последний положительный элемент массива

Program pr1;
uses crt;
var
a:array [1..100] of byte;
s1,n:integer;
b,i:integer;
begin
clrscr;
write('11111');
readln(i);
for b:=1 to i do
begin
(b):=Random(100)-50;
write(a[b]);
end;
S1:=(a[1]+a[2]);
writeln(s1);
s1:=(a[3]+a[4]);
writeln(s1);
s1:=(a[i-1]+a[n]);
writeln(S1);
S1:=(A[1]+A[i]);
writeln(S1);
s1:=(a[2]+a[i-1]);
writeln(s1);
s1:=(a[i div 2]+a[i div 2+1]);
writeln(S1);
s1:=0;
for b:=i-1 to i do
begin S1:=S1+(A[b]);
end;
write(S1); s1:=1;
for b:=1 to i do;
begin
s1:=s1*(a[b]);
end;
Writeln(s1);
S1:=0;
For b:=1 to i do
begin if (a[b])>s1 then s1:=(a[b]);
end;
writeln(s1);
s1:=0;
for b:=1 to i do
begin if (a[b])>0 then S1:=(A[b]);
end;
writeln(s1);
readkey;
end.

Автор: Ozzя 31.05.2007 19:05

Цитата
из n(n) произвольных

а что это означает?
Произвольные числа?
Использовать Random(n)

Автор: Lakibooy 31.05.2007 19:08

да нужно рандомно.

Автор: Ozzя 31.05.2007 19:11

Тогда тебе http://forum.pascal.net.ru/index.php?showtopic=2694

Автор: Lakibooy 31.05.2007 19:11

к стати спасибо за ссылку! прошлой программы помогла!

Автор: compiler 31.05.2007 19:14

пока набрал, испытал... опоздал...

Автор: Lakibooy 31.05.2007 19:19

Цитата(compiler @ 31.05.2007 16:14) *

пока набрал, испытал... опоздал...

что именнно наберал?

Автор: compiler 31.05.2007 19:20

Цитата(Lakibooy @ 31.05.2007 15:19) *
что именнно наберал?
ну как алгоритм(словами) + некоторые урывки кода...

Автор: Lakibooy 31.05.2007 19:25

Цитата(compiler @ 31.05.2007 16:20) *

ну как алгоритм(словами) + некоторые урывки кода...

ну если можно напиши! мне все пригодиться.

Автор: compiler 31.05.2007 19:49

{а сам пробывал?
если n константа, то задаешь массив... проходиш циклом по массиву(я бы советовал циклом со встроенным счетчиком) и задаешь в теле текущему члену случайное число(процедура rand0m(m), где m - максимальное число)... только не забудь не забудь в начале программы написать rand0mize(иначе все элементы будут одинаковы!). итак массив у нас есть. теперь с суммой(покажу на примере, думаю поймешь write(a[1]+a[n-4]);
что не ясно, спрашивай...}
const
n =5; // здесь ставишь свою константу
var
i:integer;
s:longint;
a:array[0..n]of integer;
begin
randomize;
for i:=0 to (n-1) do
a[i]:=random(2*n)-n;//поидии так


WriteLn(a[1]+a[2]);
WriteLn(a[3]+a[4]);
WriteLn(a[n-1]+a[n]);

WriteLn(a[1]+a[n]);
WriteLn(a[2]+a[n-1]);
//пропущенно

s:=0;
for i:=0 to (n-1) do
s:=s+a[i];
WriteLn(s);

s:=0;
for i:=0 to (n-1) do
s:=s*a[i];
WriteLn(s);

i:=n;
while (i<>0) and (s=0) do begin
inc(i, -1);
if a[i]>0 then begin
s:=1;
writeln(a[i]);
end;
end;

readln;
read;
end.

а вообще здорово было бы это все раскидать по процедуркам...

Автор: Lakibooy 2.06.2007 2:55

вот как я сделал

Program Pr1;
uses crt;
const
n=5;
var
a:array[0..n] of integer;
i:integer;
s:longint;
begin
clrscr;
randomize;
for i:=0 to (n-1) do
a[i]:=random(2*n)-n;

writeln(' ___________');
WriteLn(' ',a[1]+a[2]);
WriteLn(' ',a[3]+a[4]);
WriteLn(' ',a[n-1]+a[n]);
writeln(' ___________');
WriteLn(' ',a[1]+a[n]);
WriteLn(' ',a[2]+a[n-1]);
writeln(' ',a[i div 2]+a[i div 2+1]);
writeln(' ___________');


хотел узнать этот код выводит сумму всех элементов
s:=0;
for i:=0 to (n-1) do
s:=s+a[i];
WriteLn(s);

а этот выводит произведение? ну только у него всегда значение 0
s:=0;
for i:=0 to (n-1) do
s:=s*a[i];
WriteLn(s);
readln;

а этот находит макс. элемент массива?
i:=n;
while (i<>0) and (s=0) do begin
inc(i, -1);
if a[i]>0 then begin
s:=1;
writeln(a[i]);
end;
end;


read;
end.


{и какой код нужен чтоб найти последний положительный элемент массива}

вот с этим мне непонятно!
объясни пожалуста если знаешь как доделать программу!

Автор: compiler 2.06.2007 18:27

smile.gif

Цитата(Lakibooy @ 1.06.2007 22:55) *
вот как я сделал
ну... это оформление
Цитата(Lakibooy @ 1.06.2007 22:55) *
хотел узнать этот код выводит сумму всех ементов
должен smile.gif
Цитата(Lakibooy @ 1.06.2007 22:55) *
а этот выводит произведение? ну только у него всегда значение 0
конечно, ведь я допустил не большую ошибку smile.gif . что мы делаем берем 0(имено 0, ведь s:=0;) и умножаем на нулевой элемент (по порядку ), что получаем? -ноль. Теперь умножаем этот ноль на следующий элемент и т.д. .Странно было бы если получали не ноль lol.gif ... поставь s:=1; ...
Цитата(Lakibooy @ 1.06.2007 22:55) *
а этот находит макс. элемент массива?
нет этот находит как раз последний положительный элемент массива... хотя написан действительно очень плохо...
найти максимальный элемент массива намного проще, ИМХО... оставляляю на домашнее задание smile.gif ... и вообще это уже решалось...
Цитата(Lakibooy @ 1.06.2007 22:55) *
вот с этим мне непонятно!
объясни пожалуста если знаешь как доделать программу!
надеюсь теперь стало немного понятней...

Автор: Lakibooy 3.06.2007 16:11

Спасибо за разъеснение! щас буду доделавать домашнее задание! smile.gif

Автор: compiler 3.06.2007 19:17

Цитата(Lakibooy @ 3.06.2007 12:11) *
щас буду доделавать домашнее задание! smile.gif
+всетаки по процедуркам раскидай + с последним положительным элементом надо бы переписать..