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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2009, 23:51   #1
Эдвин Галстук
Новичок
Джуниор
 
Регистрация: 24.10.2009
Сообщений: 2
Вопрос В чем ошибка...

Смысл алгоритма в поиске кол-ва одинаковых элементов массива. ВРоде правильно но результат иначе. Вроде смотрит только первый элемент массива... Не пойму... Подскажите если не трудно
Код:
program upp;
var a:array [1..10] of integer;
i,p,j,s:integer;
begin
for i:=1 to 10 do
    readln(a[i]);
    s:=0;
for i:=1 to 10 do begin
    p:=a[i]; j:=0;
             for i:=1 to 10 do begin
             if a[i]=p then j:=j+1; end;
             if s<j then s:=j;
end;
writeln('  ',s);
end.
P.s. Паскаль учу в школе, базовый уровень. Так что сильно не ругайте. Может где точку с запятой забыл поставить...
Эдвин Галстук вне форума Ответить с цитированием
Старый 25.10.2009, 01:33   #2
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию

Что Вы имеете ввиду под фразой "Смысл алгоритма в поиске кол-ва одинаковых элементов массива" ??? Видь фактически в массиве может быть быть несколько наборов одинаковых чисел. Тогда, что искать - какой элемент встречался чаще всего, или какой реже всего, или вообще нужно все совпадения вывести на экран? Уточните задачу...
ikot вне форума Ответить с цитированием
Старый 25.10.2009, 02:23   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

И во внешнем, и во внутреннем циклах for Вы используете одну и ту же переменную i в качестве счётчика. Удивляюсь, что компилятор это вообще пропустил
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 25.10.2009, 20:01   #4
Эдвин Галстук
Новичок
Джуниор
 
Регистрация: 24.10.2009
Сообщений: 2
По умолчанию

Код:
program upp;
var a:array [1..10] of integer;
i,j,k,n:integer;
begin
j:=0;
for i:=1 to 10 do
    readln(a[i]);
    j:=j+1;
    a[j]:=a[i];
for i:=1 to 10 do
    n:=k; k:=0;
    for j:=1 to 10 do
    if a[i]=a[j] then k:=k+1;
    if n<k then n:=k;
    
    writeln(' ',n);
    end.
Я переписал т.к. потом пересмотрел программу и понял что написал полный бред.

Цитата:
Сообщение от ikot Посмотреть сообщение
Что Вы имеете ввиду под фразой "Смысл алгоритма в поиске кол-ва одинаковых элементов массива" ??? Видь фактически в массиве может быть быть несколько наборов одинаковых чисел. Тогда, что искать - какой элемент встречался чаще всего, или какой реже всего, или вообще нужно все совпадения вывести на экран? Уточните задачу...
Смысл: найти самое большое количество совпадающих элементов, и вывести их кол-во.

Цитата:
Сообщение от Greblin Посмотреть сообщение
И во внешнем, и во внутреннем циклах for Вы используете одну и ту же переменную i в качестве счётчика. Удивляюсь, что компилятор это вообще пропустил
Да,да,да ошибочка из-за не понимания.

Всем большое спасибо. Иначе бы не исправил. Тему можно закрывать.

Последний раз редактировалось Эдвин Галстук; 25.10.2009 в 20:03.
Эдвин Галстук вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? Smartbass Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2009 21:55
В чем ошибка? AleNa666 Паскаль, Turbo Pascal, PascalABC.NET 2 28.04.2009 14:28
в чем ошибка Arassir Помощь студентам 3 01.04.2009 21:51
В чем ошибка? delphyok Паскаль, Turbo Pascal, PascalABC.NET 6 24.02.2009 23:33
В чем ошибка ? Droid Общие вопросы Delphi 13 03.05.2008 18:17