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

Вывод на экран названия стран, для которых в базе записано самое большое и самое маленькое количество городов

23.05.2018, 18:00. Показов 2157. Ответов 12

Студворк — интернет-сервис помощи студентам
Есть программа с данными структур (простейшая база данных) : Город : страна, название, население, площадь. city[k].country, city[k].name, city[k].people, city[k].s. Нужно написать функцию которая будет выводить на экран названия стран, для которых в базе записано самое большое и самое маленькое количество городов.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2018, 18:00
Ответы с готовыми решениями:

Найти самое большое и самое маленькое число в матрице
нужно найти из этой матрицы само большое и самое маленькое число пожалуйста с коментариями

Подсчитать количество предложений во всех файлах и вывести на экран самое короткое и самое длинное предложения
Напишите программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа подсчитывает количество...

Написать программу, которая выводит на экран самое большое, самое маленькое и среднее арифметическое введенных чисел
Надо написать программу, которая запрашивает 10 целых чисел и потом выводит на экран самое большое, самое маленькое и среднее...

12
6 / 6 / 8
Регистрация: 22.05.2018
Сообщений: 18
23.05.2018, 18:29
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
#include <map>
#include <stdio.h>
 
struct S_CITY
{
  const char* country;
  const char* name;
  unsigned int people;
  float s;
};
 
int main()
{
  S_CITY cities[] = {
    { "Russia", "Mosсow", 12506468, 2561.5f },
    { "USA", "New York", 8405837, 1214.9f },
    { "Russia", "Saint Petersburg", 5351935, 1403.0f }
  };
 
  std::map<std::string, unsigned int> countries;
 
  for(auto& city : cities) {
    countries[city.country]++;
  }
 
  unsigned int smaller = 0xffffffff;
  unsigned int bigger = 0;
  for(auto& country : countries) {
    if(smaller > country.second) {
      smaller = country.second;
    }
    
    if(bigger < country.second) {
      bigger = country.second;
    }
  }
 
  printf("Smaller: %d, bigger: %d", smaller, bigger);
 
  return 0;
}
0
24.05.2018, 18:49
 Комментарий модератора 
Joodxcentremod, дублирование тем запрещено.
Темам давайте осмысленные названия.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 22:27
Ну самое просто - завести словарь (unordered_map) Страна - Количество.
При проходе увеличивать счетчик стран, dict[city[i].country]++;
И потом просто из словаря выбрать с Макс/Мин количеством.
1
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 23:32
Банальный вариант на скорую руку.
Поиск сделал более менее понятным языком, можешь использовать готовые шаблоны.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
 
using namespace std;
 
struct City
{
    string country;
    string name;
    double popul;
    double area;
};
 
