Помощь - Поиск - Пользователи - Календарь
Полная версия: 3 задачки на массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Serg76
1.Задан одномерный массив а (n). Найти количество, все номера и сумму элементов массива больших заданного числа alfa(здесь не пойму как найти и вывести ВСЕ номера элементов)
2.Дан одномерный массив y={yi}, i=1,n. Найти разность номеров ми¬нимального и макси¬мального элемен¬тов.
3.Дан массив а (n).Определить номера элементов = 5, количество положительных элементов для всего массива и сумму возведенных в квадрат отрицательных элементов стоящих на нечетных местах. (использовать repeat с шагом 2)
в двух других вобще завал.каму не сложно помогите пожалуйста
compiler
1) заводи какую-нибудь динамическую структуру(например, очередь), где ты будешь их хранить и вноси все туда или выводи "по ходу"
2) ищешь минимум(запоминая индекс), аналогично максимум(можно за все за один проход). вычитаешь индексы.
3) про repeat, наверно, имеется ввиду, что перебирать не каждый элемент за одно изменение счётчика, а по два..
Serg76
спасибо счас попробую good.gif

Добавлено через 19 мин.
если можно то еще раз с суммой и количеством элементов понятно а как мне описать чтоб все номера запоминались и выводились на экран?сдесь что то Я непойму unsure.gif
compiler
Цитата(Serg76 @ 11.05.2008 20:42) *
номера запоминались и выводились на экран?сдесь что то Я непойму unsure.gif
если тебе надо просто вывести на экран, то проще было бы выводить по ходу -- нашел элемент- вывел номер. Если же надо запомнить и вывести, то
проходим по массиву, если элемент больше alfa, то
  • увеличиваем количество на один
  • добавляем значение элемента к некой сумме
  • добавляем индекс в очередь
взять модуль для работы с очередями можно тут: Все о динамических структурах данных. , там же можно взять модули для работы с другими динам. структурами.
Serg76
спс счас попробую))
Serg76
проверти пожалуйста Я правильно понял
 var const n:=100;
a:arrey[1..n] of real;
Alf,Sum:real;
i,Kol:integer:
begin
writeln('введите alf');
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
s:=0:kol:=0:
for i:=1 to n do begin
if a[i]>alf then begin s:=s+a[i];
kol:=kol+1;
writln('i='i);
end;
end;
writeln('s='s);
writeln('kol='kol);
end.
compiler
Я) это должен читать? ты сначала попробуй это откомпилировать...
Айра
Понял то вроде правильно, но вот программка компиляцию не проходит.. Попробуй исправить это сам? smile.gif
Serg76
У меня возник еще один вопрос как можно в ОДНОМ цикле посчитать отрицательные элементы ДВУХ массивов а[n]
и b[n]. направти мысль а то что то ни как не соображу.
Айра
Если каждого по отдельности, то нужно по переменной для каждого массива.. и проверка будет тоже для каждого своя..
Serg76
нет просто дано два массива нужно посчитать в них количество (-)элементов,но сделать это в одном цикле( просто общее колличество
Айра
тогда у тебя просто две проверки будет в цикле:

for i:=1 to n do
begin
if a[i]<0 then inc(k);
if b[i]<0 then inc(k);
end;


но это если количество элементов в обоих массивах одинаковое..
mind abuse
Цитата(Айра @ 12.05.2008 14:23) *

но это если количество элементов в обоих массивах одинаковое..


Если неодинаковое, то тогда проверка if n>m, и считаем до того числа, которое больше

Код
Program t1;
uses
crt;
var
  a,b:array[1..1000] of real;
  i,Kol,n,m:integer;

begin
clrscr;

writeln('input number of elements of each array');
writeln('n=');
readln(n);
writeln('m=');
readln(m);

writeln('input elements');

for i:=1 to n do
begin
writeln('a[',i,']=');
readln(a[i]);
end;

for i:=1 to m do
begin
writeln('b[',i,']=');
readln(b[i]);
end;

kol:=0;

if n>m then

begin
for i:=1 to n do
begin
if a[i]<0 then inc(kol);
if b[i]<0 then inc(kol);
end;
end

else

begin
for i:=1 to m do
begin
if a[i]<0 then inc(kol);
if b[i]<0 then inc(kol);
end;
end;

writeln('kol=',kol);
end.



Кстати, подправил предыдущую:
Код
Program t1;
uses
crt;
var
  a:array[1..1000] of real;
  Alf,s:real;
  i,Kol,n:integer;

begin
clrscr;
n:=10;
writeln('input alf');
readln(Alf);
writeln('input elements');

for i:=1 to n do
readln(a[i]);
s:=0;
kol:=0;
for i:=1 to n do begin
if a[i]>alf
then
begin
s:=s+a[i];
kol:=kol+1;
writeln('i=',i);
end;
end;
writeln('s=',s);
writeln('kol=',kol);
end.

Serg76
спасибо большое
Айра
Цитата
Если неодинаковое, то тогда проверка if n>m, и считаем до того числа, которое больше

А я бы так сделала:
i:=1;
while (i<=n) or (i<=m) do
begin
if a[i]<0 then inc(kol);
if b[i]<0 then inc(kol);
inc(i);
end;


И нет лишнего кода..
mind abuse
Согласен =)
Serg76
Цитата(Serg76 @ 11.05.2008 21:14) *

3.Дан массив а (n).Определить номера элементов = 5, количество положительных элементов для всего массива и сумму возведенных в квадрат отрицательных элементов стоящих на нечетных местах. (использовать repeat с шагом 2)

не могу разобратся с этой задачкой особенно в той ее части (элементы стоящие на несетных местах используя repeat(((((((((((((
Айра
Так:
i:=1
repeat
....
inc(i,2)
....
until i>n

А вообще выкладывай то, что получилось\неполучилось.. Будем разбирать))
Serg76
Всем спасибо за помощь этот этап пройден lol.gif lol.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.