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