![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
npl |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Даны названия N различных обществ (N заданное число), фигуристы которых участовали в соревновании. О каждом фигуристе известно: фамилия, название общества и 10 оценок за его выступление. Требуется для каждого спортивного общества определить фигуриста, показавшего наивысший результат, считая его единственным. Баллы, полученные фигуристом, подсчитываются следующим образом: максимальная и минимальная оценки отбрасываются, а из остальных формируется средняя. При вводе данных обеспечить уникальность наименований обществ и обязательную принадлежность фигуриста к одному из них.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
... и что? Хорошее задание, только зачем ты привел его? Чтоб тебе все сделали и выложили "на тарелочке"? Иди в Поиск, там есть задачи про хоккейные и футбольные команды, группы студентов с оценками на экзамене, разбирайся, как они сделаны, начинай делать свое задание, что будет непонятно - приходи, спрашивай...
А так просто вываливать задание безо всяких попыток решить (и показать остальным, что ты пытался, но у тебя не получилось) - это по меньшей мере обрекать тему на забвение... |
npl |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Частично задача решена. А именно, я создаю типизированный файл, куда помещаю фамилии, названия обществ и оценки.
|
andriano |
![]()
Сообщение
#4
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
|
npl |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Вот код
Пока я определил максимальную, минимальную оценку, отбросил их и нашёл среднюю. Добавлено через 5 мин. Думаю, что делать дальше. Создать ещё один типизированный файл, туда поместить фамилии фигуристов, названия обществ и их средние оценки. И дальше работать с этим файлом, чтобы для каждого общества найти фигуриста с максимальным результатом. |
npl |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Народ, откликнитесь.
|
andriano |
![]()
Сообщение
#7
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
То, что ты сделал, возможно, подходит под определение "бессмысленная работа с типизированным файлом", но никак не "работа с текстовым файлом".
Бессмысленная потому, что все эти манипуляции не нужны. Все операции целесообразно делать непосредственно в оперативной памяти, введя массив типа figurist и целую переменную, индицирующую длину заполненной части этого массива. Что же касается темы, то вероятнее всего, имеется в виду чтение и разбор входного текстового файла с фигурисами, а также вывод результата работы в текстовый же файл. Пока что на том этапе, что ты опубликовал, у тебя содержится несколько непоняток и минимум одна ошибка. Непонятки заключены в том, почему ты считаешь, что Ф.И.О. способны всегда поместиться в 10 символов, а также длниа названия спортивного общества не может превышать этой величины? Ошибка - в том, что ты перед чтением оценки зачем-то удаляешь из строки 22 симвлоа. Почему именно 22? Это такая мировая константа? Сообщение отредактировано: andriano - 9.12.2007 19:01 |
npl |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
То, что ты сделал, возможно, подходит под определение "бессмысленная работа с типизированным файлом", но никак не "работа с текстовым файлом". Бессмысленная потому, что все эти манипуляции не нужны. Все операции целесообразно делать непосредственно в оперативной памяти, введя массив типа figurist и целую переменную, индицирующую длину заполненной части этого массива. Что же касается темы, то вероятнее всего, имеется в виду чтение и разбор входного текстового файла с фигурисами, а также вывод результата работы в текстовый же файл. Пока что на том этапе, что ты опубликовал, у тебя содержится несколько непоняток и минимум одна ошибка. Непонятки заключены в том, почему ты считаешь, что Ф.И.О. способны всегда поместиться в 10 символов, а также длниа названия спортивного общества не может превышать этой величины? Ошибка - в том, что ты перед чтением оценки зачем-то удаляешь из строки 22 симвлоа. Почему именно 22? Это такая мировая константа? Результат не нужно выводить в текстовый файл. Ф.И.О. в 10 символов, потому что в текстовом файле, который есть Ф.И.О. не превышает 10 символов. А дальше идёт название общества. Она тоже не больше 10. 10+пробел+10+пробел=22. Минимальные, максимальные он находит правильно. Среднее тоже. Добавлено через 4 мин. Лучше подскажите, как из средних для каждого общества найти фигуриста с максиальным результатом. |
andriano |
![]()
Сообщение
#9
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Если проверка задания будет выполнена по уму, то файл с фигуристами тебе будет предложен другой. Есть ли уверенность, что твоя программа с ним справится?
"Не больше" и "равно" - далеко не одно и то же. Если, скажем, фамилия - Иванов, а название общества - Динамо, то есть ли уверенность, что удалять все равно надо 22 символа? Тот факт, что при существующем файле максимальное и минимальное находит правильно, еще не говорит о том, что так будет всегда. Ты считал средние не для каждого общества, а для каждого фигуриста. Теперь надо соотнести фигуристов с конкретными обществами и для каждого общества найти максимальное среди средних для входящих в него фигуристов. |
npl |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Если ФИО меньше 10, то там оставшееся место заполнено пробелом.
Добавлено через 5 мин. Вот содержание исходного текстового файла http://npfiles.ru/files/figur1.txt Добавлено через 1 мин. Ты считал средние не для каждого общества, а для каждого фигуриста. Теперь надо соотнести фигуристов с конкретными обществами и для каждого общества найти максимальное среди средних для входящих в него фигуристов. И как это сделать? |
andriano |
![]()
Сообщение
#11
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
А есть ли описание формата файла?
Не может оказаться, что в другом файле будет заполняться пробелами до 12-го символа, а в третьем - все разной длины и с единственным пробелом-разделителем? Для того, чтобы решать задачу, надо точно знать условие. В текстовых файлах нет определенной структуры, поэтому обычно нет никакого выравнивания проблами по длине, а при необходимости используются разделители: пробел, символ табуляции, запятая, конец строки... Ты сам составлял файл или его тебе дал преподаватель? |
npl |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Я сам составлял файл. Задачу надо решать для конкретного своего файла.
Добавлено через 13 мин. andriano, может уже предложите конкретные решения, а не пустые слова? |
andriano |
![]()
Сообщение
#13
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Я сам составлял файл. Задачу надо решать для конкретного своего файла. (наверное, из меня вышел бы очень вредный преп. ![]() Цитата Добавлено через 13 мин. andriano, может уже предложите конкретные решения, а не пустые слова? Если подробнее, то я могу порекомендовать следующий алгоритм разбора строки: 1. Удаляем пробелы в начале. 2. Находим позицию разделителя L. 3. Если L = 0, выводим сообщение об ошибке, иначе продолжаем работу. 4. Копируем в поле имени L-1 символов. 5. Удаляем L символов в начале строки. 6. Удаляем пробелы в начале. 7. Находим позицию разделителя L. 8. Если L = 0, выводим сообщение об ошибке, иначе продолжаем работу. 9. Копируем в поле названия команды L-1 символов. 10. Удаляем L символов в начале строки. 11. Цикл длиной 9. 12. Удаляем пробелы в начале. 13. Находим позицию разделителя L. 14. Если L = 0, выводим сообщение об ошибке, иначе продолжаем работу. 15. Копируем во временную строку L-1 символов. 16. Пытаемся преобразовать эту строку в число. 17. Если преобразование не удалось - выводим сообщение об ошибке, иначе - продолжаем работу. 18. Удаляем L символов в начале строки. 19. Конец цикла. 20. Удаляем пробелы в начале. 21. Пытаемся преобразовать оставшуюся часть строки в число. 22. Если преобразование не удалось - выводим сообщение об ошибке, иначе - продолжаем работу. В качестве ваианта: 11. Дописываем разделитель в конец строки. 11а. Цикл длиной 10. строки 20-22 - не нужны. |
npl |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Да забудьте про преобразование. Оставлю так, как есть. Как найти фигуриста с максимальным результатом для каждого общества?
|
andriano |
![]()
Сообщение
#15
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Самый простой способ - перебором.
PS. А алгоритм разбора строки я бы порекомендовал подправить. Сообщение отредактировано: andriano - 9.12.2007 20:16 |
npl |
![]()
Сообщение
#16
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Не получается найти максимальный элемент. Когда находится максимальный среди 10 оценок, там всё просто. А как сделать среди средних? Дайте конкретный пример.
|
andriano |
![]()
Сообщение
#17
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Коль скоро для каждого фигуриста все равно вычисляется средняя оценка, то имеет смысл предусмотреть в структуре поле для ее хранения.
Ну и потом, естественно, перебирать эти поля в поисках максимума. |
npl |
![]()
Сообщение
#18
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
Коль скоро для каждого фигуриста все равно вычисляется средняя оценка, то имеет смысл предусмотреть в структуре поле для ее хранения. Ну и потом, естественно, перебирать эти поля в поисках максимума. И как их перебирать. У меня не работает. Приведите свой код. Сообщение отредактировано: npl - 9.12.2007 22:50 |
andriano |
![]()
Сообщение
#19
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
А ты не заметил, что твоя программа не совсем соответствует условию задачи?
В условии требуется анализировать общества (и именно их количество указано), а у тебя предусмотрен тип данных для описания фигуриста и нет типа данных для общества. |
npl |
![]()
Сообщение
#20
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: http://npfiles.ru Репутация: ![]() ![]() ![]() |
А ты не заметил, что твоя программа не совсем соответствует условию задачи? В условии требуется анализировать общества (и именно их количество указано), а у тебя предусмотрен тип данных для описания фигуриста и нет типа данных для общества. Есть у меня тип данных для общества. |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 10:12 |