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

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

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

 
 Ответить  Открыть новую тему 
> работа над ошибками, где ошибка в написании программмы?
сообщение
Сообщение #1


Новичок
*

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

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


Условие: дан одномерный массив А, размером N<=50. Найти среднюю геометрическую сумму положительных элементов.
Program MM;
const n=50;
var
A:array[1..n] of integer;
i,S:integer;
Sg: real;
begin

writeln ('ввести массив А');
for i:=1 to n do
read (A[i]);

for i:=1 to n do
if A[I]>0 then
begin
s:=1;
for i:=1 to n do
s:=s*A[i];
Sg:=exp(ln(s)/n);
end;
writeln ('Sg=',Sg:3);
end.


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Нельзя чтобы названия проги было числом. no1.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(Bokul @ 15.05.2006 20:07) *

Нельзя чтобы названия проги было числом. no1.gif

ну это я условно поставила. это не суть важно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Смотрю...
*****

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

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


Во первых - ТЕГИ [code][/code] кто будет за тебя проставлять?

Во вторых - последи за значением s - оно может превышать максимально допустимое значение для integer


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






... ну, а в третьих... Тебе же надо среднее геометрическое положительных элементов массива? Почему же ты вычисляешь корень N-ой степени из S ? Тогда уже считай К = число элементов больших 0, и вычисляй корень K-ой степени...

Да и вообще у тебя цикл как-то запутан, и к тому же не будет компилироваться - ты ВНУТРИ одного цикла по i делаешь второй - тоже по i... Так нельзя.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

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

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


Цитата(volvo @ 15.05.2006 20:27) *

... ну, а в третьих... Тебе же надо среднее геометрическое положительных элементов массива? Почему же ты вычисляешь корень N-ой степени из S ? Тогда уже считай К = число элементов больших 0, и вычисляй корень K-ой степени...

Да и вообще у тебя цикл как-то запутан, и к тому же не будет компилироваться - ты ВНУТРИ одного цикла по i делаешь второй - тоже по i... Так нельзя.

оффтоп: to volvo: в turbo pascal compile suc. blink.gif Delphi не компилится.


--------------------
made in USSR.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Романтик, а ты уверен, что в TP после того, как откомпилится - будет работать, как положено? smile.gif Ты же нарушаешь правило: управляющая переменная цикла в теле цикла изменяться не должна!!!

Кстати, поэтому ни один новый компилятор (проверено в Delphi/VP/FPC/GPC) не компилирует такие конструкции. Ибо они неработоспособны...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

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

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


Цитата(volvo @ 15.05.2006 20:46) *

Романтик, а ты уверен, что в TP после того, как откомпилится - будет работать, как положено? smile.gif Ты же нарушаешь правило: управляющая переменная цикла в теле цикла изменяться не должна!!!

Кстати, поэтому ни один новый компилятор (проверено в Delphi/VP/FPC/GPC) не компилирует такие конструкции. Ибо они неработоспособны...

Спасибо. good.gif (я правило это знаю, просто не отработав в дельфе попробовал TP).


--------------------
made in USSR.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


если не в падлу напишите программу с изменениями



Сначала отредактируй свой пост и поставь теги!
Если проигнорируешь и во второй раз - закрою тему!

Есть уже два ответа с кодом программы - но они будут скрыты до момента выполнения правил оформления топика (+/- время на реагирование админом/модером)

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Код

uses crt;
const n=4;
var
A:array[1..n] of integer;
i,k:integer; s:longint;
Sg: real;
begin
clrscr;
writeln ('Array A');
for i:=1 to n do
read (A[i]);

k:=0;
s:=1;
for i:=1 to n do
    if A[I]>0 then
       begin
            s:=s*A[i];
            inc(k);
       end;
Sg:=exp(ln(s)/k);
readln;
writeln ('S=',s,' k=',k,' Sg=',Sg:0:3);
readln;
end.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


Код
uses crt;
const n=50;
var
A:array[1..n] of integer;
i,S,m,k:integer;
Sg: real;
begin clrscr;
write('nr??');
readln(m);
writeln ('masiv');
for i:=1 to m do
  read (A[i]);
       s:=1; k:=0;
    for i:=1 to m do
     if A[I]>0 then   begin
         k:=k+1;  s:=s*A[i];
                      end;
Sg:=exp(1/k*ln(s));
writeln;
write('Sg=',Sg:4:2);
       readkey;
end.


--------------------
даже шаг от рая ... это ад!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






спасибо большое.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


обясните пожалусто что это такое- inc(k);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

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

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


Цитата(Булавка @ 16.05.2006 16:32) *

обясните пожалусто что это такое- inc(k);

inc(k) равноценно k:=k+1


--------------------
made in USSR.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

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

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


Цитата(Романтик @ 16.05.2006 15:40) *

inc(k) равноценно k:=k+1


спасибо. теперь все стало понятно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




- Текстовая версия 18.12.2017 4:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"