Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Сложная задача. Помогите, пожалуйста
etcДата: Суббота, 15.03.2008, 18:25 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 1
Замечания: 0%
Статус: Offline
<В текстовом файле записана последовательность целых чисел. Их количество не ограничено (!). Известно, что одно из них встречается чаще, чем все остальные, вместе взятые. Вывести это число.>
Числа типа longint. Число надо представить четырьмя одномерными массивами с индексами 0..255, то есть в 256-ричном виде. Затем запоминать кол-во повторений в каждом байте-массиве наиболее часто встречающейся из 256 цифр. Что дальше делать, не знаю.
Если вам не тяжело, будьте добры, обьясните, пожалуйста, потому что я сам ничерта не понимаю (алгоритм подсказан учителем). Это моя лаба, скоро сдавать.
 
AlexanderДата: Понедельник, 17.03.2008, 23:03 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Я бы сделал иначе. Самый простой вариант, это хранить все числа и их количество в односвязном списке. При прочтении очередного числа, надо просмотреть список в поисках этого числа. Если найдено, то увеличиваем счётчик этого числа на единицу, а если нет, то добавляем новый элемент в начало списка. Когда весь файл будет прочитан, останится просто найти элемент списка, с максимальным счётчиком.
Вот так будет выглядеть каждый элемент списка:
Code
Element=record
    Value,                 {сам элемент-число}
    N:LongInteger;     {счётчик элемента}
    Next:POINTER;     {указатель на следующий элемент}
end;

Это явно проще, чем твой вариант, суть которого я так и не понял. Вопросы есть? smile


Скажем дружно- нафиг нужно!
 
etcДата: Вторник, 18.03.2008, 07:18 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 1
Замечания: 0%
Статус: Offline
Количество цифр, а значит, и их повторений, безгранично, то есть выходит за рамки типа longint.
Поэтому вариант с запоминанием количества повторений каждого числа не годится. Операции над байтами - это как обязательное условие.
Препод рассказал в общих чертах, как это должно выглядеть, я написал выше. Может, я неверно толкую. Кто-нибудь может решить?
 
AlexanderДата: Вторник, 18.03.2008, 08:09 | Сообщение # 4
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Code
Количество цифр, а значит, и их повторений, безгранично, то есть выходит за рамки типа longint.

тогда тебе нужно писать класс, который сможет работать со сколь угодно длинными числами, ведь вообще без счётчика тебе ну никак не обойтись.
И вот тебе другой вариант:
Значение типа longint имеет размер 4байта=4*8=32бита. Объявляешь массив массив из 32 элементов, каждый элемент которого отвечает за 1 бит числа. Когда весь файл будет прочитан, ты из этого массива без проблем восстановишь самое часто встречающееся число т.к.
Quote
встречается чаще, чем все остальные, вместе взятые


Скажем дружно- нафиг нужно!
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;