Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите разобраться с массивами (http://www.tehnari.ru/f41/t48916/)

ter12 15.03.2011 20:42

Помогите разобраться с массивами
 
. Напишите программу, находящую в двухмерном массиве номера строк с наибольшей суммой элементов.
2. Найти наименьший из положительных элементов массива Х[1..10].
3. Из массива В[1..8] уберите все отрицательные элементы, заменив их на значения предыдущих элементов.
4. Напишите программу определения количества элементов, удовлетворяющих условию 0<А[i],i в целочисленном массиве А[1..10].
5. Для линейного целого массива A[1..N] найти сумму всех: а) четных элементов; б) нечетных элементов; в) элементов, кратных 3.
очень срочно надо, заранее спасибо

kreol 15.03.2011 20:50

интересно а на каком языке? на Аде написать или может Коболе?? Хотя нет дайте угадаю это же надо написать сначала свой язык а потом эти программки

ter12 15.03.2011 21:00

паскаль

shrek=) 16.03.2011 06:41

Цитата:

Сообщение от ter12 (Сообщение 486184)
2. Найти наименьший из положительных элементов массива Х[1..10].

Код:

var
x:array [1..10] of integer;
i,min:integer;
begin
randomize;
min:=10000;
for i:=1 to 10 do begin
x[i]:=random(31)-30;
if (x[i]<=0) and (x[i]<min) then min:=x[i];
end;
writeln ('Минимальный из положительных элементов равен  ',min);
readln
end.


shrek=) 16.03.2011 06:48

Цитата:

Сообщение от ter12 (Сообщение 486184)
3. Из массива В[1..8] уберите все отрицательные элементы, заменив их на значения предыдущих элементов.

Так как для первого элемента предыдущего нет, то генерируем ему положительное значение.
Код:

var
b:array [1..8] of integer;
i:integer;
begin
randomize;
b[1]:=random(30)+1;
for i:=2 to 8 do begin
b[i]:=random(31)-30;
if b[i]<0 then b[i]:=b[i-1];
end;
for i:=1 to 8 do
write (b[i]:2);
readln
end.


shrek=) 16.03.2011 06:56

Цитата:

Сообщение от ter12 (Сообщение 486184)
4. Напишите программу определения количества элементов, удовлетворяющих условию 0<А[i],i в целочисленном массиве А[1..10].

Код:

var
a:array [1..10] of integer;
i,c:integer;
begin
c:=0;
randomize;
for i:=1 to 10 do begin
a[i]:=random(10)+1;
if (a[i]>0) and (a[i]<i) then inc(c);
end;
writeln ('Количество элементов, удовлетворяющих условию 0<a[i]<i, равно  ',c);
readln
end.


shrek=) 16.03.2011 07:04

Цитата:

Сообщение от ter12 (Сообщение 486184)
5. Для линейного целого массива A[1..N] найти сумму всех: а) четных элементов; б) нечетных элементов; в) элементов, кратных 3.

Код:

const N=20;
var
a:array [1..n] of integer;
i,sum:integer;
procedure variant_a;
begin
sum:=0;
for i:=1 to N do begin
if i mod 2=0 then sum:=sum+a[i];
end;
writeln ('Сумма чётных элементов равна ',sum);
end;
procedure variant_b;
begin
sum:=0;
for i:=1 to N do begin
if i mod 2=1 then sum:=sum+a[i];
end;
writeln ('Сумма не чётных элементов равна ',sum);
end;
procedure variant_c;
begin
sum:=0;
 for i:=1 to N do begin
 if i mod 3=0 then sum:=sum+a[i];
 end;
 writeln ('Сумма элементов с номерами кратными 3 равна ',sum);
 end;
begin
variant_a;
variant_b;
variant_c;
readln
end.


Vladimir_S 16.03.2011 09:39

Шрек, пожалуйста, повнимательнее к условиям ветвления! У Вас (топик #4)
Цитата:

Сообщение от shrek=) (Сообщение 486393)
Код:

if (x[i]<=0) and (x[i]<min) then min:=x[i];

эта строка обеспечивает поиск минимума из неположительных (отрицательных и нулевых) элементов, а надо из положительных. Поэтому условие
Код:

x[i]<=0
следует заменить на
Код:

x[i]>0

AlexZir 16.03.2011 16:08

Цитата:

Сообщение от ter12 (Сообщение 486184)
Напишите программу, находящую в двухмерном массиве номера строк с наибольшей суммой элементов.

Код:

const n=10;
var mas: array[n,2*n] of real;
sum: array[n] of real;
max:real;
i,j:integer;
begin
randomize;
{заполнение массива случайными значениями и вывод его на экран}
for i:=1 to n do begin
for j:=1 to 2*n do begin
mas[i,j]:=random*50-50;
write(mas[i,j]:4:6]; end; writeln; end;
{подсчет суммы построчно и заполнение массива сумм}
for i:=1 to n do begin
sum[i]:=0;
for j:=1 to 2*n do
sum[i]:=sum[i]+a[i,j];
end;
{анализ массива сумм и вывод номеров строк с наибольшей суммой}
max:=sum[1];
for i:=2 to n do
if sum[i]>max then max:=sum[i];
for i:=1 to n do
if sum[i]=max then writeln('Номер строки с наибольшей суммой элементов ',i);
readln
end.



Часовой пояс GMT +4, время: 13:39.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.