Перейти к содержанию

Помогите с задачами по Паскалю


Рекомендуемые сообщения

Задача №1

Пример программы для заполнения массива из 20 элементов целыми случайными числами в диапазоне от 0 до 99. и сортировки элементов массива по возрастанию. Оформить вывод сортированного массива и отладить программу.

Const n= 20

Var m :array [1..n] of integer ;

I,j temp for i :=1 to n do

:integer ;

Begin

Randomize ;{инициализация генератора случайных чисел}

m :=random (100) ;{заполнение массива случай. числами в диапазоне от 0 до 99}

{сортировка элементов массива }

for i : = 1to n do

for j:=i+ 1to n do

if m>m[j] then begin

temp :=m;m :=m[j];m[j]:=temp

end

Задача №2

Задан массив действительных чисел. Определить , сколько раз меняется знак в данной последовательности чисел, запомнить номера позиций , в которых происходит смена знака.

Буду очень благодарен за помощь.

Ссылка на комментарий

есть же практическая одноименная тема, зачем создавать кучу.. ну или информативней чтоли называйте.

Const n= 20
Var m :array [1..n] of integer ;
I,j temp for i :=1 to n do
:integer ;
Begin
Randomize ;{инициализация генератора случайных чисел}
m[i] :=random (100) ;{заполнение массива случай. числами в диапазоне от 0 до 99}
{сортировка элементов массива }
for i : = 1to n do
for j:=i+ 1to n do
if m[i]>m[j] then begin
temp :=m[i];m[i] :=m[j];m[j]:=temp
end

чушь какая то, ты сам начинал писать??

Ссылка на комментарий

TolkienDRR

с каждым годом таких тем становится всё больше из-за того что школьники поступают в универы и там нифига сделать не могут, а что будет через лет 10 О_О

Ссылка на комментарий


uses crt;
Const n= 20;
Var m :array [1..n] of integer ;
i,j temp :integer ;
begin
clrscr;
Randomize ;
for i:=1 to n do
m[i] :=random (100) ;
for i: =1 to n-1 do
for j:=i to n do
if m[j]>m[j+1] then
begin
temp :=m[j];
m[j] :=m[j+1];
m[j+1]:=temp;
end;
for i:=1 to n do
write(a[i]:5);
readkey;
end.


uses crt;
var i,n:integer;
a:array[1..20]of integer;
begin
clrscr;
write('N= ');
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
if a[i]*a[i+1]<0 then
writeln('между ',i,' и ','j');
readkey;
end.

Ссылка на комментарий

uses crt;
var
a : array[1..100] of real;
ind : array[1..100] of byte;
i,j,count:integer;
b:boolean;
begin
randomize;
a[1]:=random(501)-250;
j:=0;
count:=0;
for i:= 2 to 100 do begin
a[i]:=random(501)-250;
if ((a[i]>=0) and (a[i-1]<0)) or ((a[i]<0) and (a[i-1]>=0)) then begin
inc(j);
ind[j]:=i;
inc(count);
end;
end;
writeln('+/- change = ',count);
end.

Добавлено спустя 6 минут 49 секунд:

Lakers, вроде как запомнить надо =) и цикла одного вроде хватить должно =)

Ссылка на комментарий
a*a[i+1]<0

хахаха, я злодей =D ты ноль не учитываешь )))))))

два числа "-1, 0" у тебя не определят смену знаков =P

Добавлено спустя 1 минуту 10 секунд:

хотя сначала сказал, что у тебя решение элегантнее ))) и девушке рядом даже начал объяснять ))) и тут осенило про нолик )))))))

поэтому злодей =Р

Ссылка на комментарий

Lakers

ну дык, знак был -, а потом его вообще не стало )) это смена знака ))))) у числа 0 нет знака отрицания, как и у положительных. Пишут -16, но никто не пишет +16 ))) так что ноль надо учитывать =Р значит -16 16 - смена знака, т.к. знак минус убирается ровно как и -16 0 )))

думаю стоит учесть, задача же простая, думаю препод может придерется к нулю в таком случае =))) и доказывать ему что ноль - граница беззнаковая, лучше не стоит )

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...