Типизированный файл, Задача |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Типизированный файл, Задача |
-Анюта- |
Сообщение
#1
|
Гость |
Люди, пожалуйста, помогите решить задачу! Угроза недопуска к экзаменам
Организовать типизированный файл, в котором находятся данные об участниках соревнований по многоборью: фамилия, имя, страна, массив результатов. Найти победителя – участника, набравшего наибольшее количество баллов. Напишите встроенную подпрограмму-процедуру для организации безопасного ввода фамилии и имени участника, а также страны. |
volvo |
Сообщение
#2
|
Гость |
Поиск по ключевому слову "типизированный"...
|
Гость |
Сообщение
#3
|
Гость |
Спасибо, только вот не могу понять как написать встроенную подпрограмму-процедуру для организации безопасного ввода фамилии и имени участника, а также страны.
|
Гость |
Сообщение
#4
|
Гость |
Попыталась решить - вот что получилось:
Код type base=record fam, name, strana:string; rez:real; end; var igrok:array[1..10] of base; i,p:integer; begin writeln('‚ўҐ¤ЁвҐ ¤ лҐ ®Ў гз бвЁЄ е б®аҐў®ў Ё©'); for i:=1 to 10 do with igrok[i] do begin writeln ('‚ўҐ¤ЁвҐ д ¬Ё«Ёо гз бвЁЄ '); readln(fam); Writeln ('‚ўҐ¤ЁвҐ Ё¬п гз бвЁЄ '); readln(name); Writeln('‚ўҐ¤ЁвҐ бва г. Є®в®аго ЇаҐ¤бв ў«пҐв гз бвЁЄ'); readln (strana); writeln('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® Ў ««®ў, Ўа ле гз бвЁЄ®¬'); readln(rez); end; writeln('€Ја®Є. Ўа ўиЁ© ЁЎ®«м襥 Є®«ЁзҐбвў® Ў ««®ў:'); for i:=1 to 10 do with igrok[i] do begin rez:=p; for i:=1 to 10 do with igrok[i] do begin if rez>p then rez:=p; end; writeln (fam,' ',name, ' - ',strana); end; readln end. Но что-то в концовке не получается, плюс несмогла придумать подпрограмму-процедуру. Если кому нетрудно - пожалуйста, помогите. Заранее благодарна. Анюта. Сообщение отредактировано: GoodWind - |
Анютка |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
Ребят, ну помогите мне, пожалуйста...
Завтра сдавать уже |
volvo |
Сообщение
#6
|
Гость |
Цитата для организации безопасного ввода Вот это можно пояснить? Что значит "безопасного"? Какие опасности могут тебя подстерегать при вводе строки? Понятно, что при вводе чисел подводных камней может быть много... Но строка ? |
Анютка |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
я узнала: нужно написать такую подпрограмму-процедуру, которая бы проверяла написаны ли фамилия, имя и страна русскими буквами. Если присутствуют какие-либо символы и не русские буквы, то выводить ошибку.
И еще я не разобралась: как найти участника, набравшего максимальное количество баллов? Сообщение отредактировано: Анютка - |
volvo |
Сообщение
#8
|
Гость |
Procedure GetInput(Var s: string); Эта процедура будет запрашивать ввод строки заново до тех пор, пока в строке не введены ТОЛЬКО русские символы. |
Анютка |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
Большое спасибо! А как найти участика, набравшего больше всех баллов?
|
Анютка |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
Блин! Я соовсем запуталась! Ничего не получается
Volvo, пожалуйста, скинь мне решение этой задачи целиком... Очень тебя прошу... В четверг сдавать (крайний срок)... |
Romtek |
Сообщение
#11
|
Знаток Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: 2 |
Точно также, как ищут максимальное число в обычном массиве, сравнивается конкретное поле rez.
-------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
Анютка |
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
Я знаю, что точно так же, но ничего не получается Я пол дня пыталась написать эту программу...
|
Lapp |
Сообщение
#13
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Заводишь real переменную, скажем MaxRez.
Кладешь туда 0 (ноль) Читаешь файл, проходишься по всем записям, читаешь число rez. Сравниваешь его с MaxRez. Если оно меньше, чем MaxRez - ничего не делаешь, переходишь к следующей записи Если оно больше либо равно MaxRez - присваиваешь его значения переменной MaxRez В конце цикла максимальный результат лежит в MaxRec -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#14
|
Гость |
lapp, ну и что это тебе даст? Задание в чем заключается, ты внимательно прочел? Перечитай:
Цитата А как найти участика, набравшего больше всех баллов? Понимаешь, НЕ число баллов, а участника... Так что кроме maxRez надо еще и Record сохранять... |
Lapp |
Сообщение
#15
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Извини, спутал.
Интересно, что ведь сначала написал все, чтоб искать именно участника (в качестве доказательства - наличие слов "либо равно"), а потом вдруг решил, что это не надо (стукнуло в голову!) и убрал лишние строки.. Вот исправленный вариант. Заводишь переменную типа base, скажем Winner Заводишь real переменную, скажем MaxRez. Кладешь туда 0 (ноль) Читаешь файл, проходишься по всем записям, читаешь число rez. Сравниваешь его с MaxRez. Если оно меньше, чем MaxRez - ничего не делаешь, переходишь к следующей записи Если оно больше либо равно MaxRez - присваиваешь его значения переменной MaxRez, а значение всего рекорда присваиваешь переменной Winner. В конце цикла максимальный результат лежит в MaxRec, а победитель - в Winner. Но тут есть одно но: результаты нескольких участников могут быть равны, тогда победитель не один (именно поэтому я проверяю равенство с большестью, а не с меньшестью, что было бы рациональнее, если ищется только максимальный результат). Выход отсюда не совсем тривиален. Нужно либо завести еще один массив типа base, но непонятки возникают с его размерностью. Можно положить ее такой же, как у исходного массива, но если волнует проблема минимизации памяти, то лучше сделать список. Правда, в задании не сказано, что делать с найденными победителями. Если просто печатать их данные, то можно избежать многих проблем . И еще раз извиняюсь за отъезд крыши в неподходящий момент.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Анютка |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
Задачу сегодня не сдала Объявили строгий выговор и дали время до вторника...
Ребят, может поможете бедной девушке сдать, наконец, эту задачу? Нужен полный текст программы. Ну пожалуйста-а-а.... ПС: После того, как будет найден участник с максимальным количеством баллов, нужно вывести на экран всю информацию о нём. |
Lapp |
Сообщение
#17
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Ок, Анютка сделаем. Сейчас настучу че-нть.
Только скажи- что у тебя за кодировка такая была? Я пробовал подобрать, но максимум, чего добился - это по нескольку русских букв от каждого слова.. Это что, украинский или еще что-то? Я все это заменю на нормальную виндусовую кодировку, если нужно другую - сама меняй. Ок? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
Сообщение
#18
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Ну вот, кажется готово..
Я попытался максимально сохранить твою прогу, но кое-что все же пришлось изменить. Например, вместо фиксированной размерности 10 я ввел константу M, в файле она равна 10. Просто в отладке вводить все десять записей было в лом.. Далее, твое поле name я заменил на поле imq (имя). Но главное - рекордсменов (т.е. тех, кто набрал максимальный балл) может быть несколько. Поэтому программа усложнилась. Я снабдил ее подробными коментариями, так что думаю, ты разберешься. Если есть вопросы - задавай. uses CRT; -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Анютка |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Женский Реальное имя: Анна Репутация: 0 |
Огромное тебе спасибо!!!
Встроенную подпрограмму-процедуру попробую написать сама. |
volvo |
Сообщение
#20
|
Гость |
lapp, а ты в курсе, что вот эту конструкцию:
else if rez=MaxRez then begin любой здравомыслящий преподаватель зарубит на корню? Я, например, такое бы не пропустил... Ну нельзя так сравнивать вещественные числа.. Анютка, так что будь готова к дополнительным вопросам в эту сторону... |
Текстовая версия | 24.12.2024 8:06 |