Случайным образом выбрать из списка три коллектива, напечатать их наименования - C (СИ)
Формулировка задачи:
Задание
: С клавиатуры ввести последовательность данных о вокальных коллективах района: <Название коллектива>, <Год создания>, <Количество участников>, <Руководитель>. Распечатать введенные данные в виде таблицы, отсортировав их по названиям коллективов в алфавитном порядке. Случайным образом выбрать из списка три коллектива, напечатать их наименования и указать многочисленный среди этих коллективов.#include <stdio.h> int main() { struct VocalCo { char name[20]; int date; int mber; char head[10]; }n1,d1,m1,h1; int k, kst; printf("Number of groups - "); scanf("%d",&kst); getchar(); puts("DATA: "); for (k=0; k<kst; k++) { printf("\n%2d. Name of group: ", k+1); scanf("%d",&n1.name); printf("\n%2d. Year of creation: ",k+1); scanf("%d",&d1.date); printf("\n%2d. Number of members: ",k+1); scanf("%d",&m1.mber); printf("\n%2d. Head of group: ",k+1); scanf("%d",&h1.head); } getchar(); return 0; }
Решение задачи: «Случайным образом выбрать из списка три коллектива, напечатать их наименования»
textual
Листинг программы
#include <iostream> #include <string> using namespace std; //исходная структура struct band{ string name; int year; int number_of_members; string head; }; //объявляем функции инициализации, вывода и сортировки соответственно void init_band(band&); void show_band(band&); void insertion_sort(band*, int); int main(){ //задаем количество коллективов int number_of_bands; cout << "Enter number of collectivies: "; cin >> number_of_bands; //выделяем память под наш массив структур band* arr_bands = new band[number_of_bands]; //производим инициализацию массива for(int i=0; i<number_of_bands; i++){ init_band(*(arr_bands+i)); } //сортируем коллективы в массиве по названию методом вставки insertion_sort(arr_bands, number_of_bands); //выводим for(int i=0; i<number_of_bands; i++){ show_band(*(arr_bands+i)); } return 0; } void init_band(band& tmp){ cout << "Enter name of band: "; cin >> tmp.name; cout << "Enter year: "; cin >> tmp.year; cout << "Enter number of members: "; cin >> tmp.number_of_members; cout << "Enter name of head: "; cin >> tmp.head; } void show_band(band& tmp){ cout << "\nName of band " << tmp.name << endl; cout << "Year " << tmp.year << endl; cout << "Number of members " << tmp.number_of_members << endl; cout << "Name of head " << tmp.head << endl << endl; } void insertion_sort(band* arr, int num_of_bands){ band key; int i; for(int j=1; j<num_of_bands; j++){ key=*(arr+j); i=j-1; while(i>-1 && ((arr+i)->name) > key.name){ *(arr+i+1) = *(arr+i); i--; *(arr+i+1) = key; } } }
Объяснение кода листинга программы
- Сначала пользователю предлагается ввести количество коллективов.
- Затем выделяется память под массив структур типа band и производится инициализация массива.
- Далее происходит сортировка коллективов в массиве по названию методом вставки.
- Наконец, выводятся наименования отсортированных коллективов.
- В функции init_band() пользователю предлагается ввести данные для текущего коллектива.
- В функции show_band() выводятся данные текущего коллектива.
- В функции insertion_sort() происходит сортировка массива по наименованию.
- При сортировке используется алгоритм сортировки вставками.
- Алгоритм работает в одном проходе, за один проход полностью упорядочивая только один элемент массива.
- Алгоритм стабилен, то есть сохраняет относительный порядок элементов, равных по отношению друг к другу.
- Не используется дополнительная память для хранения временных данных.
- Для каждого элемента, начиная с первого, ищутся элементы, которые нужно передвинуть, чтобы удовлетворить условие порядка.
- Если такие элементы есть, то они сдвигаются влево, а вставленный элемент становится последним в упорядоченной части массива.
- Если таких элементов нет, то вставляемый элемент просто становится последним в упорядоченной части массива.
- Алгоритм завершается, когда все элементы массива упорядочены.
- Для каждого элемента массива выводится его наименование.
- Используется оператор new для выделения памяти под массив.
- При выделении памяти под массив используется переменная number_of_bands.
- Для каждого элемента массива вызывается функция init_band().
- Для вывода данных каждого элемента массива вызывается функция show_band().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д