Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2015, 22:19   #1
mannn
Пользователь
 
Регистрация: 16.11.2015
Сообщений: 15
По умолчанию Помогите с массивом пожалуйста, просто времени нет

Задан одномерный массив M(N) (N<=60). Все его отрицательные элементы заменить суммой положительных элементов. Нулевые элементы пропускать. Полученный массив распечатать.


Вот тут сообразил, но чет не выводит
Код:
program ggg;
const
nmax=60;
var
m:array[1..nmax] of real;
i,n,k:byte;
s,p:real;
begin
writeln('vvedite razmer');
readln(n);
for i:=1 to n do
begin
write('m[',i,']=');
readln(m[i]);
end;
s:=0;k:=0;
for i:=1 to n do
begin
if m[i]<0 then
s:=s+m[i];
k:=k+1;
p:=s/k;
end;
for i:=1 to n do
if m[i]>0 then m[i]:=p;
for i:=1 to n do
writeln('m[',i,']=',m:7);
readln;
end.

Последний раз редактировалось Аватар; 28.11.2015 в 22:52.
mannn вне форума Ответить с цитированием
Старый 28.11.2015, 23:10   #2
_Alerter_
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 89
По умолчанию

Код:
program ggg;
const
nmax=60;
var
m:array[1..nmax] of real;
i,n:byte;
s:real;
begin
writeln('vvedite razmer');
readln(n);
for i:=1 to n do
begin
write('m[',i,']=');
readln(m[i]);
end;
s:=0;
for i:=1 to n do
if m[i] > 0 then s:=s+m[i];
for i:=1 to n do
if m[i] < 0 then m[i]:=s;
for i:=1 to n do
writeln('m[',i,']=',m:7);
readln;
end.
_Alerter_ вне форума Ответить с цитированием
Старый 29.11.2015, 01:57   #3
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Код:
program ggg;
const
nmax=60;
var
m:array[1..nmax] of real;
i,n:byte;
s:real;
begin
writeln('vvedite razmer');
readln(n);
s:=0;
for i:=1 to n do
begin
write('m[',i,']=');
readln(m[i]);
if m[i] > 0 then s:=s+m[i]; //тут лучше
end;
for i:=1 to n do
begin
if m[i] < 0 then m[i]:=s;
writeln('m[',i,']=',m:7);
end; //тут в один загнать можно
readln;
end.
Перенёс пару строчек :-)

Последний раз редактировалось temaps; 29.11.2015 в 01:59.
temaps вне форума Ответить с цитированием
Старый 29.11.2015, 14:57   #4
mannn
Пользователь
 
Регистрация: 16.11.2015
Сообщений: 15
По умолчанию

Не правильно, он отрицательные элементы суммой положительных не заменяет
mannn вне форума Ответить с цитированием
Старый 29.11.2015, 17:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Задан одномерный массив M(N) (N<=60). Все его отрицательные элементы заменить суммой положительных элементов. Нулевые элементы пропускать. Полученный массив распечатать.
Код:
program ggg;
const
nmax=60;
var
m:array[1..nmax] of real;i:integer;s:real;
begin 
s:=0;

writeln('vvedite razmer'); readln(n);
for i:=1 to n do begin
 write('m[',i,']=');
 readln(m[i]);
 if m[i]>0 then s:=s+m[i];
end;

for i:=1 to n do write(m[i]:5:2); writeln;
for i:=1 to n do if m[i]<0 then m[i]:=s;
for i:=1 to n do write(m[i]:5:2); writeln;

readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.11.2015, 18:34   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
program ggg;
const
nmax=60;
var
m:array[1..nmax] of real;i:integer;s:real;
begin 
s:=0;

writeln('vvedite razmer'); readln(n);
for i:=1 to n do begin
 write('m[',i,']=');
 readln(m[i]);
 if m[i]>0 then s:=s+m[i];
end;

for i:=1 to n do write(m[i]:5:2); writeln;
for i:=1 to n do if m[i]<0 then m[i]:=s;
for i:=1 to n do write(m[i]:5:2); writeln;

readln;
end.
сократим чуток итераций?
Код:
for i:=1 to n do begin write(m[i]:5:2); if m[i]<0 then m[i]:=s; end;writeln;
for i:=1 to n do write(m[i]:5:2); writeln;
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.11.2015, 19:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Согласен. Хотя я как-то для красоты делал больше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.11.2015, 19:14   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Согласен. Так код смотрится читабельнее, что-ли.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с Массивом пожалуйста Kalipso Паскаль, Turbo Pascal, PascalABC.NET 6 02.05.2009 15:55
Помогите, пожалуйста - все очень просто. alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 2 09.12.2008 16:41
помогите с массивом в паскале(нужен просто алгоритм), плизззз....... proga Паскаль, Turbo Pascal, PascalABC.NET 1 08.10.2008 21:36