Título: C - Error undeclared (first use in this function) Publicado por: pacman22 en 26 Octubre 2014, 04:17 am Estoy haciendo un tad , y declare la interfaz
#ifndef CONJUNTOENTERO_INTERFAZ_H #define CONJUNTOENTERO_INTERFAZ_H /* Estructura de datos */ typedef struct { int elementos[30]; int cardinalidad; int tama; } conjuntoEnteros; /*Declaracion de las operaciones */ void Iniciar(conjuntoEnteros *conjuntoA[],int tam); void Mostrar(conjuntoEnteros *conjuntoA[]); short int Pertenece(int x, conjuntoEnteros conjuntoA[]); void Agregar(int x ,conjuntoEnteros *conjuntoA[]); y la implementacion #include "ConjuntoEntero_Interfaz.h" #include <stdio.h> /*Inicializa el conjunto en vacio*/ void Iniciar(conjuntoEnteros *conjuntoA[], int tam) { conjuntoA>tama=tam; conjuntoA>cardinalidad=0; } /*Muestra los elementos de un conjunto*/ void Mostrar(conjuntoEnteros *conjuntoA[]); { int i; for(i=0;i<conjuntoA.cardinalidad;i++) { printf("n\ Elemento %d",conjuntoA.elementos) } } /*Verificar si el elemento ya pertenece al conjunto*/ /*Devuelve 0 si no se encuentra en el conjunto*/ /*Devuelve 1 si se encuentra en el conjunto*/ short int Pertenece(int x, conjuntoEnteros conjuntoA[]) { int i,valor; i=0; while (x != conjuntoA.elementos) { i++; } if (i>conjuntoA.cardinalidad) valor=0; else { valor=1; } return valor; } /*Agregar un elemento al conjunto*/ void Agregar(int x ,conjuntoEnteros *conjuntoA[]) { int i; if (pertenece(x , conjuntoA[])=0 { i=conjuntoA.cardinalidad; (*conjuntoA).elementos=x; (*conjuntoA).cardinalidad++ } else { printf("n\ El elemento ya se encuentra en el conjunto"); } } Pero me sale este error :'tama' undeclared (first use in this function) . Cuando a tama ya lo declare en la interfaz. Alguna ayuda gracias :D Título: Re: C - Error undeclared (first use in this function) Publicado por: BloodSharp en 26 Octubre 2014, 04:41 am Te estás haciendo un lío con los punteros de estructuras xD
Primero fijate las definiciones tuyas: Código
En la primera estás haciendo como un "doble puntero" y en la segunda creo que está bien pero yo al menos lo definiría en todas las funciones así: Ejemplo: Código
Después tama no está definido porque lo estás usando como si fuera una variable ya definida en una operación de comparación mayor que(conjuntoA>tama=tam;)... para acceder a un dato de un puntero a una estructura sería así: Código
Solo lo podés usar con punto (conjuntoA.tama=tam;)si solo si la estructura no la envías como puntero, osea como si la tuvieses de variable global/local, pero en tu caso creo que estás o en realidad querías enviarla como puntero en cada parametro de tus funciones. EDIT: Si podés usá la etiqueta GeSHi cuando escribás un mensaje en el foro porque el código escrito así nomás queda horrible a la vista :P B# |