Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 7

Нуждаюсь в совете с алгоритмом

11.05.2019, 12:30. Показов 563. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Есть задание: На вход программе подаются сведения о номерах школ учащихся, участвовавших в олимпиаде. В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат: <Фамилия> <Инициалы> <номер школы> где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> – строка, состоящая из 4-х символов (буква, точка, буква, точка), <номер школы> – не более чем двузначный номер. <Фамилия> и <Инициалы>, а также <Инициалы> и <номер школы> разделены одним пробелом. Пример входной строки: Иванов П.С. 57 Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, из какой школы было меньше всего участников (таких школ может быть несколько). При этом необходимо вывести информацию только по школам, пославшим хотя бы одного участника. Следует учитывать, что N>=1000.
Мне нужна помощь с алгоритмом. Я хочу методом сортировки "Пузырек" отсортировать школы, но сортируются только кол-во учеников. помогите, пожалуйста. Вот код, что успел написать:
C++
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
struct students
{
    int Name_Code;
    int School_Code;
};
 
 
int main()
{
    int N;
    std::cout << "N = ";
    std::cin >> N;
    
    students studs[N];
    
    cout << "Введите код ученика и номер школы через пробел.\n";
    for(int i=0; i<N; ++i)
    {
        cin >> studs[i].Name_Code >> studs[i].School_Code;
    }
    for(int i=0; i<N; ++i)
    {
        cout << studs[i].Name_Code << " " << studs[i].School_Code << "\n";
    }
    
    for(int i=0; i<N; ++i)
    {
        for(int j=0; j<N; ++j)
        {
            
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2019, 12:30
Ответы с готовыми решениями:

Нуждаюсь в совете
Всем привет. Скажу сразу, я начинающий android разработчик и поэтому я сейчас могу задать очень глупый вопрос, но все же я нуждаюсь в Вашем...

Нуждаюсь в совете
Подскажите пожалуйсто книги в которых доступно описываются такие темы как &quot;Локальная сеть&quot;, &quot;Интернет&quot;, &quot;Сервер&quot; и...

Нуждаюсь в совете
Понравились две модели: 1) http://www.fora.kz/goods.php?id=7844 2) http://www.fora.kz/goods.php?id=7865 Хотелось бы...

5
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
11.05.2019, 13:01
Цитата Сообщение от barbiq Посмотреть сообщение
students studs[N];
массивы так не задаются
C++
1
students* studs=new students[N];
Добавлено через 2 минуты
Цитата Сообщение от barbiq Посмотреть сообщение
из какой школы было меньше всего участников
учитывая, что номер школы двузначный и сделать надо, скорее всего не выпендриваясь (ассоциативные массивы счётчиков), то можно счётчики учеников хранить в обычном массиве размера 90 либо 100.
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
11.05.2019, 13:01
barbiq, то, что Вы написали, даже не скомпилируется.
Цитата Сообщение от barbiq Посмотреть сообщение
C++
1
2
3
4
int N;
std::cout << "N = ";
std::cin >> N;
students studs[N];
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
11.05.2019, 13:09
C++
1
2
3
4
5
6
7
8
9
int* counter=new int[100]();
 
for(int i=0; i<N; ++i)
    ++counter[studs[i].School_Code];
int id=-1;
for(int i=0; i<100; ++i)
    if (id!=-1 || (counter[i] && counter[i]<counter[id]))
        id=i;
cout<<"minimum school №"<<id;
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.05.2019, 13:24
Целиком на одних массивах:
C++
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
48
49
50
51
52
53
54
#include <iostream>
#include <fstream>
 
struct Dude
{
    char name[21];
    char init[5];
    int nom;
};
 
constexpr int size = 100;
 
int statistic[size]{};
int to_print[size]{};
 
int main()
{
    std::locale::global(std::locale(""));
    std::ifstream ifs("text.txt");
 
    int N = 0;
    ifs >> N;
 
    Dude* arr = new Dude[N];
    for (int i = 0; i < N; ++i)
    {
        ifs.get();
        ifs.getline(arr[i].name, 21, ' ');
        ifs.getline(arr[i].init, 5, ' ');
        ifs >> arr[i].nom;
        ++statistic[arr[i].nom];
    }
 
    int min = 0;
    for (int i = 1; i < size; ++i)
        if (statistic[i] && statistic[i] < min || !min) min = statistic[i];
 
    int count = 0;
    for (int i = 0; i < size; ++i)
        if (statistic[i] == min)
            to_print[count++] = i;
    
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < count; ++j)
            if (arr[i].nom == to_print[j])
            {
                std::cout << arr[i].name << ' '
                    << arr[i].init << ' '
                    << arr[i].nom << '\n';
                break;
            }
 
    delete[] arr;
}
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
11.05.2019, 14:51
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
if (id!=-1 || (counter[i] && counter[i]<counter[id]))
C++
1
if (id==-1 || (counter[i] && counter[i]<counter[id]))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2019, 14:51
Помогаю со студенческими работами здесь

нуждаюсь в совете
Пришёл новый учитель и сразу да домашнюю контрольную а программирование даже не объяснял помогите пожалуйста у меня 7 вариант ...

Нуждаюсь в совете!
Возникла огромная проблема с 9 заданием, совершенно не понимаю, что, как и откуда... Если кому не сложно, напишите программку...в паскале...

Очень нуждаюсь в совете
Здравствуйте. Недавно начала делать себе сайт на WP. Как-то громко заявила :D Начала учиться делать сайт. Поставила woocommerce. При...

Нуждаюсь в совете (БД,Таблицы,С#)
Всем привет! Мне как программисту с минимальным опытом работы с БД (да и вообще) нужна ваша помощь. Я собираюсь реализовать проект для...

Нуждаюсь в вашем совете
1. Дан массив целых чисел. Найти позицию первого простого числа. 2. Дан массив целых чисел. Найти позицию последнего четного числа.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru