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

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

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

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

Помогите, пожалуйста, написать программу на языке Паскаль

Регистрация
5 Апр 2014
Сообщения
7
Реакции
0
Баллы
0
Помогите, пожалуйста, написать программу на языке Паскаль

Помогите пожалуйста написать программу на языке Паскаль.
В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1. Количество элементов массива, равных нулю.
2. Сумму элементов массива, расположенных после минимального элемента. Упорядочить элементы массива по возрастанию модулей.
 
Program A1;
const n=50;
Var
i,min,sum,nul:integer;
a:array[1..n] of integer;
Begin
randomize;
for i:=1 to n do begin
a:=random(30)-10;
write(a:4);
end;
nul:=0;
if a<0 then nul:=nul+1;
Writeln('Koli4ectBo HyJlEi=',nul:2);
for i:=1 to n do begin
min:=-10;
end;
for i:=1 to n do begin
if a<min then min:=a;
sum:=min+a[i+1];
end;
Writeln('CyMMa ElementoB /7OCJlE min=',sum:4);
end.


Как видишь чето у меня не получается,посмотрим что мастера скажут.
 
Как видишь чето у меня не получается,посмотрим что мастера скажут.
А мастера настоятельно потребуют, чтобы впредь сырые неотлаженные программы в качестве "помощи" не выкладывались. Потому что мастерам далеко не безразлична репутация форума.
Раджаб bro, то, что Вы представили это, извините, полный ужас и какое-то хаотическое нагромождение ошибок и неряшливостей. Вместо количества нулевых считается количество отрицательных членов, цикл поиска минимума вообще отсутствует, зато зачем-то n раз осуществляется операция min:=-10;, попытка сосчитать сумму членов после минимального - вообще какой-то бред, упорядочение массива отсутствует, и т.д. и т.п.
Справедливости ради отмечу, что и в самом задании присутствует ляп, уж не знаю, по чьей вине. Дело в том, что если массив вещественный (real), то вероятность появления в нем строго нулевых членов настолько мала, что определять их количество абсолютно бессмысленное дело. Поэтому будем считать массив целочисленным (integer). С учетом этого:
Код:
const
 n=50;
Var
 i,j,min,sum,nul,Imin,D:integer;
 a:array[1..n] of integer;
Begin
 randomize;
 nul:=0;
 writeln('Initial array:');
 for i:=1 to n do
  begin
   a[i]:=random(30)-10;
   write(a[i]:4);
   if a[i]=0 then nul:=nul+1;
  end;
 writeln;
 writeln;
 Writeln('Number of zero elements is ',nul);
 writeln;
 min:=a[1];
 Imin:=1;
 for i:=2 to n do
  if a[i]<min then
   begin
    min:=a[i];
    Imin:=i;
   end;
 sum:=0;
 for i:=Imin+1 to n do
  sum:=sum+a[i];
 Writeln('Sum of elements after minimal is ',sum);
 writeln;
 Writeln ('Ordered array:');
 for i:=1 to n-1 do
  for j:=1 to n-i do
   if abs(a[j])>abs(a[j+1]) then
    begin
     D:=a[j];
     a[j]:=a[j+1];
     a[j+1]:=D;
    end;
 for i:=1 to n do write(a[i]:4);
 readln
end.
 
Не успел, но выкладываю.
Интерено мнение о качестве.

const n= 20;
var A: array[1..n] of Real;
i,null,e: byte;
t,min,sum: Real;
begin
Randomize;
for i:=1 to n do
A:= Random(100)/10;
for i:=1 to n do
Write(A:5:1);
Writeln;
min:= A[1]; null:=0; e:=0;
for i:=1 to n do begin
if A=0 then Inc(null);
if A< min then begin
min:= A; e:=i;
end;
end;
Writeln('Null=',null);
sum:=0;
for i:= (e+1) to n do
sum:= sum+A;
Writeln('Summa=',sum:0:1);
for i:=1 to n-1 do
for e:=1 to n-i do
if A[e]>A[e+1] then begin
t:=A[e]; A[e]:=A[e+1]; A[e+1]:=t;
end;
for i:=1 to n do
Write(A:5:1);
Readln;
end.
 
Интерено мнение о качестве.
Да всё правильно, и по сути Ваш и мой варианты идентичны (разве что Вы объединили циклы подсчета количества нулей и поиска минимума), вот только замечание о формате массива и наличии строго нулевых членов остается в силе.
 
