Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 25.03.2010, 17:35   #1 (permalink)
fkbosch
Новичок
 
Регистрация: 25.03.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Массив

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

Используя подпрограмму, сформировать два массива из элементов сходного массива T: квадрат которых больше 10 и куб которых больше 20."
fkbosch вне форума   Ответить с цитированием

Старый 25.03.2010, 17:35
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, прочитайте содержимое данных постов

Массив и матрица
Массив в VBA
Массив

Старый 25.03.2010, 17:47   #2 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

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

Последний раз редактировалось DDS; 25.03.2010 в 18:26
DDS вне форума   Ответить с цитированием
Старый 25.03.2010, 17:55   #3 (permalink)
fkbosch
Новичок
 
Регистрация: 25.03.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ну на сколько я поняла так...
fkbosch вне форума   Ответить с цитированием
Старый 25.03.2010, 18:26   #4 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

Если никто не опередит, то вечером сделаю.
DDS вне форума   Ответить с цитированием
Старый 25.03.2010, 20:11   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Допустим, что массив целочисленный из 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.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 25.03.2010, 22:39   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну а ежели непременно надо с общей процедурой, то тогда можно так:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.03.2010, 00:28   #7 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

Ну, вот и мой вариант
Код:
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.
DDS вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.