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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2014, 21:54   #1
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
Печаль Большее из частейших (TurboPascal)

Прочитайте из первой строки число n, n ≤ 15000, со второй строки – n элементов массива a[i],
-maxint ≤ a[i] ≤ maxint.
Выведите в файл то число, которое встречается в массиве наибольшее количество раз. Если
таких чисел несколько, выведите большее из них.

input.txt
7
2 7 4 1 4 5 2
output.txt
4


Задача работает не корректно, а именно когда повторение чисел одинаково и нужно выбрать большее число из них:

Код:
var
 n,i,j,b,a,a1,k,max: longint;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 read(n,a);
 k:=1;
 max:=-maxint;
 for i:=2 to n do
 begin
  a1:=a;
  read(a);
  if a1 <> a then k:=1
  else inc(k);
  if k > max then
  begin
   max:=k;
   b:=a1;
  end;
 end;
 writeln(b);
end.
VladKB1 вне форума Ответить с цитированием
Старый 13.06.2014, 22:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
var
 n,i,j,k,l: longint; a:array[0..15000,1..2] of integer; b:boolean;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 read(n);
 k:=1;
 for i:=1 to n do
 begin
  read(l); b:=false;
  for j:=1 to k do if a[j,1]=l then begin b:=true; inc(a[j,k]); break; end;
  if not b then begin a[k,1]:=l;inc(a[k,2]); end;
 end;
 i:=1;
 for j:=2 to k do if a[j,2]>a[i,2] then i:=j;
 writeln(a[i,1]);

end.
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2014, 22:19   #3
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
С потолка:
Код:
var
 n,i,j,k,l: longint; a:array[0..15000,1..2] of integer; b:boolean;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 read(n);
 k:=1;
 for i:=1 to n do
 begin
  read(l); b:=false;
  for j:=1 to k do if a[j,1]=l then begin b:=true; inc(a[j,k]); break; end;
  if not b then begin a[k,1]:=l;inc(a[k,2]); end;
 end;
 i:=1;
 for j:=2 to k do if a[j,2]>a[i,2] then i:=j;
 writeln(a[i,1]);

end.
Не проверял.

извините но двухмерный массив использовать нельзя (( извините что сразу не написал
VladKB1 вне форума Ответить с цитированием
Старый 13.06.2014, 22:28   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да? Что еще нельзя использовать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2014, 22:39   #5
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Да? Что еще нельзя использовать?
тип переменных string, функции ну вроде бы и всё...
VladKB1 вне форума Ответить с цитированием
Старый 13.06.2014, 22:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну тогда соболезную...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2014, 23:09   #7
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну тогда соболезную...
А не как мой код не можешь подправить, изменить?
VladKB1 вне форума Ответить с цитированием
Старый 13.06.2014, 23:13   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если без массивов то я пас.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2014, 23:16   #9
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Я решил вроде. Добавил if:

Код:
if k >= max then
 begin
  max:=k;
  if a > b then b:=a;
 end;
end;
Теперь работает! И без массивов я не говорил я говорил без двухмерного! Но большое спасибо
вам за проявления помощи! Благодарен ))
VladKB1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большее из двух столбцов Lozus Microsoft Office Excel 12 08.06.2012 11:28
Помещение изображений на большее поле Obert Помощь студентам 2 25.05.2011 17:34
Нечто большее, чем extended firephenix Общие вопросы Delphi 11 01.04.2011 20:09
большее число mshp Помощь студентам 0 27.02.2010 17:13