int main()
{
    int count;
    cout << "Enter number of cities: ";
    cin >> count;
    cin.ignore();
 
    City *cities = new City[count];
 
    for(int i=0; i<count; i++)
    {
        cout << "Enter country: ";
        getline(cin, cities[i].country);
        cout << "Enter city name: ";
        getline(cin, cities[i].name);
        cout << "Enter population: ";
        cin >> cities[i].popul;
        cout << "Enter area: ";
        cin >> cities[i].area;
        cin.ignore();
        cout << endl;
    }
 
    for (int i=0; i<count; i++)
    {
        cout << "Country: " << cities[i].country << endl;
        cout << "City name: " << cities[i].name << endl;
        cout << "Population: " << cities[i].popul << endl;
        cout << "Area: " << cities[i].area << endl << endl;
    }
 
    unordered_map<string, int> dictionary;
    for (int i = 0; i < count; i++)
        dictionary[cities[i].country]++;
 
 
    string minCountry = dictionary.begin()->first, maxCountry = dictionary.begin()->first;
    int max = dictionary.begin()->second, min = dictionary.begin()->second;
    for (auto dict : dictionary)
    {
        cout << dict.first << " : " << dict.second << endl;
        if (max < dict.second)
        {
            max = dict.second;
            maxCountry = dict.first;
        }
        if (min > dict.second)
        {
            min = dict.second;
            minCountry = dict.first;
        }
    }
    
    cout << "Country with max count of cities - " << maxCountry << " : " << max << endl;
    cout << "Country with min count of cities - " << minCountry << " : " << min << endl;    
 
    dictionary.clear();
    delete[]cities;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 24.05.2018
Сообщений: 2
25.05.2018, 00:00
вот в эту мою заготовку нужно вставить в funk2 во 2 case эту функцию с поиском максимального и минимального количества стран

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include<iostream>
#include<fstream>
#include <string>
#include<windows.h>
#define n 30
 
using namespace std;
 
struct form {
 char country[15];
 char name[15];
 int popul;
 int area;
}city[n];
int f1(int k, int l)
{
 ofstream f("binary.txt", ios::binary | ios::app);
 for (k; k<l; k++)
 {
  cout << "Введите страну ";
  cin >> city[k].country;
  cout << "Введите название города ";
  cin >> city[k].name;
  cout << "Введите население " << endl;
  cin >> city[k].popul;
  cout << "Площадь" << endl;
  cin >> city[k].area;
  f.write((char*)&city[k], sizeof(city[k]));
 }
 f.close();
 return k;
}
void f2(int x, int l)
{
 int i, u = 0, y;
 float k = 0;
 switch (x)
 {
 case 1:
  int nn;
  cout << "Введите число : ";
  cin >> nn;
  for (i = 0; i < l; i++) {
   if (city[i].popul > nn) cout << city[i].name<<endl;
  }
  break;
 case 2:
 
  break;
 
 
 }
 std::system("pause");
}
void f3(int x)
{
 int i;
 for (i = 0; i<x; i++) {
  cout << "Страна " << city[i].country << endl;
  cout << "Название города " << city[i].name << endl;
  cout << "Население " << city[i].popul << endl;
  cout << "Площадь " << city[i].area << endl;
 }
 std::system("pause");
}
int main()
{
 setlocale(LC_CTYPE, "ukr");
 int i, k = 0, l, x, m = 0, z = 0;
 ifstream f10("binary.txt", ios::binary);
 while (f10.read((char*)&(city[m]), sizeof(city[m]))) {
  m++;
 }
 k = m;
 cout << endl << endl << endl << " ";
 for (i = 0; i<3; i++)
 {
  cout << (char)164;
  Sleep(200);
 }
 do {
  std::system("cls");
  cout << "меню" << endl << "Выбор действия" << endl << "1: Добавить информацию в базу" << endl;
  cout << "2: Выполнить функции с базой" << endl << "3: вывести всю информацию базы" << endl;
  cout << "4: Закончить работу" << endl;
  do {
   cout << "введите вариант";
   cin >> x;
   if (f10.eof() == 0)
    if (k == 0 && x != 1)
     x = 5;
  } while (x<0 || x>5);
  switch (x)
  {
  case 1:
   std::system("cls");
   cout << "Сколько хотите записать городов?" << endl;
   cin >> l;
   m = k + l;
   k = f1(k, m);
   break;
  case 2:
   std::system("cls");
   cout << "1. Названия городов у которых население больше чем введенное пользователем число" << endl;
   cout << "2:названия стран, для которых в базе записано самое большое и самое маленькое количество городов " << endl;
 
   do {
    cout << "Введите вариант - ";
    cin >> x;
    f2(x, m);
   } while (x<0 || x>7);
 
   break;
  case 3:
   std::system("cls");
   f3(m);
   break;
  case 4:
   std::system("cls");
   z = 1;
   f10.close();
 
   break;
  default:
   break;
  }
 } while (z == 0);
 std::system("pause");
 return 0;
}
0
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
25.05.2018, 00:14
Ребятки, какого фига? Я так не играю

Даже дописывать это не собираюсь

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
 
using namespace std;
 
struct City
{
    string country;
    string name;
    int popul;
    double area;
};
struct CountryStats
{
    string country;
    int max;
    int min;
};
 
int main(){
 
 
    int size;
    cin >> size;
 
    vector<City> a;
 
    int popul, area;
    string country, name;
 
    cout << "Input data in format [country name popul area]" << endl;
 
    for(int i = 0; i < size; i++){
        cin >> country >> name >> popul >> area;
        City city;
        city.country = country;
        city.name = name;
        city.popul = popul;
        city.area = area;
        a.push_back(city);
    }
 
 
    vector<CountryStats> cs;
 
    for_each(a.begin(), a.end(), [](const City &c){
        int * res= std::find (cs.begin(), cs.end(), [&c](const CountryStats &e){ return e.country == c.country });
        if(res == cs.end()){
            CountryStats newCs;
            newCs.country = c.country;
            newCs.max = c.popul;
            newCs.min = c.popul;
        }
        if(cs[res].max < c.popul)
            cs[res].max = c.popul;
        if(cs[res].min > c.popul)
            cs[res].min = c.popul;
    });
 
    int max = -1, min = 8000000000; //надеюсь 8 млрд надолго хватит ;)
    int 
    for_each(cs.begin(), cs.end(), [&max, &min](const CountryStats &c){
        if(max < c.max)
            max = c.max;
        if(min > c.min)
            min = c.min;
    });
 
    for(int i = 0; i < size; i++)
        cout << a[i].country << ' ';
 
    return 0;
}
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
25.05.2018, 00:15
Dima_ss, ну вот возьми и вставь.
1
0 / 0 / 0
Регистрация: 24.05.2018
Сообщений: 2
25.05.2018, 00:27
если просто вставляю Ваше, то выбивает кучу ошибок и программа не запускается
0
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
25.05.2018, 00:28
[/CPP]Dima_ss, а читать сообщение полностью?

Цитата Сообщение от mvngr Посмотреть сообщение
Даже дописывать это не собираюсь
Хотите - допишите
0
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
25.05.2018, 00:37
Dima_ss, неужели вам остальных двух примеров мало? Плюсом заходить с двух аккаунтов совсем не круто
А если у вас не получается скопипастить кусок кода в свою программу никто не виноват
0
 Аватар для Cortas
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.05.2018, 09:19
Названия функций, переменных, работа с данными, часть кода функций вне функций, отсутствие комментариев...
Ладно, будьте пожалуйста в будущем собранней, если вам нужно программирование.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <algorithm>
#define n 30
 
using namespace std;
 
struct city_info
{
    char country[32];
    char name[32];
    int popul;
    int area;
}city[n];
 
 
void add_city(const string& file_name, int& num_of_c)
{
    ofstream file(file_name, ios::binary | ios::app);
    int k;
    
    cout << "Сколько хотите записать городов?" << endl;
    cin >> k;
    num_of_c += k;
    k = num_of_c - k;
 
    for(; k < num_of_c; k++)
    {
        cout << "Введите страну: ";
        cin >> city[k].country;
        cout << "Введите название города: ";
        cin >> city[k].name;
        cout << "Введите население: ";
        cin >> city[k].popul;
        cout << "Площадь: ";
        cin >> city[k].area;
        cout << endl;
        file.write((char*)&city[k], sizeof(city_info));
    }
    file.close();
}
 
string tolower(string in)
{
    for(int i = 0; i < in.size(); i++)
        in[i] += tolower(in[i]);
    in[0] = toupper(in[0]);
    return in;
}
 
void work_with_stc(int num_of_c)
{
    int choose;
 
    cout << "1: Названия городов, у которых население больше чем" << endl;
    cout << "2: Cтраны с наибольшим и наименьшим кол-вом городов " << endl;
    do
    {
        cout << "Введите вариант - ";
        cin >> choose;
    } while(choose < 0 || choose > 7);
 
    switch(choose)
    {
        case 1:
            int nn;
            cout << "Введите число: ";
            cin >> nn;
            for(int i = 0; i < num_of_c; i++)
            {
                if(city[i].popul > nn) 
                    cout << city[i].name << endl;
            }
            break;
        case 2://та самая функция
            map<string, int> base;
            for(int i = 0; i < num_of_c; i++)
                base[tolower(city[i].country)]++;
            
            map<string, int>::iterator max, min, i;
            max = min = i = base.begin();
            for(; i != base.end(); i++)
            {
                if(max->second < i->second)
                    max = i;
                else if(min->second > i->second)
                    min = i;
            }
 
            cout << "Максимальное кол-во городов (" << max->second << ") имеет страна " << max->first << endl
                 << "Минимальное кол-во городов  (" << min->second << ") имеет страна " << min->first << endl;
            break;
    }
}
 
ostream& operator<<(ostream& out, city_info& ci)
{
    out << "Страна:    " << ci.country << endl
          << "Название:  " << ci.name << endl
          << "Население: "<< ci.popul << endl
          << "Площадь:   " << ci.area << endl;
    return out;
}
 
int main()
{
    setlocale(LC_CTYPE, "ukr");
    int choose, num_of_c = 0;
    bool exit = false;
    string file_name = "binary.txt";
    ifstream f10(file_name, ios::binary);
 
    while(f10.read((char*)&city[num_of_c], sizeof(city_info)))
    {
        num_of_c++;
    }
    f10.close();
 
    do
    {
        system("cls");
        cout << "М Е Н Ю" << endl 
             << "Выбор действия:" << endl 
             << "1: Добавить информацию в базу" << endl
                 << "2: Выполнить функции с базой" << endl 
             << "3: Вывести всю информацию базы" << endl
             << "4: Закончить работу" << endl;
        do
        {
            cout << "введите вариант: ";
            cin >> choose;
        } while(choose < 0 || choose > 5 || (choose != 1 && num_of_c == 0));
 
        cout << endl;
        switch(choose)
        {
            case 1:
                add_city(file_name, num_of_c);
                break;
            case 2:
                work_with_stc(num_of_c);
                break;
            case 3:
                cout << "Всего в базе " << num_of_c << " городов: " << endl;
                for(int i = 0; i < num_of_c; i++)
                    cout << city[i] << endl;
                break;
            case 4:
                exit = true;
                break;
            default:
                break;
        }
        system("pause");
    } while(!exit);
    return 0;
}
P.S. и используйте не массив структур на 30 элементов, а вектор.
0
25.05.2018, 13:40
 Комментарий модератора 
Joodxcentremod, если хотите пользоваться форумом - продолжайте обсуждение данного задания исключительно в этой теме. Дублирование тем и создание клонов на форуме запрещено.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2018, 13:40
Помогаю со студенческими работами здесь

Найти самое большое и самое маленькое значение функции
Найти самое большое и самое маленькое значение функции z=4x^2y-y+2x^2+3x

Поменять местами самое большое и самое маленькое слово
Задача в том, чтобы в строке, которая приходит из мейн в эту функцию, найти и поменять местами самое длинное и самое короткое слова. Ну а...

Вывести самое большое из нечётных и самое маленькое из чётных
Дан ряд чисел, требуется вывести самое большое из нечётных и самое маленькое из чётных

Поменять самое большое и самое маленькое число местами
Дана строка чисел через запятую. Сформировать строку, в которую через пробел поменять минимальное и максимальное числа сформированной...

Найти самое «большое» и самое «маленькое» слово
Доброго всем дня!!!! задача такая: Напишите программу, которая находит самое «большое» и самое «маленькое» слово. Слова сравниваются в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru