Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите с задачкой даделать масив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lakibooy
Пожалуста помогите с решение задачи!

Составьте программу для задания одномерного массива А из 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я
Цитата
из n(n) произвольных

а что это означает?
Произвольные числа?
Использовать Random(n)
Lakibooy
да нужно рандомно.
Ozzя
Тогда тебе сюда
Lakibooy
к стати спасибо за ссылку! прошлой программы помогла!
compiler
пока набрал, испытал... опоздал...
Lakibooy
Цитата(compiler @ 31.05.2007 16:14) *

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

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

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

ну если можно напиши! мне все пригодиться.
compiler
{а сам пробывал?
если 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
вот как я сделал
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
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
Спасибо за разъеснение! щас буду доделавать домашнее задание! smile.gif
compiler
Цитата(Lakibooy @ 3.06.2007 12:11) *
щас буду доделавать домашнее задание! smile.gif
+всетаки по процедуркам раскидай + с последним положительным элементом надо бы переписать..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.