elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Error en cabecera de funciones?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Error en cabecera de funciones?  (Leído 4,825 veces)
Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
¿Error en cabecera de funciones?
« en: 17 Diciembre 2011, 23:58 pm »

Codeblocks me tira un error en la línea 3 tal que:

Citar
error:expected ';', ',' or ')' before '&' token

Código
  1. /*Código para intercambiar dos números*/
  2.  
  3. #include <stdio.h>
  4.  
  5. void Intercambiar(int &x, int &y);       //Linea 3
  6.  
  7. int main()
  8. {
  9.  
  10. int num1, num2;
  11.  
  12. printf("Dame un numero: ");
  13. scanf("%d", &num1);
  14.  
  15. printf("Dame otro numero: ");
  16. scanf("%d", &num2);
  17.  
  18. Intercambiar (num1, num2);
  19.  
  20. printf("Los he intercambiado: %d %d", num1, num2);
  21.  
  22. return 0;
  23.  
  24. }
  25.  
  26. void Intercambiar(int &x, int &y)
  27. {
  28.  
  29. int aux;
  30.  
  31. aux=x;
  32. x=y;
  33. y=aux;
  34.  
  35. }
  36.  

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 Desconectado

Mensajes: 35



Ver Perfil
Re: ¿Error en cabecera de funciones?
« Respuesta #1 en: 18 Diciembre 2011, 00:08 am »

Debes aprende a usar bien punteros en C.

Código
  1. /*Codigo para intercambiar dos números*/
  2.  
  3. #include <stdio.h>
  4.  
  5. void Intercambiar(int *x, int *y);
  6. //void Intercambiar(int *, int *);       //tambien puede ser de esta forma
  7.  
  8. int main ( )
  9. {
  10.    int num1, num2;
  11.  
  12.    printf ( "Dame un numero: " );
  13.    scanf ( "%d", &num1 );
  14.  
  15.    printf ( "Dame otro numero: " );
  16.    scanf ( "%d", &num2 );
  17.  
  18.    Intercambiar (&num1, &num2);
  19.  
  20.    printf ( "Los he intercambiado: %d %d", num1, num2 );
  21.  
  22.    setbuf ( stdin, NULL );
  23.    getchar ( );
  24.  
  25.    return 0;
  26.  
  27. }
  28.  
  29. void Intercambiar(int *x, int *y)
  30. {
  31.    int aux;
  32.  
  33.    aux = *x;
  34.    *x = *y;
  35.    *y = aux;
  36. }
  37.  
  38.  

Lo que tu muestras es de C++


« Última modificación: 18 Diciembre 2011, 00:14 am por bdoX » En línea

Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
Re: ¿Error en cabecera de funciones?
« Respuesta #2 en: 18 Diciembre 2011, 00:16 am »

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 Desconectado

Mensajes: 35



Ver Perfil
Re: ¿Error en cabecera de funciones?
« Respuesta #3 en: 18 Diciembre 2011, 00:36 am »

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 Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
Re: ¿Error en cabecera de funciones?
« Respuesta #4 en: 18 Diciembre 2011, 01:45 am »

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?

Código
  1. #include <stdio.h>
  2.  
  3. bool EsPrimo(char letra);
  4.  
  5. int main()
  6.  
  7. {
  8.    int numero;
  9.  
  10.    printf("Dame un numero: ");
  11.    scanf("%d", &numero);
  12.  
  13.    if (EsPrimo(numero)==true)
  14.        printf("Es un numero primo");
  15.  
  16.    else
  17.        printf("No es un numero primo");
  18.  
  19.    return 0;
  20.  
  21. }
  22.  
  23. bool EsPrimo(char letra)
  24. {
  25.    int numero, i, divisor;
  26.    bool v=true;
  27.    i=numero-1;
  28.  
  29.    do
  30.    {
  31.        divisor=numero%i;
  32.        i--;
  33.    }
  34.    while(i>1 || divisor==0);
  35.  
  36.    if (divisor==0)
  37.        bool v=false;
  38.  
  39.    return v;
  40.  
  41. }
  42.  
  43.  
  44.  

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 Desconectado

Mensajes: 375


Ver Perfil
Re: ¿Error en cabecera de funciones?
« Respuesta #5 en: 18 Diciembre 2011, 02:05 am »

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 Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
Re: ¿Error en cabecera de funciones?
« Respuesta #6 en: 18 Diciembre 2011, 02:12 am »

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 Desconectado

Mensajes: 375


Ver Perfil
Re: ¿Error en cabecera de funciones?
« Respuesta #7 en: 18 Diciembre 2011, 02:20 am »

La variable "letra" no está definida en ningún lado, y la estás utilizando!
En línea

Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
Re: ¿Error en cabecera de funciones?
« Respuesta #8 en: 18 Diciembre 2011, 12:18 pm »

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 Desconectado

Mensajes: 375


Ver Perfil
Re: ¿Error en cabecera de funciones?
« Respuesta #9 en: 18 Diciembre 2011, 15:28 pm »

¿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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con la cabecera GOP
Multimedia
Aberroncho 0 1,540 Último mensaje 7 Septiembre 2005, 11:48 am
por Aberroncho
Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
Programación C/C++
jravelar 3 2,884 Último mensaje 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 23,572 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
error al leer cabecera http ????
Java
imaginawireless 8 4,292 Último mensaje 9 Abril 2012, 12:46 pm
por Proteus1989
ERROR ARREGLOS, FUNCIONES Y Makefile.win
Programación C/C++
alfo1294 1 2,103 Último mensaje 27 Julio 2012, 05:21 am
por avesudra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines