Случайным образом выбрать из списка три коллектива, напечатать их наименования - 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;
        }
    }
}

Объяснение кода листинга программы

  1. Сначала пользователю предлагается ввести количество коллективов.
  2. Затем выделяется память под массив структур типа band и производится инициализация массива.
  3. Далее происходит сортировка коллективов в массиве по названию методом вставки.
  4. Наконец, выводятся наименования отсортированных коллективов.
  5. В функции init_band() пользователю предлагается ввести данные для текущего коллектива.
  6. В функции show_band() выводятся данные текущего коллектива.
  7. В функции insertion_sort() происходит сортировка массива по наименованию.
  8. При сортировке используется алгоритм сортировки вставками.
  9. Алгоритм работает в одном проходе, за один проход полностью упорядочивая только один элемент массива.
  10. Алгоритм стабилен, то есть сохраняет относительный порядок элементов, равных по отношению друг к другу.
  11. Не используется дополнительная память для хранения временных данных.
  12. Для каждого элемента, начиная с первого, ищутся элементы, которые нужно передвинуть, чтобы удовлетворить условие порядка.
  13. Если такие элементы есть, то они сдвигаются влево, а вставленный элемент становится последним в упорядоченной части массива.
  14. Если таких элементов нет, то вставляемый элемент просто становится последним в упорядоченной части массива.
  15. Алгоритм завершается, когда все элементы массива упорядочены.
  16. Для каждого элемента массива выводится его наименование.
  17. Используется оператор new для выделения памяти под массив.
  18. При выделении памяти под массив используется переменная number_of_bands.
  19. Для каждого элемента массива вызывается функция init_band().
  20. Для вывода данных каждого элемента массива вызывается функция show_band().

ИИ поможет Вам:


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

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы