• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Массив

  • Автор темы Автор темы fkbosch
  • Дата начала Дата начала

fkbosch

Ученик
Регистрация
25 Мар 2010
Сообщения
2
Реакции
0
Баллы
0
Массив

Помогите пожалуйста, очень долго уже не получается решить задачу через Паскаль....
"Составить подпрограмму, формирующую массив из элементов исходного одномерного массива, k-я степень которых больше заданной величины.

Используя подпрограмму, сформировать два массива из элементов сходного массива T: квадрат которых больше 10 и куб которых больше 20."
 
Составить подпрограмму, формирующую массив из элементов исходного одномерного массива, k-я степень которых больше заданной величины.
Т.е. пока все элементы массива не станут больше заданной величины?
 
Последнее редактирование:
Ну на сколько я поняла так...
 
Если никто не опередит, то вечером сделаю.
 
Допустим, что массив целочисленный из 10 элементов и заполняется случайными положительными значениями. Решение будет примерно таким:
Код:
program mas;
uses crt;
const n=10;
var t: Array[1..n] of integer;
     res1: array[1..n] of integer;
     res2: array[1..n] of integer;
     i, j, k: integer;

procedure generation;
begin
writeln('Massiv T: ');
for i:=1 to n do
begin t[i]:=random(15); write(t[i]:5); end;
end;

procedure quadrat;
begin
if sqr(t[i])>10 then begin inc(j); res1[j]:=t[i];  end;
end;

procedure koob;
begin
if sqr(t[i])*t[i]>20 then begin inc(k); res2[k]:=t[i];  end;
end;

begin
randomize;
k:=0;
j:=0;
generation;
Writeln;
for i:=1 to n do
begin
quadrat;
koob;
end;
writeln('Massiv res1: ');
for i:=1 to j do
write(res1[i]:5);
Writeln;
writeln('Massiv res2: ');
for i:=1 to k do
write(res2[i]:5);
readln;
end.
 
Ну а ежели непременно надо с общей процедурой, то тогда можно так:
Код:
program mas;
uses crt;
const n=10;
var t: Array[1..n] of integer;
    res: array[1..n] of integer;
    i,j: integer;

procedure generation;
begin
 writeln('Massiv T: ');
 for i:=1 to n do
  begin t[i]:=random(15)+1; write(t[i]:5); end;
end;

procedure power(kP,MaxP:integer);
begin
 if kP*Ln(1.0*t[i])>Ln(1.0*MaxP) then begin inc(j); res[j]:=t[i];  end;
end;


begin
 randomize;
 j:=0;
 generation;
 Writeln;
 writeln('Massiv res1: ');
 for i:=1 to n do
  power(2,10);
 for i:=1 to j do
  write(res[i]:5);
 Writeln;
 j:=0;
 writeln('Massiv res2: ');
 for i:=1 to n do
  power(3,20);
 for i:=1 to j do
  write(res[i]:5);
 readln;
end.
 
Ну, вот и мой вариант
Код:
uses crt;

const n=5;

type mass=array[1..n]of integer;

var  i,k:byte; t,r1,r2:mass;
     ch1,ch2:integer;

procedure p1(var t:mass;
             ch1,ch2:integer);
var j,k:byte;
begin
j:=0;k:=0;
write('Введите элементы массива');
for i:=1 to n do
readln(t[i]);
for i:=1 to n do
if t[i]*t[i]>ch1 then begin inc(j);r1[j]:=t[i];inc(k) end;
j:=0;
for i:=1 to n do
if t[i]*t[i]*t[i]>ch2 then begin inc(j);r2[j]:=t[i];  end;

writeln;
for i:=1 to k do
write(r1[i]:5);

writeln;
for i:=1 to j do
write(r2[i]:5);
end;

BEGIN
clrscr;
write('Введите числа(в данном примере 1 число - 10, 2 число - 20)');
read(ch1,ch2);
p1(t,ch1,ch2);
readkey;
END.
 
Назад
Сверху