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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion impresa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion impresa  (Leído 2,780 veces)
iAmChapin_

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Funcion impresa
« en: 31 Agosto 2015, 02:27 am »

Buenas! Vengo a molestar nuevamente. Tengo este código y funciona a la perfección, pero me di cuenta de un error en la funcion, al principio era tipo int y returnaba el valor de la variable a, pero al hacer eso me imprimia el numero ingresado, decidi convertirlo a tipo void que no devuelve nada y me salta un error molesto en la linea 82: Illegal structure operation. Pensé que era porque estaba todo junto pero no, aun separandolo por lineas diferentes, siempre me indica el error en el esas lineas, y aun cambiando los ; por << siempre salta uno que otro error. Alguien podria darme una solucion sin que la funcion no devuelva nada? Les dejo el codigo para que puedan ver que pueden cambiar

Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4.  
  5. //FUNCION TRANSFORMAR FECHA
  6. void fechaTransformada(int a){
  7.  
  8. //DETERMINAMOS EL MES INGRESADO CON SWITCH
  9.  switch(a){
  10.  
  11.      case 1:
  12.      textcolor(15); cprintf("Enero");
  13.      break;
  14.  
  15.      case 2:
  16.      textcolor(15); cprintf("Febrero");
  17.      break;
  18.  
  19.      case 3:
  20.      textcolor(15); cprintf("Marzo");
  21.      break;
  22.  
  23.      case 4:
  24.      textcolor(15); cprintf("Abril");
  25.      break;
  26.  
  27.      case 5:
  28.      textcolor(15); cprintf("Mayo");
  29.      break;
  30.  
  31.      case 6:
  32.      textcolor(15); cprintf("Junio");
  33.      break;
  34.  
  35.      case 7:
  36.      textcolor(15); cprintf("Julio");
  37.      break;
  38.  
  39.      case 8:
  40.      textcolor(15); cprintf("Agosto");
  41.      break;
  42.  
  43.      case 9:
  44.      textcolor(15); cprintf("Septiembre");
  45.      break;
  46.  
  47.      case 10:
  48.      textcolor(15); cprintf("Octubre");
  49.      break;
  50.  
  51.      case 11:
  52.      textcolor(15); cprintf("Noviembre");
  53.      break;
  54.  
  55.      case 12:
  56.      textcolor(15); cprintf("Diciembre");
  57.      break;
  58.  
  59.  }
  60.  
  61. }
  62.  
  63. int dia;
  64. int mes;
  65. int cuatro;
  66.  
  67. void main(){
  68.  
  69.   gotoxy(6,4); cprintf("Transformo tu fecha de este tipo: 4/07/2011 asi: 4 de Julio del 2011");
  70.   textcolor(15);
  71.   gotoxy(29,5); cprintf("Ingresa una fecha:");
  72.   textcolor(15);
  73.   gotoxy(33,7); cprintf("/");
  74.   textcolor(15);
  75.   gotoxy(38,7); cprintf("/");
  76.   gotoxy(30,7); cin >> dia;
  77.   gotoxy(35,7); cin >> mes;
  78.   gotoxy(40,7); cin >> cuatro;
  79.   textcolor(15);
  80.   gotoxy(26,9); cprintf("La fecha transformada es:");
  81.   textcolor(15);
  82.   gotoxy(27,11); cout << dia; cprintf(" de "); cout << fechaTransformada(mes); cprintf (" del "); cout << cuatro;
  83.  
  84. getch();
  85.  
  86. }


« Última modificación: 1 Septiembre 2015, 00:49 am por iAmChapin_ » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Funcion impresa
« Respuesta #1 en: 31 Agosto 2015, 02:40 am »

Varias cosas.
1. No existe la lib iostream.h, es "iostream" (sin el .h) ya que las librerías estándar de C++ no acaban en .h
2. la función main debería devolver un int (que usualmente indica si el programa finalizo exitosamente o no)
3.
Código:
 cout << fechaTransformada(mes)
cout no puede imprimir por pantalla una función que no devuelve dato, justamente por eso. Si la función devuelve nada como va a imprimir algo?. En todo caso podrías llamar a la función tal cual. "fechaTranformada(mes)"
4. No tendrían que haber variables globales

Con estos cambios el código final vendría a ser algo como

Código
  1.    #include <iostream>
  2.    #include <conio.h>
  3.    #include <windows.h>
  4.  
  5.    using namespace std;
  6.  
  7.    //FUNCION TRANSFORMAR FECHA
  8.    void fechaTransformada(int a){
  9.  
  10.    //DETERMINAMOS EL MES INGRESADO CON SWITCH
  11.      switch(a){
  12.  
  13.          case 1:  textcolor(15); cprintf("Enero");
  14.          break;
  15.  
  16.          case 2:
  17.          textcolor(15); cprintf("Febrero");
  18.          break;
  19.  
  20.          case 3:
  21.          textcolor(15); cprintf("Marzo");
  22.          break;
  23.  
  24.          case 4:
  25.          textcolor(15); cprintf("Abril");
  26.          break;
  27.  
  28.          case 5:
  29.          textcolor(15); cprintf("Mayo");
  30.          break;
  31.  
  32.          case 6:
  33.          textcolor(15); cprintf("Junio");
  34.          break;
  35.  
  36.          case 7:
  37.          textcolor(15); cprintf("Julio");
  38.          break;
  39.  
  40.          case 8:
  41.          textcolor(15); cprintf("Agosto");
  42.          break;
  43.  
  44.          case 9:
  45.          textcolor(15); cprintf("Septiembre");
  46.          break;
  47.  
  48.          case 10:
  49.          textcolor(15); cprintf("Octubre");
  50.          break;
  51.  
  52.          case 11:
  53.          textcolor(15); cprintf("Noviembre");
  54.          break;
  55.  
  56.          case 12:
  57.          textcolor(15); cprintf("Diciembre");
  58.          break;
  59.  
  60.      }
  61.  
  62.    }
  63.  
  64.  
  65.    int main(){
  66.  
  67.    int dia;
  68.    int mes;
  69.    int cuatro;
  70.  
  71.       gotoxy(6,4); cprintf("Transformo tu fecha de este tipo: 4/07/2011 asi: 4 de Julio del 2011");
  72.       textcolor(15);
  73.       gotoxy(29,5); cprintf("Ingresa una fecha:");
  74.       textcolor(15);
  75.       gotoxy(33,7); cprintf("/");
  76.       textcolor(15);
  77.       gotoxy(38,7); cprintf("/");
  78.       gotoxy(30,7); cin >> dia;
  79.       gotoxy(35,7); cin >> mes;
  80.       gotoxy(40,7); cin >> cuatro;
  81.       textcolor(15);
  82.       gotoxy(26,9); cprintf("La fecha transformada es:");
  83.       textcolor(15);
  84.       gotoxy(27,11); cout << dia; cprintf(" de "); fechaTransformada(mes); cprintf (" del "); cout << cuatro;
  85.  
  86.    getch();
  87.    }



« Última modificación: 31 Agosto 2015, 02:45 am por Stakewinner00 » En línea

iAmChapin_

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Funcion impresa
« Respuesta #2 en: 31 Agosto 2015, 02:49 am »

Se me olvidó aclarar que trabajo con un compilador viejo, Borland 5.0.2 ya que de momento ese utilizo para los ejercicios de universidad, por lo que si ves cosas obsoletas no les hagas caso (void main, iostream.h). Y excelente, salí de la duda con eso que me explicaste, muchísimas gracias por la ayuda y muchas gracias por la solución amigo!  ;-) ;-) ;-)
« Última modificación: 31 Agosto 2015, 02:51 am por iAmChapin_ » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Funcion impresa
« Respuesta #3 en: 31 Agosto 2015, 21:16 pm »

Se me olvidó aclarar que trabajo con un compilador viejo, Borland 5.0.2 ya que de momento ese utilizo para los ejercicios de universidad, por lo que si ves cosas obsoletas no les hagas caso (void main, iostream.h). Y excelente, salí de la duda con eso que me explicaste, muchísimas gracias por la ayuda y muchas gracias por la solución amigo!  ;-) ;-) ;-)
No es que sean obsoletas, es que están mal.

en C antes de que se estandarizara muchos usaban void main(), pero en C++ esta especificado que la función main tiene que devolver un int. Tienes un buen post que lo explica https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines