Я получаю сообщение: не могу преобразовать 'float' в 'float *' в назначении, и у меня есть некоторые логические ошибки - PullRequest
0 голосов

У меня проблема с компилятором, и у меня должны быть логические ошибки (язык C) Я хочу иметь одну пустую функцию, которая дает мне максимальную цену, минимальную цену и среднее значение таблицы с максимальными 100 ценами. И если пользователь дает price=-1, я хочу, чтобы программа заканчивалась!

Вот мой код:

#include <stdio.h>

void function(float pin[],int j,float *min,float *max,float *mo,int cnt);

int main()
{

    int i=0,count=0;

    float prc[100],mo;
    for(i=0;i<=99;i++)
    {
        printf("Enter price:");
        scanf("%f",&prc[i]);
            if(prc[i]==-1)
        {
            break;
        }
        count++;
    }

    int min=prc[0];
    int max=prc[0];
    void function(float prc,int i,float *min,float *max,float *mo,int count);
    printf("Minimum price is:%f Maximum price is:%f and Mo is:%f",min,max,mo);

    return 0;
}

void function(float pin[],int j,float *min,float *max,float *mo,int cnt)
{
    float sum;

    for(j=0;j<=cnt;j++)
    {
        if(pin[j]<*min)
        {
            min=pin[j];
        }
        if(pin[j]>*max)
        {
            *max=pin[j];
        }
        sum=+pin[j];
    }
    *mo=sum/j;
}

Ответы [ 3 ]

1 голос
/ 09 апреля 2019

Похоже, у вас много мелких ошибок (отсутствие разыменования, использование переменной вне области видимости, неправильный оператор и т. Д.):

#include <stdio.h>

void function(float pin[], float *min, float *max, float *mo, int cnt);

int main()
{
    int i=0, count=0;

    float prc[100], mo;
    for (i=0; i<=99; i++)
    {
        printf("Enter price:");
        scanf("%f", &prc[i]);
        if (prc[i] == -1)
        {
            break;
        }

        count++;
    }

    float min=prc[0];
    float max=prc[0];
    function(&prc[0], &min, &max, &mo, count);
    printf("Minimum price is:%f Maximum price is:%f and Mo is:%f", min, max, mo);

    return 0;
}

void function(float pin[], float *min, float *max, float *mo, int cnt)
{
    float sum = 0.0f;

    for (int j=0; j < cnt; j++)
    {
        if (pin[j] < *min)
        {
            *min = pin[j];
        }
        if (pin[j] > *max)
        {
            *max = pin[j];
        }

        sum += pin[j];
    }

    *mo = sum / cnt;
}
0 голосов
/ 09 апреля 2019

неправильное использование указателя и типа, используйте

float min=prc[0];
float max=prc[0];
function(prc,i,&min,&max,&mo,count);

Вы заявляете как:

void function(float pin[],int j,float *min,float *max,float *mo,int cnt);

Таким образом, вы должны поставить указатель с плавающей точкой, но не число с плавающей точкой.

0 голосов
/ 09 апреля 2019

В функции есть несколько ошибок:

Я изменил код и выглядит нормально, кроме аргумента функции mo, решаю, объявить ли его как указатель с плавающей точкой или с плавающей точкой

  1. Посмотрите на объявление внутри main, вы вызываете функцию, но синтаксис для объявления.

  2. использовал mo в качестве аргумента, но mo определен как переменная типа float, тогда как функция принимает указатель согласно объявлению, и есть несколько предупреждений, связанных с типами

  3. Объявлены целые числа, но распечатаны с использованием спецификаторов формата для числа с плавающей запятой% f

включает

void function(float pin[],int j,float *min,float *max,float *mo,int cnt);

int main()
{

    int i=0,count=0;

    float prc[100],mo;
    for(i=0;i<=99;i++)
    {
        printf("Enter price:");
        scanf("%f",&prc[i]);
            if(prc[i]==-1)
        {
            break;
        }
        count++;
    }

    int min=prc[0];
    int max=prc[0];
    function(prc,i,min,max,mo,count);
    printf("Minimum price is:%f Maximum price is:%f and Mo is:%f",min,max,mo);

    return 0;
}

void function(float pin[],int j,float *min,float *max,float *mo,int cnt)
{
    float sum;

    for(j=0;j<=cnt;j++)
    {
        if(pin[j]<*min)
        {
            *min=pin[j];
        }
        if(pin[j]>*max)
        {
            *max=pin[j];
        }
        sum=+pin[j];
    }
    *mo=sum/j;
}
...