| Ver tema anterior :: Ver siguiente tema |
| Autor |
Mensaje |
lnxmen User destacando


Registrado: 10 Ene 2007
Mensajes: 287
Ubicación: Alcalá de Henares, Madrid, España
|
Publicado: Mar Dic 02, 2008 8:52 pm Título del mensaje: Error compilando en C/C++ ¿Me podriais ayudar? |
|
|
Buenas estoy realizando un ejercicio para clase.
Es simplemente realizar el intercambio de valores entre 2 variables utilizando una funcion.
| Código: |
#include <stdio.h>
//predefinicion de funciones
int inter(int pa, int pb);
//Funcion main
main()
{
//declaramos las variables y los punteros a las variables
int a,b;
int *pa,*pb;
char retornocarro;
printf("\n Introduzca valor 1:\n");
scanf("%d",&a);
scanf("%c",&retornocarro);
printf("\n Introduzca valor 2:\n");
scanf("%d",&b);
scanf("%c",&retornocarro);
pa=&a;
pb=&b;
//Mostramos el valor de las variables llamando a la funcion inter
printf("\n El intercambio de A a B es:\n",inter(int pa,int pb));
}
//Funcion inter,intercambiara los valores de las variables
int inter(int pa, int pb)
{
//declaramos variable de intermedia
int c;
c=pa;
pa=pb;
pb=c;
return 0;
}
|
Me sale un error muy raro
syntax error : missing ')' before type 'int'
error C2660: 'inter' : function does not take 0 parameters
que parentesis le falta?
como que la funcion no podra tomar 0 parametros?
El error le suelta en esta linea
| Código: |
printf("\n El intercambio de A a B es:\n",inter(int pa,int pb));
|
Alguien me podria decir donde me falla o porque me sale ese error?
Muchas gracias anticipadas _________________ Quis custodiet ipsos custodes? |
|
| Volver arriba |
|
 |
JoHnRiPeR Conociendo Foroz

Registrado: 15 Ago 2008
Mensajes: 13
|
Publicado: Mie Dic 03, 2008 12:08 am Título del mensaje: |
|
|
printf("\n El intercambio de A a B es:\n",inter(*pa,*pb));
De esta forma tiene que compilar, pero no creo que funcione como tu quieres ya que al salir de la función inter todos los cambios hechos en pa y pb no se verán reflejados porque estas pasando los parámetros por valor y no por referencia |
|
| Volver arriba |
|
 |
noloweper Conociendo Foroz

Registrado: 24 Jun 2008
Mensajes: 22
|
Publicado: Jue Dic 04, 2008 2:07 pm Título del mensaje: |
|
|
Buenas creo que tu error está en que t declaras la función intercambiar "int inter(int pa, int pb){" y le das que devuelve int, cuando en realidad no devuelves nada, ya que tienes el return 0.
Tu en una funcion mediante return solo puedes devolver un valor, ahí entonces tienes un problema que se resuelve poniendo tus parámetros de entrada "pa" y "pb" como parámetros de entrada y salida, de esta forma estos valores saldrán del modulo ya modificados, esto se hace de la siguiente forma:
void inter(int &pa, int &pb)
{
es decir para indicar que el valor es de entrada y salida se pone & y como no devuelves nada debes poner void en la función, creo que en c se indica con los & yo uso c++ y si funciona, de todas maneras ese es un fallo no lo he podido probar el programa que esty ahora liado a ver si lo puedo probar luego y veo si funciona, pero de todas maneras lo que yo te he dicho está bien, venga un saludo y suerte! _________________
|
|
| Volver arriba |
|
 |
lnxmen User destacando


Registrado: 10 Ene 2007
Mensajes: 287
Ubicación: Alcalá de Henares, Madrid, España
|
Publicado: Jue Dic 04, 2008 7:39 pm Título del mensaje: |
|
|
Gracias a los 2 por vuestras respuestas.
Era como decia noloweper con los punteros para poder devolver el valor _________________ Quis custodiet ipsos custodes? |
|
| Volver arriba |
|
 |
|
|
|