Hola a tod@s, me gustaría que me ayudasen con un problema que tengo al hacer un programa usando punteros en C. El programa es el siguiente:
#include <stdio.h>
#include <stdlib.h>
struct point
{
float x,y;
};
/* Function */
void function(struct point *Tk, struct point Tz, float fi)
{
Tk-> x=Tz.x*cos(fi)-Tz.y*sin(fi);
Tk-> x=Tz.x*sin(fi)-Tz.y*cos(fi);
}
/* Call */
function(&Tk,Tz,fi);
system("PAUSE");
}
Este programa me da error en la línea de: [ function(&Tk,Tz,fi);];
me pone:
- Conflicting types for 'function'
- Syntax error before '&' token
Si me podeis ayudar, os lo agradecería muchísimo.
Gracias de antemano.
Antes que nada, utiliza las etiquetas GeSHi para postear código.
Sobre tu problema, es porque le estás pasando un puntero doble al invocar la función.
Tu variable "Tk" es del tipo (struct point*), por ende, ya es del tipo especificado en la función. No debes colocar el ampersand "&" cuando llamas a la función.
Simplemente:
function(Tk,Tz,fi);
Hola! q raro yo no veo ningun error, podrias subir el codigo completo o la parte q declaras a Tz y Tk
Saludos
Se me paso Ferno, gracias.
Con respecto a quitar el ampersand '&', aunque lo quite sigue el mismo error, y además me pone:
- [WARNING] parameter names [without types] in function declaration.
Respondiendo tu pregunta durasno, el código está completo.
Muchas gracias por responder.
¿Es el code completo?
¿Y el main?
Todo programa en C debe comenzar y terminar en la función main!
int main (int argc, char* argv[])
{
/*Código de tu programa*/
}
La llamada a tu función "function" debe darse dentro del main!
(La declaración del struct (tipos) y la implementación de la función no).
EDIT: Agrego, las variables que vayas a utilizar en la llamada a la función también debes declararlas en algún lado, y en este caso, debe ser en el main.
Yo solo veo esto y no me parece todo el codigo
#include <stdio.h>
#include <stdlib.h>
struct point
{
float x,y;
};
/* Function */
void function(struct point *Tk, struct point Tz, float fi)
{
Tk-> x=Tz.x*cos(fi)-Tz.y*sin(fi);
Tk-> x=Tz.x*sin(fi)-Tz.y*cos(fi);
}
/* Call */
function(&Tk,Tz,fi);
system("PAUSE");
}
Gracias durasno por responder,
El problema es que acabo de empezar con punteros, y ese es el código completo que nos dejó el profesor para que lo escribiésemos en el programa. Y no tengo ni idea. Es mi primera clase. Si puedieses decirme como sería la forma correcta, te lo agradecería.
Muchas gracias.
Ah ok! ahora ya entendi :)... Completando mas o menos seria asi:
#include <stdio.h>
#include <stdlib.h>
struct point
{
float x,y;
};
/* Function */
void function(struct point *Tk, struct point Tz, float fi)
{
Tk-> x=Tz.x*cos(fi)-Tz.y*sin(fi);
Tk-> y=Tz.x*sin(fi)-Tz.y*cos(fi);
}
int main()
{
struct point Tk;
struct point Tz;
float fi;
/*-----------------
aca pedis los datos para Tz
........................*/
function(&Tk,Tz,fi);/* call */
system("PAUSE");
return 0;
}
en lugar de system + "pause" podés usar
printf("Presione ENTER para continuar..\n");
while (getchar() != '\n');
así no usás system