Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 18.04.2010
Сообщений: 7

Массив через записи!

08.06.2010, 10:07. Показов 1056. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ЦЕЛЬ ТАКАЯ!!! : Написать программу через записи
________________________________________ ________________________________________ ___________
ЗАРАНЕЕ СПАСИБО!!!
________________________________________ ________________________________________ ___________
ТЕКСТ ЗАДАЧИ:
На вход программе сначала подается число участников олимпиады N. В каждой из следующих N строк находится результат одного из участников олимпиады в следующем формате:
<Фамилия> <Имя> <класс> <баллы>
где <Фамилия> – символьная строка (не более 20 символов), <Имя> – символьная строка (не более 15 символов), <класс> – число от 7 до 11, <баллы> – целое число набранных участником баллов. <Фамилия> и <Имя>, <Имя> и <класс>, а также <класс> и <баллы> разделены одним пробелом. Пример входной строки:
Семенов Егор 11 225
Победителем олимпиады становится участник, набравший наибольшее количество баллов, при условии, что он набрал более 200 баллов. Если такое количество баллов набрали несколько участников, то все они признаются победителями при выполнении условия, что их доля не превышает 20% от общего числа участников.
Победителем олимпиады не признается никто, если нет участников, набравших больше 200 баллов, или больше 20% от общего числа участников набрали одинаковый наибольший балл.
Напишите эффективную по времени работы и по используемой памяти программу, которая будет определять фамилию и имя лучшего участника, не ставшего победителем олимпиады. Если таких участников несколько, т.е. если следующий за баллом победителей один и тот же балл набрали несколько человек, или, если победителей нет, а лучших участников несколько (в этом случае именно они являются искомыми), то выдается только количество искомых участников. Гарантируется, что искомые участники (участник) имеются.
Программа должна выводить через пробел фамилию и имя искомого участника или их количество. Пример выходных данных (один искомый участник):
Семенов Егор
Второй вариант выходных данных (несколько искомых участников):
12

МАТЕМАТИЧЕСКАЯ МОДЕЛЬ
План:
Нужно вычленить из условия существенные моменты:
• нужные нам участники получили наибольший балл, если нет победителей или второй по величине, если победители есть, участники с более низкими баллами нас не интересуют;
• нужно хранить имя только одного из искомых участников, а не всех;
• класс нас не интересует.
Нужно определить:
• количество участников, получивших высший балл, и имя одного из них;
• количество участников, получивших второй по величине балл, и имя одного из них;

Добавлено через 1 час 34 минуты
помогите, если не трудно...

Добавлено через 11 часов 7 минут
.....
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2010, 10:07
Ответы с готовыми решениями:

Массив структур: добавление записи, удаление записи, поиск по одному или нескольким из полей
Необходимо реализовать базу данных с полями «Фамилия», «Имя», «Отчество», «Пол», «Год рождения». Каждая запись должна представлять собой...

Записи подряд из массива С положительных элементов в массив A, отрицательных в массив B
Дорогие люди!Мне очень нужна ваша помощь! Заранее спасибо!Очень буду благодарна! Составить программу записи подряд из массива С...

Задан массив А(k), K<50. Составьте программу записи в массив В десяти первых положительных элементов массива А
Задан массив А(k), K&lt;50. Составьте программу записи в массив В десяти первых положительных элементов массива А. помогите пожалуйста..)...

2
 Аватар для Piratcom
21 / 21 / 3
Регистрация: 05.08.2009
Сообщений: 243
08.06.2010, 10:18
Delphi
1
2
3
4
5
6
TUch = Record
  Name: String[15];
  Soname: String[20];
  Klass: Integer;
  Bal: Integer;
end;
Вот запись которую нужно использовать далее.

Щас попробую накидать програмку тебе, ток на дэлфи
1
1 / 1 / 1
Регистрация: 18.04.2010
Сообщений: 7
08.06.2010, 15:40  [ТС]
Лучший ответ Сообщение было отмечено VinneyPooh как решение

Решение

Вот прога через строки, может поможет спасибо

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    var ballBest: array[1..2] of integer;   {результат (баллы)}
    numBest: array[1..2] of integer;    {количество}
    nameBest: array[1..2] of string;    {имена}
    N: integer;                         {число участников} 
    c: char;                            {символ для ввода}
    i, j, k, ball: integer;                     {вспомогательные переменные}
    name: string;
begin
  Readln(N);                            {ввод числа участников}
  ballBest[1] := -1;                    {начальное значение, < 0}
  for i:=1 to N do begin
       name := '';                              {читаем фамилию и имя}
    for j:=1 to 2 do
      repeat 
        read(c); 
        name := name + c; 
      until c = ' ';
    read(k);                            {пропускаем класс}
    readln(ball);                       {читаем баллы участника}
       if ball > ballBest[1] then begin {обрабатываем баллы} {новый участник набрал больше баллов, чем все предыдущие}
      ballBest[2] := ballBest[1];       {копируем все 1-ые элементы массивов во 2-ые} 
      numBest[2] := numBest[1];         
      nameBest[2] := nameBest[1];
      ballBest[1] := ball;              {в 1-ые записываем данные нового участника (имя, баллы, количество = 1)}
      numBest[1] := 1;     
      nameBest[1] := name;
    end
    else  
      if ball = ballBest[1] then                {новый участник набрал столько же баллов, сколько лучшие из предыдущих - нужно увеличить их количество на 1}
        numBest[1] := numBest[1] + 1
      else
        if ball > ballBest[2] then begin {новый участник набрал второе количество баллов - нужно во 2-ые элементы массивов записать данные нового участника (имя, баллы, количество = 1)}
          ballBest[2] := ball;
          numBest[2] := 1;     
          nameBest[2] := name;
        end
        else  
          if ball = ballBest[2] then {новый участник набрал столько же баллов, сколько участники с вторым известным ранее результатом; нужно увеличить их количество на 1}
            numBest[2] := numBest[2] + 1;    
  end;
    if (ballBest[1] > 200) and (numBest[1]*100 <= N*20) then {определяем, есть ли победители}
       i := 2
  else i := 1;
  if numBest[i] > 1 then                {выводим результат}
       writeln(numBest[i])
  else writeln(nameBest[i]);
end.
Добавлено через 5 часов 18 минут
Видимо, ответа я так и не дождусь если можно - закройте тему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2010, 15:40
Помогаю со студенческими работами здесь

Строка через указатель и через массив - в чем преимущества каждого подхода
Хотелось бы получить конкретный ответ на такой вопрос: в каком случае используется объявление строки в стиле char *line =...

Как задать последовательность слов через запятую, в конце точка через массив?
помогите

Считывание чисел через пробел в массив через scanf
Здравствуйте! Очень вероятно что вопрос поднимался миллионы раз, но я ответы не нашел спустя часы поиска :( В общем задача следующая. ...

Нужно, чтобы память под массив выделялась не через: new — delete, а через оператор malloc (calloc) — free
Ребят, есть программа, которая работает, но нужно, чтобы память под массив выделялась не через : new - delete, а через оператор...

Выборка записи через GET
Добрый день. Нужно реализовать выборку конкретной записи из БД по параметру GET из адресной строки. Но никак не могу понять, что нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru