Ошибка недопустимых операндов в двоичном & (есть 'int **' и 'int *') - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь выяснить длину трех сторон треугольника, затем отсортировать их по порядку и посмотреть, сформирован ли треугольник. Я должен использовать struct, но эта ошибка появляется. Мой компилятор - Dev C ++, и ограничение этой проблемы - три точки треугольника, должно быть Integer. и имя тега структуры должно 'Точка'. Мне нужна твоя помощь с этим.

***** отредактировал **** ошибка этого кода: «недопустимые операнды в двоичный файл & (имеют 'int **' и 'int *')"

#include <stdio.h>
#include <math.h> 

typedef struct {
    int x;
    int y;
} Point;

int main()
{
    Point p1, p2, p3;    

    int temp;

    printf("please input first Point\n");
    scanf("%lf %lf", &p1.x &p1.y);

    printf("second Point\n");
    scanf("%lf %lf", &p2.x &p2.y);

    printf("Third Point\n");
    scanf("%lf %lf", &p3.x &p3.y); 

    int aX = p2.x - p1.x;    
    int aY = p2.y - p1.y;    

    int a = sqrt(pow(aX, 2) + pow(aY, 2));

    int bX = p3.x - p2.x;    
    int bY = p3.y - p2.y;   

    int b = sqrt(pow(bX, 2) + pow(bY, 2));

    int cX = p3.x - p1.x;   
    int cY = p3.y - p1.y;   

    int c = sqrt(pow(cX, 2) + pow(cY, 2));

    if (a >= b){
        temp = b;
        b = a;
        a = temp;
    }
    if (b >= c){
        temp = c;
        c = b;
        b = temp;
    }
    if (a >= b){
        temp = b;
        b = a;
        a = temp;
    }

    if(c< a + a){
        printf("ture");
    }
    else{printf("false");}

    return 0;
}

в чем проблема?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Сообщение об ошибке вызвано тем, что компилятор считает, что вы пытаетесь использовать двоичный оператор & (побитовое И) с аргументами &p1.x и p1.y, что не имеет смысла.

Это, в свою очередь, потому что вы пропускаете запятые между определенными аргументами функции; например, это:

    scanf("%lf %lf", &p1.x &p1.y);

должно быть так:

    scanf("%d %d", &p1.x, &p1.y);

(Обратите внимание, что я также исправил спецификатор формата - это %d, а не %lf, для int.)

0 голосов
/ 13 апреля 2020

Использование двоичного оператора & (побитовое И) с аргументами &p1.x и p1.y также неверно. Я рекомендую вам ссылаться на Операции ввода-вывода .

Я исправил ваш код, только код, а не теория.

#include <stdio.h>
#include <math.h> 

typedef struct Triangles{
    int x;
    int y;
} ;

int main()
{
    struct Triangles p1;
    struct Triangles p2;
    struct Triangles p3;   

    int temp;

    printf("please input first Point\n");
    scanf("%d %d", &p1.x ,&p1.y);

    printf("second Point\n");
    scanf("%d %d", &p2.x ,&p2.y);

    printf("Third Point\n");
    scanf("%d %d", &p3.x ,&p3.y); 

    int aX = p2.x - p1.x;    
    int aY = p2.y - p1.y;    

    int a = sqrt(pow(aX, 2) + pow(aY, 2));

    int bX = p3.x - p2.x;    
    int bY = p3.y - p2.y;   

    int b = sqrt(pow(bX, 2) + pow(bY, 2));

    int cX = p3.x - p1.x;   
    int cY = p3.y - p1.y;   

    int c = sqrt(pow(cX, 2) + pow(cY, 2));

    if (a >= b){
        temp = b;
        b = a;
        a = temp;
    }
    if (b >= c){
        temp = c;
        c = b;
        b = temp;
    }
    if (a >= b){
        temp = b;
        b = a;
        a = temp;
    }

    if(c< a + a){
        printf("ture");
    }
    else{printf("false");}

    return 0;
}

Забыл упомянуть, что спецификатор формата %lf (используется для двойного) неверен, это должно быть %d для ** int *. * Приветствия!

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