IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Одномерный массив, Проверьте пожалуйста
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский

Репутация: -  0  +


Даны два массива Т(20)и С(20). Найти среднее геометрическое положительных элементов массива Т и заменить ими все отрицательные элементы массива С.


program zadacha;
uses crt;
type
mas1=array [1..20] of integer;
mas2=array [1..20] of integer;
var
T:mas1;
C:mas2;
i,k,p:integer;
sr:real;
begin
randomize;
writeln('Massiv T:');
for i:=1 to 20 do
begin
T[i]:=random(100)-50;
write(T[i], ' ');
end;
writeln;
writeln('Massiv C:');
for i:=1 to 20 do
begin
C[i]:=random(100)-50;
write(C[i], ' ');
end;
writeln;
k:=0;
p:=1;
sr:=0;
for i:=1 to 20 do
begin
if T[i]>0 then
begin
k:=k+1;
p:=p*T[i];
end;
end;
writeln;
if k>0 then sr:=exp(ln(p)*(1/k));
writeln('sr= ',sr:3:3);
writeln;
writeln('New massiv C:');
for i:=1 to 20 do
begin
if (C[i]<0) and (T[i]>0) then C[i]:=T[i];
write(C[i], ' ');
end;
writeln;
readkey;
end.



Иногда выдаёт ошибку, подскажите, пожалуйста, что не так
Заранее спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Ты представляешь себе порядок величины произведения, которая может получиться? Допустим, 10 положительных чисел, каждое равно 10. Тогда их произведение есть 1010. А p у тебя целое, то есть всего до 32 тысяч примерно.. Сделай p типа double.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский

Репутация: -  0  +


Предсавляю, я конечно подумала, что тип переменной надо поменять, только вот, если double (это, как я понимаю, вещественный тип?) использовать, тоже ошибку выводит...

Сообщение отредактировано: goosberry -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
Код

writeln('New massiv C:');
for i:=1 to 20 do
  begin
   if (C[i]<0) and (T[i]>0) then C[i]:=T[i];
   write(C[i], '  ');
  end;

а зачем здесь условие and (T[i]>0) и почему C[i]:=T[i]; ?

по моему там все проще:
Код

writeln('New massiv C:');
for i:=1 to 20 do
  begin
   if (C[i]<0) then C[i]:=sr;
   write(C[i], '  ');
  end;

и еще там mas2=array [1..20] of integer;
а sr=real, тоесть массив тоже должен быть of real;

Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 21:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name