Надо поправить код! - C (СИ)

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

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

Решил помочь одному из пользователей с написанием программы и столкнулся с проблемой:

46 строка:

warning assignment from incompatible pointer type

80 строка:

void valude not ingnored as it ought to be

И да, впервые использую указатель на структуру, проверьте

void outPrint(){..}

, правильно ли работаю с указателем?
#include <stdio.h>
#include <stdlib.h>
#include <locale.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);
            fish[i] = fishAlf[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;
                }
            }
        }
    }
}
 
void outPrint(int alf, double size, double weight, int year)
{
    struct animal *p_fish;
    if(alf == 1) p_fish = &fish;
    else         p_fish = &fishAlf;
    size_t i;
    for( i = 0; i < SIZE; i++){
        if(size >= p_fish[i].size){
            if(weight >= p_fish[i].weight){
                if(year >= p_fish[i].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;
}
Исправил 80 строку.

void outPrint

заменил на

int outPrint

Но теперь так же

warning

с

45/46 строкой

, через указатель не выводит результаты структуры.

Решение задачи: «Надо поправить код!»

textual
Листинг программы
fscanf(base, "%s", &fish[i].name);
fscanf(base, "%lf", &fish[i].size);
fscanf(base, "%lf", &fish[i].weight);
fscanf(base, "%d", &fish[i].year);
fish[i] = fishAlf[i];

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

  1. base - это файловый дескриптор, который указывает на файл, с которым мы работаем.
  2. fish - это массив структур, который содержит информацию о рыбах. Каждая структура fish содержит поля name (имя рыбы), size (размер рыбы), weight (вес рыбы) и year (год рождения рыбы).
  3. fishAlf - это массив, который, вероятно, содержит информацию о рыбах в другом формате.
  4. Код считывает данные из файла в массив fish. Сначала считывается имя рыбы, затем размер, вес и год рождения.
  5. После считывания данных, содержимое массива fish присваивается массиву fishAlf, возможно, для дальнейшей обработки или отображения.

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


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

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

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