А мастера настоятельно потребуют, чтобы впредь сырые неотлаженные программы в качестве "помощи" не выкладывались. Потому что мастерам далеко не безразлична репутация форума.
Раджаб bro, то, что Вы представили это, извините, полный ужас и какое-то хаотическое нагромождение ошибок и неряшливостей. Вместо количества нулевых считается количество отрицательных членов, цикл поиска минимума вообще отсутствует, зато зачем-то n раз осуществляется операция min:=-10;, попытка сосчитать сумму членов после минимального - вообще какой-то бред, упорядочение массива отсутствует, и т.д. и т.п.
Справедливости ради отмечу, что и в самом задании присутствует ляп, уж не знаю, по чьей вине. Дело в том, что если массив вещественный (real), то вероятность появления в нем строго нулевых членов настолько мала, что определять их количество абсолютно бессмысленное дело. Поэтому будем считать массив целочисленным (integer). С учетом этого:
Код:
const
 n=50;
Var
 i,j,min,sum,nul,Imin,D:integer;
 a:array[1..n] of integer;
Begin
 randomize;
 nul:=0;
 writeln('Initial array:');
 for i:=1 to n do
  begin
   a[i]:=random(30)-10;
   write(a[i]:4);
   if a[i]=0 then nul:=nul+1;
  end;
 writeln;
 writeln;
 Writeln('Number of zero elements is ',nul);
 writeln;
 min:=a[1];
 Imin:=1;
 for i:=2 to n do
  if a[i]<min then
   begin
    min:=a[i];
    Imin:=i;
   end;
 sum:=0;
 for i:=Imin+1 to n do
  sum:=sum+a[i];
 Writeln('Sum of elements after minimal is ',sum);
 writeln;
 Writeln ('Ordered array:');
 for i:=1 to n-1 do
  for j:=1 to n-i do
   if abs(a[j])>abs(a[j+1]) then
    begin
     D:=a[j];
     a[j]:=a[j+1];
     a[j+1]:=D;
    end;
 for i:=1 to n do write(a[i]:4);
 readln
end.
Спасибо большое за помощь!
 
Не успел, но выкладываю.
Интерено мнение о качестве.

const n= 20;
var A: array[1..n] of Real;
i,null,e: byte;
t,min,sum: Real;
begin
Randomize;
for i:=1 to n do
A:= Random(100)/10;
for i:=1 to n do
Write(A:5:1);
Writeln;
min:= A[1]; null:=0; e:=0;
for i:=1 to n do begin
if A=0 then Inc(null);
if A< min then begin
min:= A; e:=i;
end;
end;
Writeln('Null=',null);
sum:=0;
for i:= (e+1) to n do
sum:= sum+A;
Writeln('Summa=',sum:0:1);
for i:=1 to n-1 do
for e:=1 to n-i do
if A[e]>A[e+1] then begin
t:=A[e]; A[e]:=A[e+1]; A[e+1]:=t;
end;
for i:=1 to n do
Write(A:5:1);
Readln;
end.

Спасибо за помощь!
 
Program A1;
const n=50;
Var
i,min,sum,nul:integer;
a:array[1..n] of integer;
Begin
randomize;
for i:=1 to n do begin
a:=random(30)-10;
write(a:4);
end;
nul:=0;
if a<0 then nul:=nul+1;
Writeln('Koli4ectBo HyJlEi=',nul:2);
for i:=1 to n do begin
min:=-10;
end;
for i:=1 to n do begin
if a<min then min:=a;
sum:=min+a[i+1];
end;
Writeln('CyMMa ElementoB /7OCJlE min=',sum:4);
end.


Как видишь чето у меня не получается,посмотрим что мастера скажут.

Спасибо за ответ
 
А мастера настоятельно потребуют, чтобы впредь сырые неотлаженные программы в качестве "помощи" не выкладывались. Потому что мастерам далеко не безразлична репутация форума.
Раджаб bro, то, что Вы представили это, извините, полный ужас и какое-то хаотическое нагромождение ошибок и неряшливостей. Вместо количества нулевых считается количество отрицательных членов, цикл поиска минимума вообще отсутствует, зато зачем-то n раз осуществляется операция min:=-10;, попытка сосчитать сумму членов после минимального - вообще какой-то бред, упорядочение массива отсутствует, и т.д. и т.п.
Справедливости ради отмечу, что и в самом задании присутствует ляп, уж не знаю, по чьей вине. Дело в том, что если массив вещественный (real), то вероятность появления в нем строго нулевых членов настолько мала, что определять их количество абсолютно бессмысленное дело. Поэтому будем считать массив целочисленным (integer). С учетом этого:


Что поделаешь надо учиться.Плохо прогу видать обдумал.
 
if a<0 then nul:=nul+1
нет ну это хоть как я допустил там же видно что если =0,а не меньше...ужас
 
Назад
Сверху