неопределенная ссылка на 'WinMain' [Ошибка] ld вернул 1 состояние выхода, передав матрицу в качестве параметра в функцию - PullRequest
0 голосов
/ 06 января 2020

Я начинаю изучать программирование на C, и у меня есть эта задача, где я должен написать программу с частью кода в другом файле. Но у меня проблемы с этой последней частью, потому что я использую матрицы.

Вот основная часть:

#include <stdio.h>
#include "otsenkatry.c"

int main()
{
    int i, j;
    int a[i];
    int s, gru;
    char A, B, C, D, E;

    printf("Introduce the number os students ", &s);
    fflush(stdout);
    scanf("%d", &s);
    printf("Introduce their grades\n");
    fflush(stdout);

    for (i = 0; i<s; i++)
    { 
        printf("a[%d] = ", i); 
        fflush(stdout);
        scanf("%d", &a[i]);

        printf("Grade: %d  %d \n", a, otsenkatry(a));
        fflush(stdout);//}
    }

    return 0;                       
}

И вот та часть проблемы:

int otsenkatry (int* a)
{
    int i;
    int gru;

    if (a[i]<51)
    {   
        gru=2;
    }
    if (a[i]>50 && a[i]<69)
    {
        gru=3;
    }
    if (a[i]>69 && a[i]<=85)
    {
        gru=4;
    }
    if (a[i]>85 && a[i]<=100)
    {
        gru=5;
    }

    return gru;                         
}

Я понял, что это связано с указателями, но Я не знаю, как это изменить.

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Есть несколько проблем с вашим кодом:

  • массив a неправильно объявлен
  • печатный массив a вместо целого числа
  • аргумент otsenkatry - это массив, но он должен быть целым
  • , включая c файл
  • с использованием неопределенного значения i в качестве индекса массива в otsenkatry
  • Аргумент & s в первом printf недействителен
  • функция otsenkatry может быть упрощена
  • переменные j, gru, A, B, C, D, E определены в основном, но никогда не используются

Вот исправленная реализация:

#include <stdio.h>


int otsenkatry (int v) {
    if (v<51)
        return 2;
    if (v<69)
        return 3;
    if (v<=85)
        return 4;
    if (v<=100)
        return 5;
    return 0;
}


int main(){
    int i, a[100], s;

    printf("Introduce the number of students ");
    fflush(stdout);
    scanf("%d", &s);
    if (s > 100)
        s = 100;
    printf("Introduce their grades\n");
    fflush(stdout);

    for (i = 0; i<s; i++) { 
        printf("a[%d] = ", i); 
        fflush(stdout);
        scanf("%d", &a[i]);

        printf("Grade %d: %d \n", a[i], otsenkatry(a[i]));
        fflush(stdout);
    }

    return 0;                       
}
0 голосов
/ 06 января 2020

Ваша матрица имеет неопределенный размер:

int i, j;
int a[i];

Чтобы правильно объявить матрицу a[], вам нужно передать размер - значение переменной i. К сожалению, переменная i объявлена ​​на одну строку выше без инициализации с любым значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...