Напишите структуру - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Напишите программу «Речные рыбы». Информация о рыбах должна содержаться в записях со следующими полями: название, средний размер, средний вес, средняя продолжительность жизни. Разработать различные виды запросов информации из базы данных программы, например выдать список рыб в алфавитном порядке, заданных размеров и т. д.

Решение задачи: «Напишите структуру»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <string.h>
  5.  
  6. #define MAX_NAME 24
  7. #define SIZE 10
  8.  
  9. struct animal{
  10.     char name[MAX_NAME];// Название
  11.     double size;        // Средний размер (м.)
  12.     double weight;      // Средний вес (кг.)
  13.     int year;           // Продолжительность жизни (лет)
  14. }fish[SIZE],fishAlf[SIZE];//fishAlf - рыбы по алфавиту
  15.  
  16. int inScan(void)
  17. {
  18.     FILE *base = fopen("base.txt","r");// Указатель на файл; r - чтение из файла
  19.     if(!base) return printf("Файл не найден!");
  20.     else{
  21.         size_t i;
  22.         for( i = 0; i < SIZE; i++){// Заполнение структуры из файла
  23.             fscanf(base, "%s", &fish[i].name);
  24.             fscanf(base, "%lf", &fish[i].size);
  25.             fscanf(base, "%lf", &fish[i].weight);
  26.             fscanf(base, "%d", &fish[i].year);
  27.             fishAlf[i] = fish[i];
  28.         }
  29.         fclose(base);
  30.         for( i = 0; i < SIZE; i++){// Размещение стркутры в алфавитном порядке
  31.             size_t j;
  32.             for( j = i+1; j < SIZE; j++){
  33.                 if(strcmp(fishAlf[i].name, fishAlf[j].name)>0){
  34.                     struct animal tmp = fishAlf[i];
  35.                     fishAlf[i] = fishAlf[j];
  36.                     fishAlf[j] = tmp;
  37.                 }
  38.             }
  39.         }
  40.     }
  41. }
  42.  
  43. int outPrint(int alf, double size, double weight, int year)
  44. {
  45.     struct animal *p_fish;
  46.     if(alf)     p_fish = fishAlf;// Если выбрали в алфавитном порядке
  47.     else        p_fish = fish;   // Если выбрали не в алфавитном порядке
  48.     size_t i;
  49.     for( i = 0; i < SIZE; i++){
  50.         if(p_fish[i].size >= size){
  51.             if(p_fish[i].weight >= weight){
  52.                 if(p_fish[i].year >= year){
  53.                     printf("\nНазвание: %s\n",                  p_fish[i].name);
  54.                     printf("Размер: %.2lf м.\n",                p_fish[i].size);
  55.                     printf("Вес: %.3lf кг.\n",                p_fish[i].weight);
  56.                     printf("Продолжительность жизни: %d лет\n", p_fish[i].year);
  57.                 }
  58.             }
  59.         }
  60.     }
  61. }
  62.  
  63. int findAnimal(void)
  64. {
  65.     printf("Параметры для вывода списка рыб:");
  66.     printf("Вывод по алфавиту (0 - нет, 1 - да): ");
  67.     int alf = EOF;
  68.     while(alf < 0 || alf > 1){
  69.         scanf("%d", &alf);
  70.         if(alf < 0 || alf > 1) printf("Неверно! Вывод по алфавиту ( 0 - нет, 1 - да): ");
  71.     }
  72.     printf("Размеры рыбы от N м.: ");
  73.     double size;
  74.     scanf("%lf", &size);
  75.     printf("Вес рыбы от N кг.: ");
  76.     double weight;
  77.     scanf("%lf", &weight);
  78.     printf("Продолжительность жизни от N лет: ");
  79.     int year;
  80.     scanf("%d", &year);
  81.     return outPrint(alf, size, weight, year);
  82. }
  83.  
  84. int main(void)
  85. {
  86.     setlocale(LC_ALL, "Rus");
  87.     printf("~ ПРОГРАММА 'РЕЧНЫЕ РЫБЫ' ~\n\n");
  88.     inScan();
  89.     findAnimal();
  90.     return 0;
  91. }

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

  1. Объединение #include <stdio.h>, #include <stdlib.h>, #include <locale.h>, #include <string.h> в начале кода предоставляет функции для работы с файлами, математическими операциями, строками и вводом-выводом данных.
  2. Переменная MAX_NAME определяет максимально возможное количество символов в названии рыбы (24 символа).
  3. Переменная SIZE определяет количество рыб в базе данных (10 рыб).
  4. Структура animal содержит поля name (название рыбы, макс. 24 символа), size (средний размер рыбы, double), weight (средний вес рыбы, double) и year (продолжительность жизни рыбы, int).
  5. Массив fish и fishAlf содержат информацию о рыбах. Значения fishAlf и fish идентичны, но fishAlf отсортирован в алфавитном порядке.
  6. Функция inScan считывает данные из файла base.txt и заполняет структуру animal (переменные fish и fishAlf).
  7. Функция outPrint выводит информацию о рыбах, соответствующих заданным параметрам (алфавитный порядок, размер, вес, продолжительность жизни).
  8. Функция findAnimal запрашивает у пользователя параметры для вывода списка рыб и вызывает функцию outPrint.
  9. В функции main программа инициализируется, считывается информация из файла base.txt в структуры fish и fishAlf (вызывается функция inScan) и выполняется поиск рыбы по заданным параметрам (вызывается функция findAnimal).
  10. Программа завершается, когда пользователь возвращает 0 (ноль) в качестве значения.

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


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

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

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы