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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
 
#define MAX_NAME 24
#define SIZE 10
 
struct animal{
    char name[MAX_NAME];// Название
    double size;        // Средний размер (м.)
    double weight;      // Средний вес (кг.)
    int year;           // Продолжительность жизни (лет)
}fish[SIZE],fishAlf[SIZE];//fishAlf - рыбы по алфавиту
 
int inScan(void)
{
    FILE *base = fopen("base.txt","r");// Указатель на файл; r - чтение из файла
    if(!base) return printf("Файл не найден!");
    else{
        size_t i;
        for( i = 0; i < SIZE; i++){// Заполнение структуры из файла
            fscanf(base, "%s", &fish[i].name);
            fscanf(base, "%lf", &fish[i].size);
            fscanf(base, "%lf", &fish[i].weight);
            fscanf(base, "%d", &fish[i].year);
            fishAlf[i] = fish[i];
        }
        fclose(base);
        for( i = 0; i < SIZE; i++){// Размещение стркутры в алфавитном порядке
            size_t j;
            for( j = i+1; j < SIZE; j++){
                if(strcmp(fishAlf[i].name, fishAlf[j].name)>0){
                    struct animal tmp = fishAlf[i];
                    fishAlf[i] = fishAlf[j];
                    fishAlf[j] = tmp;
                }
            }
        }
    }
}
 
int outPrint(int alf, double size, double weight, int year)
{
    struct animal *p_fish;
    if(alf)     p_fish = fishAlf;// Если выбрали в алфавитном порядке
    else        p_fish = fish;   // Если выбрали не в алфавитном порядке
    size_t i;
    for( i = 0; i < SIZE; i++){
        if(p_fish[i].size >= size){
            if(p_fish[i].weight >= weight){
                if(p_fish[i].year >= year){
                    printf("\nНазвание: %s\n",                  p_fish[i].name);
                    printf("Размер: %.2lf м.\n",                p_fish[i].size);
                    printf("Вес: %.3lf кг.\n",                p_fish[i].weight);
                    printf("Продолжительность жизни: %d лет\n", p_fish[i].year);
                }
            }
        }
    }
}
 
int findAnimal(void)
{
    printf("Параметры для вывода списка рыб:");
    printf("Вывод по алфавиту (0 - нет, 1 - да): ");
    int alf = EOF;
    while(alf < 0 || alf > 1){
        scanf("%d", &alf);
        if(alf < 0 || alf > 1) printf("Неверно! Вывод по алфавиту ( 0 - нет, 1 - да): ");
    }
    printf("Размеры рыбы от N м.: ");
    double size;
    scanf("%lf", &size);
    printf("Вес рыбы от N кг.: ");
    double weight;
    scanf("%lf", &weight);
    printf("Продолжительность жизни от N лет: ");
    int year;
    scanf("%d", &year);
    return outPrint(alf, size, weight, year);
}
 
int main(void)
{
    setlocale(LC_ALL, "Rus");
    printf("~ ПРОГРАММА 'РЕЧНЫЕ РЫБЫ' ~\n\n");
    inScan();
    findAnimal();
    return 0;
}

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

  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
Похожие ответы