Лабораторная работа №20 "Составление программ с использованием массивов структур"

Задачи


Вариант А3

Написать программу, работающую с массивом структур со следующими полями:

  • Назание группы;
  • Курс;
  • Количество студентов в группе.

Программа должна позволять ввести новые данные, вывести содержимое массива на экран, вывести информацию по группе с минимальным количеством студентов, выйти из программы. Все действия программы организовать с помощью функций.
Рекомендации: Основная функция только реализует главное меню. Действие каждого пункта меню выполняет отдельная функция.

Спойлер
// Вариант 3
#include <stdio.h>
struct gruppi {
  char group[10];
  int kurs;
  int kolich;
};
gruppi stud[10];
int count = 0;
void add();
void view();
void min_kolvo();
int main() {
  char a;
  do {
    printf("\n 1 - add new");
    printf("\n 2 - view all");
    printf("\n 3 - min kol-vo studentov");
    printf("\n 0 - exit\n");
    a = getchar();
    switch (a) {
      case '1': add(); break;
      case '2': view(); break;
      case '3': min_kolvo(); break;
    }
  } while (a != '0');
}

void add() {
  printf("\n%i:\n", count);
  printf("gruppa: ");
  scanf("%s", stud[count].group);
  printf("kurs: ");
  scanf("%i", &stud[count].kurs);
  printf("studentov: ");
  scanf("%i", &stud[count].kolich);
  count++;
  getchar();
  return;
}

void view() {
  int i;
  for (i = 0; i < count; i++) {
    printf("\n%i:\n", i);
    printf("gruppa: %s", stud[i].group);
    printf("\nkurs: %i", stud[i].kurs);
    printf("\nstudentov: %i\n", stud[i].kolich);
  }
  getchar();
  return;
}

void min_kolvo() {
  int i, min;
  min = stud[0].kolich;
  for (i = 1; i < count; i++) {
    if (min > stud[i].kolich) {
      min = stud[i].kolich;
    }
  }
  for (i = 0; i < count; i++) {
    if (stud[i].kolich == min) {
      printf("\n%i:\n", i);
      printf("gruppa: %s", stud[i].group);
      printf("\nkurs: %i", stud[i].kurs);
      printf("\nstudentov: %i\n", stud[i].kolich);
    }
  }
  getchar();
  return;
}

Вариант А4

Написать программу, работающую с массивом структур со следующими полями:

  • Назание товара;
  • Цена товара;
  • Остаток товара на складе.

Программа должна позволять ввести новые данные, вывести содержимое массива на экран, вывести среднюю цену определенного товара, выйти из программы. Все действия программы организовать с помощью функций.
Рекомендации: Основная функция только реализует главное меню. Действие каждого пункта меню выполняет отдельная функция.

Спойлер
// Вариант 4
#include <stdio.h>
#include <string.h>
struct shop {
  char name[30];
  float cost;
  int stock;
};
shop sh[10];
int count = 0;

void add();
void view();
void item();

int main() {
  char c;
  do {
    printf("\n");
    printf("1 - add\n");
    printf("2 - view\n");
    printf("3 - cost item\n");
    printf("0 - exit\n");
    c = getchar();
    switch (c) {
      case '1': add(); break;
      case '2': view(); break;
      case '3': item(); break;
    }
    getchar();
  } while (c != '0');
}

void add() {
  printf("\n%i\n", count);
  scanf("%s", sh[count].name);
  scanf("%f", &sh[count].cost);
  scanf("%i", &sh[count].stock);
  count++;
  return;
}

void view() {
  int i;
  for (i = 0; i < count; i++) {
    printf("\n%i: ", i);
    printf("%s ", sh[i].name);
    printf("%.2f ", sh[i].cost);
    printf("%i ", sh[i].stock);
  }
  getchar();
  return;
}

void item() {
  char s[30];
  int i, cmp, num = 0, allmoney = 0, allgoods = 0;
  float srcost = 0;
  scanf("%s", s);
  for (i = 0; i < count; i++) {
    cmp = strcmp(s, sh[i].name);
    if (cmp == 0) {
      allmoney = (sh[i].cost * sh[i].stock) + allmoney;
      allgoods = sh[i].stock + allgoods;
      num++;
    }
  }
  srcost = allmoney / allgoods;
  printf("Item %s cost %.2f of %i different types:", s, srcost, num);
  return;
}

1 лайк

Вариант А1

Написать программу, работающую с массивом структур со следующими полями:

  • Табельный номер работника;
  • Фамиляия Имя Отчество работника;
  • Стаж работы.

Программа должна позволять ввести новые данные, вывести содержимое массива на экран, вывести средний стаж работы, выйти из программы. Все действия программы организовать с помощью функций.
Рекомендации: Основная функция только реализует главное меню. Действие каждого пункта меню выполняет отдельная функция.

Спойлер
Первый вариант
#include <stdio.h>
#include <string.h>

struct work
{
   char fam[40];
   int numberofworker;
   int workexperience;
};
work wrk[10];
int count = 0;

void add();
void view();
void aver();

int main()
{
   char c;
   do
   {
        printf("\n");
        printf("1 - add new\n);
        printf("2 - view all\n);
        printf("3 - average work experience\n);
        printf("0 - exit\n);
        c = getchar();
        switch (c)
        {
             case '1': add(); break;
             case '2': view(); break;
             case '3': aver(); break;
        }
    }
    while (c != '0');
}

void add()
{
     printf("\n%i:\n", count);
     scanf("%i", &wrk[count].numberofworker);
     scanf("%s", &wrk[count].fam);
     scanf("%i", &wrk[count].workexperience);
     count++;
     getchar();
}

void view()
{
     int i;
     for(i = 0; i < count; i++)
     {
         printf("\n%i:\n", i);
         printf("%i\n", wrk[i].numberofworker);
         printf("%s\n", wrk[i].fam);
         printf("%i\n", wrk[i].workexperience);
     }
     getchar();
}

void aver()
{
    int i;
    float s = 0;
    for(i = 0; i < count; i++)
    {
         s = s + wrk[i].workexperience;
    }
    printf("\n%f\n", s/count);
    getchar();
}

2 лайка

Вариант А5

Написать программу, работающую с массивом структур со следующими полями:

  • Маршрут автомобиля;
  • Пробег за поездку (км);
  • Расход бензина за поездку (л).

Программа должна позволять ввести новые данные, вывести содержимое массива на экран, вывести средний расход бензина (л на 100 км) за все поездки, выйти из программы. Все действия программы организовать с помощью функций.
Рекомендации: Основная функция только реализует главное меню. Действие каждого пункта меню выполняет отдельная функция.

Спойлер
// 5 вариант
#include <stdio.h>
    struct car {
  char mar[30];
  float prob;
  float ras;
} car[10];
int count = 0;
void add();
void view();
void sred();
int main() {
  char c;
  do {
    printf("\n 1 - add new");
    printf("\n 2 - view all");
    printf("\n 3 - srednya");
    printf("\n 0 - exit\n");
    c = getchar();
    switch (c) {
      case '1': add(); break;
      case '2': view(); break;
      case '3': sred(); break;
    }
  } while (c != '0');
}

void add() {
  printf("\n%i:\n", count);
  scanf("%s", car[count].mar);
  scanf("%f", &car[count].prob);
  scanf("%f", &car[count].ras);
  count++;
  getchar();
  return;
}

void view() {
  int i;
  for (i = 0; i < count; i++) {
    printf("\n%i:\n", i);
    printf("%s\n", car[i].mar);
    printf("%f\n", car[i].prob);
    printf("%f\n", car[i].ras);
  }
  getchar();
  return;
}

1 лайк