[ Foro de C ]
hola! he realizado el mismo ejercicio pero uno esta mediante paso de parametro por valor y otro mediante paso de parametro por referencia, mi duda es si estan bien echos ya que no me compilan niguno, les adjunto tambien los fallos que me da el compilador para que asi les sea mas facil ayudarme, muchas gracias!
es un ejercicio "sencillo" en el cual el programa tiene que intercambiar el valor x por el valor y
paso de parametro por valor:
#include<stdio.h>
void intercambio(int,int);
void main(void)
{
int x=5,y=10;
intercambio(x,y);
printf("\n x=%d,y=%d",x,y);
}
void intercambio(int a,int b);
{
int aux;
aux=a;
a=b;
b=aux;
}
los fallos que me da el compilador son los siguientes:
C:\Users\Desktop\SinNombre3.c In function `main':
10 C:\Users\Desktop\SinNombre3.c syntax error before '{' token
12 C:\Users\Desktop\SinNombre3.c `a' undeclared here (not in a function)
12 C:\Users\Desktop\SinNombre3.c [Warning] data definition has no type or storage class
13 C:\Users\Desktop\SinNombre3.c `b' undeclared here (not in a function)
13 C:\Users\Desktop\SinNombre3.c [Warning] data definition has no type or storage class
14 C:\Users\Desktop\SinNombre3.c initializer element is not constant
14 C:\Users\Desktop\SinNombre3.c [Warning] data definition has no type or storage class
ahora el ejercicio de paso de parametro por referencia:
#include<stdio.h>
void intercambio(int*,int*);
void main(void)
{
int x=5,y=10;
intercambio(&x,&y);
printf("\n x=%d,y=%d",x,y);
}
void intercambio(int *a,int *b);
{
int aux;
aux=*a;
*a=*b;
*b=aux;
}
los errores que me ha dado el compilador son similares a los que cite antes en el ejercicio de paso de parametro por valor.
Los mensajes de error son tus amigos. ;-)
Si te dice que en la línea 10 hay un error y que no esperaba una llave, mira qué hay justo antes de la llave y verás que sobra un punto y coma.
El resto de errores vienen en cascada provocados por eso.
Por cierto, debes estar usando un libro muy antiguo. Echa un vistazo a un curso más reciente y/o usa un compilador más moderno, porque desde hace años deberías tener "avisos" de compilación con esos "void main(void)". Lo recomendable desde hace tiempo es que "main" sea un "int" y el programa devuelva un código 0 ("return 0;") si todo ha ido bien. De igual modo, el indicar "void" entre los paréntesis de una función que no tiene parámetros es innecesario (y obsoleto).
muchisimas gracias de nuevo, el problema respecto a que los apuntes son muy viejos es porque estoy en primero de ingenieria y me ha quedado programacion y estudio con los apuntes que me han dado en clase y como es tan viejo me cuesta mucho encontrar ejercicios ya resueltos para yo volver a hacerlos y comprenderlos. respecto al programa lo he vuelto a hacer y ya me sale! muchisimas gracias!:D
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)