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

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

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

 
 Ответить  Открыть новую тему 
> нахождение нечетных номеров массива, нати среднее арифметическое нечетных ном
BOT
сообщение 3.12.2005 18:57
Сообщение #1


Гость






здравствуйте уважаемые.
помогите найти среднее арифметическое нечетных одномерного массива.
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 18:59
Сообщение #2


Гость






поправка,
нечетных элементов массива
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 19:01
Сообщение #3


Гость






s := 0; k := 0;
for i := 1 to n do
if a[i] mod 2 = 1 then begin
s := s + a[i]; k := k + 1;
end;
if k <> 0 then
s := s / k;
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 19:30
Сообщение #4


Гость






blink.gif извини, а что у тебя "k"?

размерность массива?
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 19:33
Сообщение #5


Гость






Размерность массива = N
К это число найденных нечетных чисел...
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 19:46
Сообщение #6


Гость






почему то у меня на k выдает ошбику, когда делим s:=s/k
пишет type mismatch
все стоит integer.и масив и все переменные, что не так? unsure.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 19:47
Сообщение #7


Гость






При делении не будет Integer... S опиши как Real ...
 К началу страницы 
+ Ответить 
Дож
сообщение 3.12.2005 19:48
Сообщение #8


Бывалый
***

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

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


BOT
Напиши: s:=round(s/k)

Сообщение отредактировано: Дож - 3.12.2005 19:49


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 19:52
Сообщение #9


Гость






Дож,
ты уверен, что получить при <1, 3, 3> ответ 2 вместо 2.333... это то, что нужно?
 К началу страницы 
+ Ответить 
Дож
сообщение 3.12.2005 19:55
Сообщение #10


Бывалый
***

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

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


Цитата
ты уверен, что получить при <1, 3, 3> ответ 2 вместо 2.333... это то, что нужно?

В поставленной задаче ни слова о точности результата.


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 19:57
Сообщение #11


Гость






Правда? А голова тебе зачем? ЦЕЛЫМ делать среднее арифметическое?
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 20:02
Сообщение #12


Гость






Код
uses crt;
var
M: array [1..100] of integer;
var
a,b,k:integer;
s:real;
BEGIN
randomize;
clrscr;
 writeln('enter a');
 readln(a);
 for b:=1 to a do
  begin
   M[b]:=random(11)-10;
   writeln(' Vivod Massiva ',M[b]);
  end;
     s:=0;k:=0;
for b:=1 to a do
 begin
  if M[b] mod 2=1 then
   begin
   s:=s+M[b]; k:=k+1;
   end;

  if k<>0 then
   begin
    s:=Round(s/k);
   end;
   end;
writeln('S= ',S:5:1);

readkey;
END.

почему S постоянно равна 0? даже когда нуля нет на нечетных позициях?
 К началу страницы 
+ Ответить 
Дож
сообщение 3.12.2005 20:05
Сообщение #13


Бывалый
***

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

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


Bot
ЗАЧЕМ ты объявил переменную s как real а потом округляешь ее?


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 20:07
Сообщение #14


Гость






убрал round, все равно s=0
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 20:07
Сообщение #15


Гость






Потому что
if k <> 0 then
s := s / k; { НЕ делать Round !!! }


и приведи свои данные, что ты вводишь?

Дож, убедился?
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 20:10
Сообщение #16


Гость






ввожу любое число, например 5, заполняется массив числами, даж если нет нуля, все равно пишет что S=0
 К началу страницы 
+ Ответить 
Дож
сообщение 3.12.2005 20:11
Сообщение #17


Бывалый
***

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

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


Цитата(volvo @ 3.12.2005 20:07)
Дож, убедился?

Ага... yes2.gif


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2005 20:11
Сообщение #18


Гость






У тебя генерируются отрицательные числа... С ними такое не проходит... Бери еще и по модулю:
if abs(M[b]) mod 2=1 then
 К началу страницы 
+ Ответить 
BOT
сообщение 3.12.2005 20:16
Сообщение #19


Гость






СПАСИБО! +)
 К началу страницы 
+ Ответить 

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

 



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