C/Visual C - Problema al acceder a estructura

 
Vista:

Problema al acceder a estructura

Publicado por jLa (3 intervenciones) el 11/03/2007 21:00:40
/*-----------------------------------------*/
/* polinom.h */
/*-----------------------------------------*/

#ifndef _POLINOMIO_
#define _POLINOMIO_
typedef struct {
float *coef;
int MaxGrado;
int grado;
} poli;

typedef poli *polinomio;

polinomio CrearPolinomio (int MaxGrado);
int Grado (polinomio P);
float Coeficiente (polinomio P, int n);
void AsigCoeficiente (polinomio P, int n, float c);
void DestruirPolinomio (polinomio P);
#endif



y en el archivo main.c tengo esto:


#include <stdio.h>
#include <stdlib.h>
#include "POLINOM.H"
#include "operaciones.h"

int main()
{
struct poli *pol;
int opcion,maxgrado,i;

printf("Elija la operación que desea realizar.\n"
"Opciones:"
"1-) Sumar.\n"
"2-) Restar.\n"
"3-) Derivar.\n"
"4-) Multiplicar.\n");

scanf("%i", &opcion);
printf("Introduzca el grado máximo del polinomio");
scanf("%i", &pol.Maxgrado);

}

El error me lo da en el ultimo scanf: request for member `Maxgrado' in something not a structure or union
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al acceder a estructura

Publicado por Nelek (816 intervenciones) el 12/03/2007 07:53:58
Hola,

Lo primero, si creas un alias con el typedef, te recomiento que lo uses despues.

int main()
{
struct poli *pol; <--------- polinomio pol; //con esto tienes lo mismo
int opcion,maxgrado,i;

//...

Y respecto a tu fallo, creo que es porque estas declarando pol como puntero pero luego intentas hacer la entrada de datos como si fuera un objeto.

scanf("%i", &opcion);
printf("Introduzca el grado máximo del polinomio");
scanf("%i", &pol.Maxgrado); <----- intenta: scanf ("%i", pol->Maxgrado); //Si esta opcion no te funciona a la primera, prueba con otras combinaciones (aun no estoy muy puesto en punteros) pero el problema lo tienes aqui.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al acceder a estructura

Publicado por matias (7 intervenciones) el 14/03/2007 00:40:51
la respuesta es para acceder a la posiçcion de memoria usarias
scanf("%i", &pol->Maxgrado); si no la declaras como puntero scanf("%i", &pol.Maxgrado);.
para mas informacion entra a www.code-visual.blogspot..com


GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al acceder a estructura

Publicado por Code-visual.blogspot.com (7 intervenciones) el 21/05/2007 02:46:50
WWW.CODE-VISUAL.BLOGSPOT.COM ACA ENCONTRARAS CURSOS , FOROS , CGUIAS , CODIGOS FUENTES , HAY UN CHAT RELACIONADO CON LA PROGRAMACION , ETC TE LA RECOMIENDO GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al acceder a estructura

Publicado por fernando.gomez (1604 intervenciones) el 12/03/2007 16:48:07
Los problemas están en el main. Primero, la variable es MaxGrado, no Maxgrado. Son diferentes. Segundo, la variable "pol" es un puntero, por lo que tienes que emplear el operador -> en lugar del punto para accesar a los miembros:

scanf("%i", &pol->MaxGrado);

Y tercero, tu puntero apunta a basura de memoria, con lo que tienes un comportamiento indefinido que posiblemente te cause muchos problemas.

Finalmente, ¿para qué crear un typedef, así como lo creaste? "polinomio" es siempre un puntero, y si usas "poli" tienes que seguir poniendo el "struct" con lo que la ventaja de emplear el typedef se desvanece. Por otro lado, "polinomio" ni siquiera es indicativo de que sea puntero, así que tampoco agrega valor semántico.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar