Консультация № 169646
20.06.2009, 12:28
0.00 руб.
0 1 1
Доброго времени суток уважаемые эксперты. Помогите с написанием программ.
1) Написать процедуру для работы с одновременным массивом
а) Создания массива с числами по порядку (1,2,3,4...)
б) Создания массива со случайным числом
в) Вывода массива на экран
г) Поиска мах-ого элемента (его номер в массиве)
д) Расчет среднего значения элементов в массиве
2) Написать программу для вывода простых чисел <N (минимизировать вычисления)
Заранее благодарю...


Обсуждение

давно
Профессор
401888
1232
20.06.2009, 13:19
общий
это ответ
Здравствуйте, Roland Deschain!
Решение Ваших задач в приложении.

Приложение:
№1.
uses crt;
const nmax=100;{максимальный размер массива}
type mas=array[1..nmax] of integer;{тип массива}
procedure VvodPP(var m:mas;var x:byte);{ввод натуральных чисел по порядку}
var i:byte;
begin
repeat
write('Размер массива=');
readln(x);
until x in[1..nmax];{проверяем допустимый интервал}
for i:=1 to x do
m[i]:=i;{присваиваем элементу массива его порядковый номер}
end;
procedure VvodSluch(var m:mas;var x:byte;a,b:integer);{ввод случайных}
var i:byte;
begin
repeat
write('Размер массива=');
readln(x);
until x in[1..nmax];
write('Левая граница интервала чисел a=');
readln(a);
repeat
write('Правая граница интервала чисел b=');
readln(b);
until b>a;
for i:=1 to x do
m[i]:=random(b-a+1)+a;{записываем в массив числа}
end;
procedure Vyvod(var m:mas;x:byte);{вывод массива на экран}
var i:byte;
begin
for i:=1 to x do
write(m[i],' ');
writeln;
end;
procedure Sred(m:mas;x:byte;var sr:real);{среднее арифметическое}
var i:byte;
begin
sr:=0;
for i:=1 to x do
sr:=sr+m[i];
sr:=sr/x;
end;
var a,b:mas;
na,nb:byte;
s:real;
k1,k2:integer;
begin
clrscr;
randomize;
writeln('Массив натуральных чисел от 1 дo ',na);
VvodPP(a,na);
Vyvod(a,na);
Sred(a,na,s);
writeln('Среднее=',s:0:2);
writeln;
writeln('Массив случайных чисел:');
VvodSluch(b,nb,k1,k2);
Vyvod(b,nb);
Sred(b,nb,s);
writeln('Среднее=',s:0:2);
readln
end.
№2.
uses crt;
function Prost(x:longint):boolean;{логическая функция определения простое или нет число}
var i:longint;
begin
for i:=2 to round(sqrt(x)) do{проверяем все числа от 2 до корня из заданного числа, дальше нет смысла}
if x mod i=0 then{если число хоть на что-то нацело делится}
begin
Prost:=false;{оно не простое}
break;{дальше не проверяем}
end;
end;
var n,i:longint;
begin
clrscr;
repeat
write('Введите число больше 1 n=');
readln(n);
until n>1;
for i:=1 to n do
if Prost(i) then
write(i,' ');
readln
end.
Форма ответа