Пример 13.5. В массиве хранится информация о результатах спортсменов, участвовавших в лыжной гонке. Определить результат победителя и его номер. Данные прочитать из текстового файла.
Этапы выполнения задания
I. Исходные данные: массив a — числа, являющиеся временем прохождения трассы, количество спортсменов — n.
II. Результат: a[n_min] — минимальное время, n_min — номер победителя.
III. Алгоритм решения задачи.
1. Ввод исходных данных. 2. Для решения задачи воспользуемся алгоритмом поиска минимального элемента в массиве и его номера (пример 13.4). 3. Вывод результата. Номер лыжника на 1 больше номера элемента в массиве, поскольку элементы нумеруются с нуля.
IV. Описание переменных: n, n_min – int, а – vector <double>.
Пример 13.6. Определить, сколько раз в линейном массиве встречается элемент, равный минимальному.
Этапы выполнения задания
I. Исходные данные: массив а, количество чисел n.
II. Результат: a[n_min] — минимальный элемент, k — количество минимальных.
III. Алгоритм решения задачи.
1. Ввод исходных данных. 2. Поиск минимального элемента. 3. Линейный поиск элементов, равных минимальному. 4. Вывод результата.
IV. Описание переменных: n, n_min, k — int, а – vector <int>.
Пример 13.7. Задан массив из слов. Найти в нем самое длинное и самое короткое слово.
Этапы выполнения задания
I. Исходные данные: массив а, количество cлов n.
II. Результат: a[n_min] — короткое слово, a[n_max] — длинное слово.
III. Алгоритм решения задачи.
1. Ввод исходных данных. 2. Поиск самого короткого слова. Самое короткое слово — слово, в котором минимальное количество символов. Для его поиска можно воспользоваться алгоритмом поиска минимального элемента в массиве. Однако, если сравнивать сами элементы массива, то сравнение будет происходить не по длине [1]. Для сравнения строк по длине нужно использовать функцию для вычисления длины строки length. 3. Для поиска самого длинного слова можно использовать алгоритм поиска максимального элемента и сравнивать элементы с использованием функции, вычисляющей длину строки length. 4. Вывод результата.
IV. Описание переменных: n, n_min, n_max – int, а – vector <string>.
[1] Сравнение строк осуществляется лексикографически: s1 < s2, если для первого несовпадающего символа с номером i верно, что s1[i] < s2[i], или все символы строк совпадают, но s1 короче s2.
|
Пример 13.5.
V. Программа:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
setlocale(0,"");
ifstream fin("input.txt");
int n;
fin >> n;
vector <double> a(n);
for (int i = 0; i < n; i++)
fin >> a[i];
//поиск минимального элемента
int n_min = 0;
for (int i = 1; i < n; i++)
if (a[i] < a[n_min])
n_min = i;
cout << "победитель — лыжник №";
cout << n_min + 1 << endl;
cout << "его время - "<< a[n_min];
cout << endl;
return 0;
}
|
IV. Тестирование.
Пример 13.6.
V. Программа:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cout << "n = ";
cin >> n;
vector <int> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
//поиск минимального элемента
int n_min = 0;
for (int i = 1; i < n; i++)
if (a[i] < a[n_min])
n_min = i;
//подсчет количества
int k = 0;
for (int i = 0; i < n; i++)
if (a[i] == a[n_min])
k++;
cout << "min = "<< a[n_min];
cout << endl << "vstretilsja ";
cout << k << " raz" << endl;
return 0;
}
|
VI. Тестирование.
Пример 13.7.
V. Программа:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
using namespace std::__cxx11;
int main()
{
int n;
cout << "n = ";
cin >> n;
vector <string> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
//поиск минимального слова
int n_min = 0;
for (int i = 1; i < n; i++)
if (a[i].length() < a[n_min].length())
n_min = i;
//поиск максимального слова
int n_max = 0;
for (int i = 1; i < n; i++)
if (a[i].length() > a[n_max].length())
n_max = i;
cout << "min - "<< a[n_min];
cout << ", max - "<< a[n_max];
cout << endl;
return 0;
} |
VI. Тестирование.
|