|
Вопрос # 3 431/ вопрос открыт / |
|
Здравствуйте, эксперты!
НА ВХОДЕ подаются сведения о сдаче 3-х экзаменов: русский язык, матем и ивт. в первой строке n- количество абитуриентов. каждая из следующих n строк имеет формат "Ф_И_балл1_балл2_балл3", (Ф_И)<50 символов
0<каждый балл<100
НА ВЫХОДЕ "Ф_И_max средний балл".
застрял на том, что не получается обработать баллы. помогите пожалуйта.
 |
Вопрос задал: I{ () T (статус: Посетитель)
Вопрос отправлен: 22 ноября 2009, 13:12
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, I{ () T!
Можно сделать так:
1) сначала считываем количество студентов
2) в цикле считываем фамилию, имя и оценки (всё в одну строчку)
3) находим первый, а затем второй пробел - выделяем фамилию и имя
4) находим третий пробел - между вторым и третьим пробелами находим оценку1
5) находим четвёртый пробел - между третьим и четвёртым пробелами находим оценку2
6) между четвёртым пробелом и концом строки находим оценку3
7) суммируем оценки. если оценка больше максимальной, то запоминаем текущую фамилию и сумму оценок
8) после выхода из цикла выводим запомненную фамилию и сумму оценок, делённую на три.
недостаток:
программа умеет работать только с данными, введёнными именно в таком формате, который был приведён в примере. т.е. не допускаются два-три или больше пробела вместо одного.
Приложение: Переключить в обычный режим- program Project1;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils, StrUtils;
-
- var
- i, k, k1, n, maxSum, mark1, mark2, mark3 : integer;
- fam, maxFam, tmpStr : string;
- begin
- maxSum:=0;
- readln(n);
- for i:=1 to n do
- begin
- readln(tmpStr);
-
-
-
-
-
-
-
- k:=k1;
-
-
-
- k:=k1;
-
-
-
- if maxSum<(mark1+mark2+mark3) then
- begin
- maxFam:=fam;
- maxSum:=mark1+mark2+mark3;
- end;
- end;
- writeln;
- writeln(maxFam, ' ', maxSum div 3);
- readln;
- end.
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 22 ноября 2009, 15:28
Оценка за ответ: 5
Комментарий к оценке: no comments
|
Мини-форум вопроса
Всего сообщений: 49; последнее сообщение — 13 декабря 2009, 17:32; участников в обсуждении: 5.
Страницы: [1] [2] [3] [Следующая »]
|
I{ () T (статус: Посетитель), 22 ноября 2009, 13:14 [#1]:
да, и максимальный балл только один у одного абитуриента может быть.
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Мережников Андрей (статус: Абитуриент), 22 ноября 2009, 13:44 [#2]:
из условия задачи, как-раз, не следует что максимальный средний балл может быть только у одного абитуриента!
|
|
I{ () T (статус: Посетитель), 22 ноября 2009, 13:50 [#3]:
вывести в блокноте нужнотолько ОДНОГО абитуриента с максильным средним баллом.
2Андрей. не понял вас. из чего в условии вытекает ваше следствие?
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Death_Master (статус: Посетитель), 22 ноября 2009, 13:57 [#4]:
Тоесть строка вида "Фамилия Имя_99_70_30"?
Если так, то разобьём строку на части...
http://delphi.about.com/cs/adptips2002/a/bltip0902_2.htm
потом части можно обрабатывать отдельно...
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
|
|
I{ () T (статус: Посетитель), 22 ноября 2009, 14:06 [#5]:
это на входе. вот пример.
иванов иван 90 30 20
петров петр 25 30 99
тимофеев тимофей 25 30 70
козлов павел 70 80 90
НА ВЫХОДЕ
козлов павел 120.
вот.
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Егор (статус: 10-ый класс), 22 ноября 2009, 14:17 [#6]:
Цитата (I{ () T):
НА ВЫХОДЕ
козлов павел 120.
вот
ошибка?
может, козлов павел 80? (80=(70+80+90)/3)
или 240? (240=70+80+90)
или 90? (max(70,80,90)=90)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
I{ () T (статус: Посетитель), 22 ноября 2009, 14:23 [#7]:
здравствуйте, Егор)
да. ошибся в расчетах. 80
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
I{ () T (статус: Посетитель), 22 ноября 2009, 15:43 [#8]:
а если эту прогу в текстовом файле надо задействовать? код изменится существенно? и при том что все данные заданы в блокноте изначально.
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Егор (статус: 10-ый класс), 22 ноября 2009, 16:14 [#9]:
для работы с текстовым файлом нужны небольшие изменения:
...
fam, maxFam, tmpStr : string;
inpFile : text; // <-------- ввели эту строчку
begin
maxSum:=0;
AssignFile(inpFile,'myFile.txt'); // <-------- ввели эту строчку (связались с файлом myFile.txt)
Reset(inpFile); // <-------- ввели эту строчку (открыли файл для чтения)
readln(inpFile, n); // <-------- вставили обращение к файлу (читаем с файла, не с клавиатуры)
for i:=1 to n do
begin
readln(inpFile, tmpStr); // <-------- вставили обращение к файлу (читаем с файла, не с клавиатуры)
...
только начнутся проблемы с кодировками - либо файл нужно будет сохранять в DOS-кодировке, либо писать не-консольную программу.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
I{ () T (статус: Посетитель), 22 ноября 2009, 16:32 [#10]:
угу. уже начались эти проблемы
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Мережников Андрей (статус: Абитуриент), 22 ноября 2009, 19:13 [#11]:
Цитата (undefined):
это на входе. вот пример.
иванов иван 90 30 20
петров петр 25 30 99
тимофеев тимофей 25 30 70
козлов павел 70 80 90
А что мешает появиться в файле еще записи, например,
Сидоров сидор 80 90 70
Средняя оценка будет так же как у козлова павла, и какую из двух записей выбирать???
|
|
I{ () T (статус: Посетитель), 22 ноября 2009, 20:10 [#12]:
в условии задачи сказано что может быть только один вариант на выходе.
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
23 ноября 2009, 11:48: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.
|
Мережников Андрей (статус: Абитуриент), 23 ноября 2009, 17:03 [#13]:
приведите условие задачи полностью и дословно. Что-то не стыкуется с логикой.
|
|
I{ () T (статус: Посетитель), 7 декабря 2009, 17:48 [#14]:
а как можно вывести 3 первых максимальных???
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Мережников Андрей (статус: Абитуриент), 7 декабря 2009, 18:15 [#15]:
вопросом на вопрос - а как из нескольких максимальных выбрать, какое из них первое, какое - второе и т.д.???? Если величина максимального значения одна.
|
|
Вадим К (статус: Академик), 7 декабря 2009, 18:34 [#16]:
наверно вопрошающий имеет ввиду, что может быть несколько записей, которые имеют одинаковое значение параметра и оно к тому же максимальное. Тогда все можно.
Первый раз пробегаем по записям, находим максимум. Потом ещё раз пробегаем, сравниваем и выписываем записи.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Мережников Андрей (статус: Абитуриент), 7 декабря 2009, 18:42 [#17]:
Я так и подумал, что спрашивает вопрошающий. Но, Вадим, как среди этих значений определить первое, второе, третье... Вы же понимаете, что при работе, например, с БД - это бессмыслица - определять очередность одинакового значения.
|
|
Мережников Андрей (статус: Абитуриент), 7 декабря 2009, 18:44 [#18]:
на каком основании можно сказать - это максимальное значение первое, а это максимальное значение второе???? Если максимальное, то оно "и в Африке максимальное" не скажешь им - "на первый-второй рассчитайсь"
|
|
Вадим К (статус: Академик), 7 декабря 2009, 18:55 [#19]:
Такс, кто то перекручивает мои слова.
Я не сказал о том, что есть максимальное второе или третье. перечитайте мой комментарий. там просто сказано - выписываем все подходящие записи. о их порядке я ни слова не сказал.
Но тут у нас не база, а файл с записями - значит порядок строго определен. И мы имеем говорить о том, что вот первая запись в файле с максимальным значением параметра, вот вторая, вот третья.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Мережников Андрей (статус: Абитуриент), 7 декабря 2009, 19:12 [#20]:
будем устраивать полемику или дискуссию? У автора вопроса просили дословно привести условие задачи, чтобы разобраться, что же ему действительно надо. А не устраивать споры между экспертами.
|
Страницы: [1] [2] [3] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|