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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2010, 20:09   #1
bingooo
Пользователь
 
Регистрация: 04.04.2010
Сообщений: 29
Вопрос Найти ошибку в проге с массивами

Удалить из вещественного массива все элементы, отличающиеся от его максимального элемента не более чем на Е, кроме самого максимального элемента ( Е - малое число, например, 0.001).

Вот мой исходник, помогите разобраться, почему он не работает:

uses crt;
const eps=0.001;
b=100;
var
mas:array[1..b] of real;
i,n:integer;
max:real;
begin
clrscr;
write('kolichestvo elementov-');
readln(n);
writeln('massiv');
randomize;
for i:=1 to n do
begin
writeln('mas[',i,']= ');
readln(mas[i]);
end;
for i:=1 to n do
if (mas[i]>=max) or (i=1) then max:=mas[i];
writeln;
writeln('max element: ',max);
for i:=1 to n do
begin
if (abs(max-mas[i])<eps) then mas[i]:=mas[i-1];
writeln('mas[',i,']= ',mas[i]);
end;
end.

Помогите пожалуйста!!!!
bingooo вне форума Ответить с цитированием
Старый 09.04.2010, 21:05   #2
Жека-старший
Пользователь
 
Регистрация: 09.04.2010
Сообщений: 52
По умолчанию

Код:
uses crt;
const eps=0.001;
b=100;
var
mas:array[1..b] of real;
i,n,k:integer;
max:real;
begin
clrscr;
write('kolichestvo elementov-');
readln(n);
writeln('massiv');
randomize;
for i:=1 to n do
begin
writeln('mas[',i,']= ');
readln(mas[i]);
end;
for i:=1 to n do
if (mas[i]>=max) or (i=1) then max:=mas[i];
writeln;
writeln('max element: ',max);
k:=0;
for i:=1 to n do
if (mas[i]=max)or(abs(max-mas[i])>eps) then begin
                                                inc(k);
                                                mas[k]:=mas[i];
                                              end;
for i:=1 to k do
writeln('mas[',i,']= ',mas[i]);
end.
ICQ 594 237 582

Последний раз редактировалось Жека-старший; 09.04.2010 в 21:08.
Жека-старший вне форума Ответить с цитированием
Старый 09.04.2010, 23:26   #3
bingooo
Пользователь
 
Регистрация: 04.04.2010
Сообщений: 29
По умолчанию

Спасибо огромное!!!!
bingooo вне форума Ответить с цитированием
Старый 10.04.2010, 08:47   #4
Жека-старший
Пользователь
 
Регистрация: 09.04.2010
Сообщений: 52
По умолчанию

пожалуйста)
ICQ 594 237 582
Жека-старший вне форума Ответить с цитированием
Старый 10.04.2010, 09:05   #5
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Цитата:
элементы, отличающиеся от его максимального элемента не более чем на Е, кроме самого максимального элемента
если так
то вот это место
Код:
if (mas[i]=max)or(abs(max-mas[i])>eps) then begin
                                                inc(k);
                                                mas[k]:=mas[i];
                                              end;
надо переписать
Код:
if (mas[i]<>max) and (abs(max-mas[i])<=eps) then begin
                                                inc(k);
                                                writeln(mas[i]);
                                              end;
if k=0 then writeln('Таких элементов нет');
а вот это
Код:
for i:=1 to k do
writeln('mas[',i,']= ',mas[i]);
вообще не надо)
Google2010 вне форума Ответить с цитированием
Старый 10.04.2010, 09:20   #6
Жека-старший
Пользователь
 
Регистрация: 09.04.2010
Сообщений: 52
По умолчанию

Цитата:
Удалить из вещественного массива все элементы, отличающиеся от его максимального элемента не более чем на Е, кроме самого максимального элемента
удалить КРОМЕ максимально элемента.

Удалить элементы отличающийся от макса НЕ БОЛЕЕ чем на Е...
т.е. разница максимума и эл-та массива должна быть больше Е.--> если больше, то оставляем в массиве...и максимум оставляем в массиве.

а послскдний цикл, для вывода оставшегося массива
ICQ 594 237 582

Последний раз редактировалось Жека-старший; 10.04.2010 в 09:22.
Жека-старший вне форума Ответить с цитированием
Старый 10.04.2010, 09:30   #7
Жека-старший
Пользователь
 
Регистрация: 09.04.2010
Сообщений: 52
По умолчанию

я иду от противного, т.е. делаю проверку на то, оставлять ли элемент в массиве
ICQ 594 237 582
Жека-старший вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста найти ошибку в проге barbossa Общие вопросы C/C++ 6 01.06.2009 21:33
Не могу найти ошибку в проге!!!!! beeline Помощь студентам 4 18.05.2009 20:49
квест- найти ошибки в проге... BadSanta Помощь студентам 1 16.03.2009 21:48
Как отловить ошибку в своей проге ??? Crazyman Win Api 8 02.09.2008 09:24