Is it possible to do multiplication and division mathematical operations using pointers to structures within global structures in c?

1
#include <stdio.h>

#include <stdlib.h>
struct end{
        float rua;
        float cep;
        float soma;
    };

typedef struct dados{
        struct end e_end;

    float idade;
    float peso;

}dados;

dados *p_dados;
p_dados=&dados;

main(){

dados *x;
float y;
x=&y;   

printf ("\n\n\nentre com valor\n");
scanf("%f",x->e_end.idade);
printf("\nentre com um valor \n");
scanf("%f",x->peso);
printf("\nentre com a rua\n");
scanf("%f",x->e_end.rua);
printf("\nentre com o cep\n");
scanf("%F",x->e_end.cep);
system("pause");
system("cls");

x->(e_end.soma=x->e_end.cep)/(x->e_end.rua);


printf("\n\n a soma e= %f",x->e_end.soma);

system("pause");
return 0;
}
    
asked by anonymous 19.09.2017 / 16:12

2 answers

0

It is not good practice to use global variables. I do not know if it was what you wanted, but I modified your example to use structs, pointers to a function, and calculation.

#include <stdio.h>

#include <stdlib.h>
struct end{
        float rua;
        float cep;
        float soma;
    };

typedef struct dados{
    struct end e_end;
    float idade;
    float peso;

}dados;

void ler(dados *x) {
    printf ("\n\n\nentre com valor\n");
    scanf("%f", &x->idade);
    printf("\nentre com um valor \n");
    scanf("%f", &x->peso);
    printf("\nentre com a rua\n");
    scanf("%f", &x->e_end.rua);
    printf("\nentre com o cep\n");
    scanf("%f", &x->e_end.cep); 
}

int main(){

dados x;

ler(&x);
x.e_end.soma = x.e_end.cep / x.e_end.rua;
printf("\n\n a soma e= %f", x.e_end.soma);

system("pause");
return 0;
}
    
19.09.2017 / 17:31
0

Here is a (tested) example of how to calculate the area of a% declared% globally using the retangulo of coordenadas and canto superior esquerdo :

#include <stdio.h>

typedef struct retangulo_s retangulo_t;
typedef struct coordenada_s coordenada_t;

struct coordenada_s
{
    int x;
    int y;
};

struct retangulo_s
{
    coordenada_t A;
    coordenada_t B;
};

int calcular_area_retangulo( retangulo_t r )
{
    return (r.A.y - r.B.y) * (r.A.x - r.B.x);
}

retangulo_t ret;
retangulo_t * p = &ret;

int main( void )
{
    printf("Coordenada X do canto superior esquerdo: ");
    scanf( "%d", &p->A.x );

    printf("Coordenada Y do canto superior esquerdo: ");
    scanf( "%d", &p->A.y );

    printf("Coordenada X do canto inferior direito: ");
    scanf( "%d", &p->B.x );

    printf("Coordenada Y do canto inferior direito: ");
    scanf( "%d", &p->B.y );

    printf("\nCoordenada Superior Esquerdo: x=%d, y=%d\n", p->A.x, p->A.y );
    printf("Coordenada Inferior Direito: x=%d, y=%d\n", p->B.x, p->B.y );
    printf("Area Total: %d\n", calcular_area_retangulo( *p ) );

    return 0;
}

Output:

Coordenada X do canto superior esquerdo: 10
Coordenada Y do canto superior esquerdo: 10
Coordenada X do canto inferior direito: 27
Coordenada Y do canto inferior direito: 32

Coordenada Superior Esquerdo: x=10, y=10
Coordenada Inferior Direito: x=27, y=32
Area Total: 374
    
19.09.2017 / 17:34