0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
||||||
1 | ||||||
Вывести на экран фамилии и имена трех худших по среднему баллу учеников26.02.2012, 22:00. Показов 2201. Ответов 17
Метки нет (Все метки)
задача
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат: <Фамилия> <Имя> <оценки>, где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки: Иванов Петр 4 5 3 Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран фамилии и имена трех худших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена. А вот мое "решение": Код:
0
|
26.02.2012, 22:00 | |
Ответы с готовыми решениями:
17
Вывести фамилии и имена трех худших по среднему баллу учеников Вывести фамилии и имена трех худших по среднему баллу учеников Вывести имена трех худших по баллу Вывести на экран фамилии и имена трех худших по среднему баллу учеников |
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
||||||
27.02.2012, 02:17 | 2 | |||||
для начала так:
1
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
||||||
27.02.2012, 11:19 [ТС] | 3 | |||||
Спасибо! проглядел этот момент)
Подскажите еще, что в нижеприведенном коде не так?
Добавлено через 1 час 6 минут вот например, если после строки исходного когда: char *tmpData = new char[S] ; вставить : std::cin>>N; вылазит ошибка(
0
|
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
|
|
27.02.2012, 11:32 | 4 |
Нет ошибки:
http://liveworkspace.org/code/... f9cf10eafb И зачем вам stdafx.h? Добавлено через 1 минуту итераций
0
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
|||||||||||
27.02.2012, 11:45 [ТС] | 5 | ||||||||||
Но если я добавляю 2 сточки:
вылазят ошибки( Добавлено через 4 минуты во всяком случае, на моем компиляторе так.. Добавлено через 2 минуты после ввода "числа участников" вылазит "Необработанное исключение в "0x1027d2f3 (msvcr100d.dll)" в "EVILcooky.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"."
0
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
|
27.02.2012, 13:57 | 6 |
Код вообще бередовый. У тебя есть массив с данными, под который ты выделяешь память. У тебя сначало N = 5, затем ты выделяешь память под 5! элементов, а затем вводишь N. Т.е. ты выделил память под 5! элементов, затем ввел N = 100, начал перебор всех, и когда у тебя i становится >= 5, то понятное дело вылезет исключение, ведь массив у тебя всего на 5 элементов.
Тебе надо сначало запрашивать ввод N, а уже после этого выделять память под массив.
0
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
||||||
27.02.2012, 14:09 [ТС] | 7 | |||||
Добавлено через 3 минуты а если я нициализирую N(любым значением) в самой программе, то все идет отлично...
0
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
|
27.02.2012, 14:22 | 8 |
Скинь заново весь подправленный код.
Добавлено через 5 минут Одна из твоих ошибок - ты неправильно используешь функцию strtok Добавлено через 4 минуты strcpy(pupin[i].user, strtok(tmpD," ")); Что тут получается? В строке tmpD ищется символ пробела, возращается на него указатель. А далее ты копируешь все, что стоит после пробела. А нужно наоборот копировать все что стоит до пробела. strtok(NULL," ") - Такая запись вообще не имее смысла, т.к. на месте NULL должна стоять строка, в которой выполняется поиск. А вообще советую читать MSDN! Добавлено через 45 секунд Я бы посоветовал сделать через потоки, либо используя функцию sscanf
1
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
||||||||||||
27.02.2012, 14:41 [ТС] | 9 | |||||||||||
Вот "исправленный вариант".. а можете привести в качестве примера фрагмен кода с ипользованием "потоков" или ф-ции сканф только условие следующее: данные о участнике(фамилия имя оценка оценка оценка) вводятся в одну строку, как указано в задании выше Добавлено через 11 минут
0
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
||||||
28.02.2012, 08:36 | 10 | |||||
Приведи пример строки ввода.
Добавлено через 8 минут С использование sscanf получится вот так:
Ну и можешь попробовать через std::cin считать. Это тоже не сложно, писать пока не буду.
1
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
|
28.02.2012, 08:37 [ТС] | 11 |
Ремизова Валерия 5 4 3
0
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
|
28.02.2012, 08:45 | 12 |
В моем примере, в строку имени занесется Валерия.
Вызов strtok(NULL," ") вызовет исключение(или просто вернет NULL) Эта функция ищет в строке первую встречу символов из другой строки. А то что ты написал, ты вместо строки передаешь NULL и ищешь пробел... В строке tmpD = "Ремизова Валерия 5 4 3" вызов char *a = strtok(tmpD, " ") Вернет указатель на пробел. Т.е. строка 'a' буде равна " Валерия 5 4 3" вызов a = strtok(a + 1, " ") Вернет указатель на второй пробел т.е. " 5 4 3". Пока все, потом смогу отписаться только вечером.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
28.02.2012, 09:11 | 13 |
это не так. Советую почитать маны
Добавлено через 1 минуту нет, не вызовет, это вообще С-ая функция. И NULL она вернет только при определеном случае
0
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
|
28.02.2012, 09:19 [ТС] | 14 |
strtok(stroka, " "); -вернет первую лексему строки
strtok(NULL, " "); -вторая лексема строки и работает моя программа именно так...выше есть рабочий вариант, проверь..
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
28.02.2012, 09:21 | 15 |
cooky, так я тебе ничего и не говорил. Я отвечал на необоснованные утверждения darkknight2008
0
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
||||||
28.02.2012, 09:33 [ТС] | 16 | |||||
Nameless One, извиняюсь)
0
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
|
28.02.2012, 15:16 | 17 |
Да, простите облажался(( После вызова std::cin >> N; в потоке ввода остается символ перевода строки. Поэтому при вызове std::cin.getline(tmpData,S); сразу ловится символ перевода строки и считается, что ввод закончен, т.е. строка остается пустой. Чтобы его отловить, можно после std::cin >> N; вставить getchar() либо std::cin.ignore();
1
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
|
|
28.02.2012, 15:29 [ТС] | 18 |
Вот оно!))спасибо огромное)
0
|
28.02.2012, 15:29 | |
28.02.2012, 15:29 | |
Помогаю со студенческими работами здесь
18
Вывести на экран фамилии и имена трех худших по среднему баллу учеников Вывести на экран фамилии и имена трех худших по среднему баллу учеников Вывести на экран фамилии и имена трех лучших по среднему баллу учеников Вывести на экран фамилии и имена трех лучших по среднему баллу учеников Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи | |||||
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
|
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
|
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
|
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
|
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
|
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
|
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
|
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций
История планшетных компьютеров началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые. . .
|
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
|
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы
В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
|
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
|
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
|