Autor
|
Tema: ¿Error en cabecera de funciones? (Leído 5,371 veces)
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
Codeblocks me tira un error en la línea 3 tal que: error:expected ';', ',' or ')' before '&' token /*Código para intercambiar dos números*/ #include <stdio.h> void Intercambiar(int &x, int &y); //Linea 3 int main() { int num1, num2; Intercambiar (num1, num2); printf("Los he intercambiado: %d %d", num1 , num2 ); return 0; } void Intercambiar(int &x, int &y) { int aux; aux=x; x=y; y=aux; }
No entiendo para nada porqué me da ese error. Si alguien me ayuda se lo agradecería. Un saludo.
|
|
« Última modificación: 18 Diciembre 2011, 00:05 am por CarLiLlooo »
|
En línea
|
Más que buenos principios prefiero mejores finales.
|
|
|
bdoX
Desconectado
Mensajes: 35
|
Debes aprende a usar bien punteros en C. /*Codigo para intercambiar dos números*/ #include <stdio.h> void Intercambiar(int *x, int *y); //void Intercambiar(int *, int *); //tambien puede ser de esta forma int main ( ) { int num1, num2; printf ( "Dame un numero: " ); printf ( "Dame otro numero: " ); Intercambiar (&num1, &num2); printf ( "Los he intercambiado: %d %d", num1 , num2 ); return 0; } void Intercambiar(int *x, int *y) { int aux; aux = *x; *x = *y; *y = aux; }
Lo que tu muestras es de C++
|
|
« Última modificación: 18 Diciembre 2011, 00:14 am por bdoX »
|
En línea
|
|
|
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
Verdaderamente sigo sin saber porqué, pero ahora funciona.
Mi profesora usa '&' antes de los argumentos que van a volver por referencia, igual que yo en las prácticas que hacemos en la universidad (con Codeblocks también) y sí funciona.
En los apuntes dice que usemos '&'. ¿Cómo es que funciona con '*' y no con '&'?
Saludos y gracias.
|
|
|
En línea
|
Más que buenos principios prefiero mejores finales.
|
|
|
bdoX
Desconectado
Mensajes: 35
|
C no admite void Intercambiar(int &x, int &y);, C++ si. A eso se le llama referencia, y de esta forma void Intercambiar(int *x, int *y); se le llama desreferencia. Fijate que el archivo sea guardado con *.cpp cuando lo hagas de esta forma void Intercambiar(int &x, int &y);.
Yo uso Dev-c++, si guardo tu programa *.c (Es de C) y compilo tu programa me da ese error, y si lo guardo con *.cpp (Es de c++) no me da error. No conozco todos los IDE's pero como todos saben, Dev-c++ puedo compilar codigo de C y de C++, pero tienes que tener cuidado con la extensión con la que guardas
PD: C++ también admite con *
La idea de la programación es que sea portable tu codigo, y que pueda compilar con cualquier IDE sin ningun problema (No quiero hablar de las plataformas). Si tu compilas un codigo en un IDE y ese IDE te admite cosas como por ejemplo que puedas compilar codigo C con extensión *.cpp despues vas a tener problemas cuando uses otro IDE. No puedes mezclar cosas, o programas en C, o en c++, no en ambos.
Saludos
|
|
« Última modificación: 18 Diciembre 2011, 00:50 am por bdoX »
|
En línea
|
|
|
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
O sea que es porque es C y no C++... En la uni igual se guarda automáticamente en .cpp ¿Sabes porque me arroja este código error en la misma zona? #include <stdio.h> bool EsPrimo(char letra); int main() { int numero; if (EsPrimo(numero)==true) else printf("No es un numero primo"); return 0; } bool EsPrimo(char letra) { int numero, i, divisor; bool v=true; i=numero-1; do { divisor=numero%i; i--; } while(i>1 || divisor==0); if (divisor==0) bool v=false; return v; }
Saludos y de nuevo gracias
|
|
« Última modificación: 18 Diciembre 2011, 12:16 pm por CarLiLlooo »
|
En línea
|
Más que buenos principios prefiero mejores finales.
|
|
|
Ferno
Desconectado
Mensajes: 375
|
Por lo mismo. El tipo de dato "bool" es específico de C++ y no es un tipo de dato del lenguaje C.
|
|
|
En línea
|
|
|
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
Me lo suponía, pero es que al intentar cambiar la extensión del archivo a .cpp se me ejecuta pero dice que el programa debe cerrarse inmediatamente y no funciona...
P.D.: He cambiado la librería a cstdio al pasarlo a C++
|
|
|
En línea
|
Más que buenos principios prefiero mejores finales.
|
|
|
Ferno
Desconectado
Mensajes: 375
|
La variable "letra" no está definida en ningún lado, y la estás utilizando!
|
|
|
En línea
|
|
|
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
Perdón, ya lo cambié. Era 'numero' sobre lo que quiero que actúe la función. Aún así me sigue saliendo el mismo problema... Se ejecuta, me pide el número, y dice que debe cerrarse.
|
|
|
En línea
|
Más que buenos principios prefiero mejores finales.
|
|
|
Ferno
Desconectado
Mensajes: 375
|
¿En la función EsPrimo también lo cambiaste? Fijate que le estás pasando algo por parámetro y no lo estás usando, además, declaraste otra variable "número" en dicha función, la cual NO estás inicializando y la estás utilizando para inicializar la variable "i". Si esa variable número es la que pediste en la función main, no debes declararla nuevamente en la función EsPrimo, y debes pasarlo como parámetro.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problemas con la cabecera GOP
Multimedia
|
Aberroncho
|
0
|
1,697
|
7 Septiembre 2005, 11:48 am
por Aberroncho
|
|
|
Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
Programación C/C++
|
jravelar
|
3
|
3,145
|
5 Junio 2010, 22:44 pm
por do-while
|
|
|
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
|
lipman
|
9
|
24,058
|
19 Mayo 2011, 23:39 pm
por Littlehorse
|
|
|
error al leer cabecera http ????
Java
|
imaginawireless
|
8
|
4,577
|
9 Abril 2012, 12:46 pm
por Proteus1989
|
|
|
ERROR ARREGLOS, FUNCIONES Y Makefile.win
Programación C/C++
|
alfo1294
|
1
|
2,304
|
27 Julio 2012, 05:21 am
por avesudra
|
|