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

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

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

> Задача на списки, Создание из файла списка
-=Считывающий=-
сообщение 19.10.2006 16:45
Сообщение #1


Новичок
*

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

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


Доброе время суток!
Вот значится какая проблемма, есть файл следующе структуры:
<Фамилия_1> <Ответ1> <Ответ2>
...
<Фамилия_n> <Ответ1> <Ответ2>
, причем у каждого человека по два РАЗНЫХ ответа.

Нужно найти все разные ответы, и найти кол-во повторов каждого из них.

В принципе уже понял как что делать, но, неповерите, запоролся в самом начале)))
Решил создать массив строк, чисто для удобства и вот тут я появилась проблемма.
Происходит следующее, в процессе формирования - все ок, но как только процедура по созданию массива заканчивает работу, весь массив смещается на одну позицию вниз, т.е. 1 становится 2, 2 -3 и т.д.

Вот код и файл БД)), подскажите, в чем проблемма?



Прикрепленные файлы
Прикрепленный файл  L_2_41.PAS ( 5.02 килобайт ) Кол-во скачиваний: 229
Прикрепленный файл  1.TXT ( 61 байт ) Кол-во скачиваний: 229
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
volvo
сообщение 19.10.2006 17:06
Сообщение #2


Гость






Ты приведи свою процедуру для создания "массива" (может, все-таки, списка?) в ЧИСТОМ виде, без наворотов интерфейса... А то смотреть на АЛГОРИТМ невозможно, все твои "рюшечки" его закрывают... А толку от них? Если программа НЕ РАБОТАЕТ.

Приводи программу, которая реализует логику, и не вылетает в Segmentation Fault после того, как был выбран первый пункт меню, и нажат Enter (таким образом, я физически не могу перейти ко второму пункту, и посмотреть, что же программа печатает, компиляцию и тестирование в Turbo Pascal не предлагать, если FPC показывает мне ошибки и недочеты, то TP просто "замалчивает" их, и веры программе еще меньше)
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 19.10.2006 17:44
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


а ради чего нужно затевать извращения с текстовым файлом?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 19.10.2006 18:33
Сообщение #4


Новичок
*

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

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


Чисто сама процедура:


Прикрепленные файлы
Прикрепленный файл  01.PAS ( 311 байт ) Кол-во скачиваний: 192
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 19.10.2006 18:44
Сообщение #5


Новичок
*

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

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


убито почти все оформление


Прикрепленные файлы
Прикрепленный файл  002.PAS ( 3.68 килобайт ) Кол-во скачиваний: 202
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 19.10.2006 19:31
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


На вопросы принципиально не отвечаешь?...
И цикл while тоже принципиально не используешь?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 19.10.2006 19:38
Сообщение #7


Новичок
*

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

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


работа с файлом - требование заказчика) а вот на счет while...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 19.10.2006 20:06
Сообщение #8


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


именно с текстовым? типизированные он не любит?

Сообщение отредактировано: мисс_граффити - 19.10.2006 20:06


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 21.10.2006 7:20
Сообщение #9


Новичок
*

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

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


Так, вобщемто я забил на масссив. Вот примерный скелет решения через список. Умоляю, посмотрите!... там трабл с пролистыванием второго. Оч надо...


Прикрепленные файлы
Прикрепленный файл  002.PAS ( 5.1 килобайт ) Кол-во скачиваний: 197
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.10.2006 11:53
Сообщение #10


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


С какой стати мы должны помогать и вникать в твой код, если ты не удосуживаешься даже отвечать на поставленные вопросы, напрямую относящиеся к делу?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 21.10.2006 13:28
Сообщение #11


Новичок
*

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

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


Извиняюсь. Честно. Просто все в торопях делаю. На счет текстового файла. Да) Т.е. работать надо именно с тектовым файлом.

И еще раз прошу прощения...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 21.10.2006 19:37
Сообщение #12


Новичок
*

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

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


Ну правда, умоляю, помогиите разобраться... если бы мне нужно было просто сделать, я бы так и сказал. А хочется понять... по этому и выклыдываю всякую дребедень. ПЛЗ, помогите....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.10.2006 20:29
Сообщение #13


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


если читать задачу, то вообще пофиг, какие студенты дали тот или иной ответ говорили.
чтобы добиться того, что написано, нужно:
0. создаем список ответов. запись будет содержать 3 поля - информационное, куда записывается "булка", "сдоба" и т.д.; количество таких ответов; указатель на след. эл-т.
1. читаем строку из файла
2. "выдергиваем" из нее первый ответ.
3. проходим по списку. если такой ответ уже был, прибавляем единичку к количеству, если не было - добавляем новый элемент.
4. "выдергиваем" второй ответ.
5. идем на п.2

и так, пока не кончатся строки.
чем тебя не устраивает этот алгоритм?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 21.10.2006 20:54
Сообщение #14


Новичок
*

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

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


кстати мысль... спасибки! попробую, как зделаю, выложу)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 22.10.2006 11:13
Сообщение #15


Новичок
*

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

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


Только одно но:

3. проходим по списку. если такой ответ уже был, прибавляем единичку к количеству, если не было - добавляем новый элемент.

Нет. Если ответ уникален - тогда новый элемент списка, если нет, то просто ничего не делать, т.е. пропустить его. А вот там где мы создали новый элемент, там поставить доп. процедуру для анализирования всего файла на предмет повторов в нем ответа схожего с полем нашего элемента.

Вроде так... хотя могу ошибаться.... Ваше мнение?)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 22.10.2006 11:38
Сообщение #16


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


делай как хочешь.
твоя программа.

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

Сообщение отредактировано: мисс_граффити - 22.10.2006 11:40


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 22.10.2006 12:14
Сообщение #17


Новичок
*

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

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


Просто вопрос в том, как будет работать.... Если предположить:
3. проходим по списку. если такой ответ уже был, прибавляем единичку к количеству, если не было - добавляем новый элемент, то имея файл

Иванов 1 2
Петров 3 1
Сидоров 2 1

Получаем:
Сначала, по алгоритму создаемтся новый эл. с полями 1,1(ну, предположим, что число повторов по умолчанию 1);
Затем создается 2,1; 3,1, а вот потом, к какому числу повторов будет прибывлена едицица? Получается надо тогда дописывать поиск элемента списка с заданным информационным поме 1 равным 1 и во второе(количество) делать плюс один? или как?... Вот поэтому и спрашиваю.... а на счет файла - да)... это весело)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 22.10.2006 12:22
Сообщение #18


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


смотри, что мы должны делать:
1. По моей задумке.
Читаем ответ из файла. Сравниваем его с первым значением из списка. Совпало? +1 во второе поле. Не совпало? Переходим на следующий элемент. Совпало?... Список кончился (т.е. в поле Next нуль-указатель), а элемент так и не нашелся? Добавляем новый такой элемент. Читаем следующий ответ из файла.
Для реализации потребуется:
цикл while, выход из которого происходит в случае окончания списка или нахождения элемента; рабочий указатель на текущий элемент, указатель на начало списка.

2. что предлагаешь ты.
Читаем ответ. Проходим список в поиске его. Если не нашли, добавляем и ищем по всему файлу вниз. Доходим до конца файла. Закрываем файл. Открываем файл. Перематываем до исследованного элемента. Идем вниз. Читаем следующий элемент. Опять изучаем список....

Что больше нравится - то и реализуй.
Я не вижу смысла в таких сложностях - ходить по списку ведь приходится не меньше...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.10.2006 12:26
Сообщение #19


Гость






Цитата
Получается надо тогда дописывать поиск элемента списка с заданным информационным поме 1 равным 1
Зачем? Ты же все равно проходишь по списку... Вот нашел ты ответ. Он уже есть в списке... Прибавь 1 к счетчику, и все... Зачем еще один поиск элемента?
 К началу страницы 
+ Ответить 
-=Считывающий=-
сообщение 22.10.2006 12:35
Сообщение #20


Новичок
*

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

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


Аааааа!!!! Вот теперь я понял, ссори, тупой)) give_rose.gif
Попробую)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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