Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problem con Strings

Estas en el tema de Problem con Strings en el foro de C/C++ en Foros del Web. Hola, me llamo Juan y tengo un problema con una parte del codigo del programa que debo hacer para un trabajo de programacion de mi ...
  #1 (permalink)  
Antiguo 18/07/2011, 10:29
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Problem con Strings

Hola, me llamo Juan y tengo un problema con una parte del codigo del programa que debo hacer para un trabajo de programacion de mi universidad que consiste en una terminal de omnibus, el mismo consiste en que cuando ingreso el dato fecha y luego ingreso el dato hora en una cola dinamica al imprimir los datos de la fecha me salen pegados con los de la hora pero los datos de la hora salen bien. Intente con fflush pero no me resulto.
No entiendo porque pasa eso, este codigo es una porcion del programa que funciona pero tiene ese problemita, busque mucho y no puedo descubrir en que estoy fallando.

Para mostrarles lo que pasa:
Ingreso la fecha y hora de arribo, luego fecha y hora de partida, pero al imprimir ocurre esto


Codigo:
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include <ctype.h>
  6. char op;
  7.    
  8.     struct tipo_nodo  //Cola Dinamica
  9.     {
  10.    
  11.        char fechaarribo[10];
  12.        char horaarribo[10];
  13.  
  14.        char fechapartida[10];
  15.        char horapartida[10];
  16.        struct tipo_nodo*puntero;
  17.     };
  18.     typedef struct tipo_nodo nodo;
  19.     typedef struct tipo_nodo*ps;
  20.     ps fon,fre,x,aux;
  21.  
  22.  
  23.  
  24. //GESTION DE ARRIBOS Y PARTIDAS
  25. //Validar Datos Recibir Coche (Validacion simple por ahora)
  26. int validarcoche(char feca[10],char hora[10],char fecp[10],char horp[10])
  27. {
  28.     int b=1;
  29.         if(strlen(feca)==10&&strlen(feca)!=0&&strlen(hora)<=10&&strlen(hora)!=0&&strlen(fecp)==10&&strlen(fecp)!=0&&strlen(horp)<=10&&strlen(horp)!=0)
  30.         {
  31.             b=0;
  32.         }  
  33. return b;
  34. }  
  35.  
  36. //Recibir Coche (Cola Dinamica)
  37. void recibircoche()
  38. {
  39.     clrscr();
  40.     char op;
  41.     int b=1;
  42.     char feca[10],hora[10],fecp[10],horp[10];
  43.  
  44.     printf("Ingrese todos los datos del coche\n");
  45.    
  46.     printf("Ingrese la Fecha de Arribo en el formato AAAA/MM/DD:\n");
  47.     gets(feca);
  48.     fflush(stdin);
  49.     printf("Ingrese la Hora de Arribo en el formato HH:MM:SS:\n");
  50.     gets(hora);
  51.     fflush(stdin);
  52.  
  53.     printf("Ingrese la Fecha de Partida en el formato AAAA/MM/DD:\n");
  54.     gets(fecp);
  55.     fflush(stdin);
  56.     printf("Ingrese la Hora de Partida en el formato HH:MM:SS:\n");
  57.     gets(horp);
  58.     fflush(stdin);
  59.     b=validarcoche(feca,hora,fecp,horp);
  60.    
  61.     if(b==0)  //Si estan bien ingresados los datos los carga en la cola dinamica
  62.     {
  63.         x=(ps) malloc (sizeof(nodo));
  64.    
  65.         strcpy(x->fechaarribo,feca);
  66.         strcpy(x->horaarribo,hora);
  67.         strcpy(x->fechapartida,fecp);
  68.         strcpy(x->horapartida,horp);
  69.         clrscr();
  70.  
  71.         x->puntero=NULL;
  72.         if(fon==NULL)
  73.         {
  74.             fre=x;
  75.             fon=x;
  76.         }
  77.         else
  78.         {
  79.             fon->puntero=x;
  80.             fon=x;
  81.         }
  82.         printf("Los Datos fueron guardados correctamente.\n\n");
  83.     }
  84.     else
  85.     {
  86.         printf("Datos mal ingresados.\n\n");
  87.     }
  88.    
  89.    
  90.    
  91.     printf("\n\nPresione X para volver al Menu Principal.");
  92.     do
  93.     {
  94.         gotoxy(1,1);
  95.         op=toupper(getch());
  96.     }
  97.     while(op!='X');
  98. }
  99.  
  100. //IMPRESION DE PRUEBA
  101. void impprueba()
  102. {
  103.     clrscr();
  104.     char op;
  105.     while(fre!=NULL)
  106.     {
  107.         printf("Fecha de Arribo en el formato AAAA/MM/DD: %s\n",fre->fechaarribo);
  108.         printf("Hora de Arribo en el formato HH:MM:SS: %s\n",fre->horaarribo);
  109.         printf("Fecha de Partida en el formato AAAA/MM/DD: %s\n",fre->fechapartida);
  110.         printf("Hora de Partida en el formato HH:MM:SS: %s\n",fre->horapartida);
  111.    
  112.         aux=fre;
  113.         fre=fre->puntero;
  114.         free(aux);
  115.         if(fre==NULL)
  116.         {
  117.             fon=fre;
  118.         }
  119.     }
  120.            
  121.     printf("\n\nPresione X para volver al Menu Principal.");
  122.     do
  123.     {
  124.         gotoxy(1,1);
  125.         op=toupper(getch());
  126.     }
  127.     while(op!='X');
  128. }
  129.  
  130.  
  131. //PROGRAMA PRINCIPAL - Menu Principal
  132. int main()
  133. {
  134.     fon=NULL; fre=NULL;
  135.     do
  136.     {
  137.       printf  ("********************************************************************************");
  138.       printf  ("*                             MENU PRINCIPAL                                   *");
  139.       printf  ("*            **********************************************                    *");
  140.       printf  ("*                                                                              *");  
  141.       printf  ("*                                                                              *");
  142.       printf  ("*                                                                              *");
  143.       printf  ("*                                                                              *");
  144.       printf  ("*                                                                              *");  
  145.       printf  ("*             1.* ARRIBOS Y PARTIDAS                                           *");
  146.       printf  ("*                 A.*Recibir Coche                                             *");
  147.       printf  ("*                 B.*Impresion de prueba                                       *");
  148.       printf  ("*                                                                              *");
  149.       printf  ("*                                                                              *");  
  150.       printf  ("*                                                                              *");
  151.       printf  ("*                                                                              *");
  152.       printf  ("*                                                                              *");
  153.       printf  ("*                                                                              *");
  154.       printf  ("*                                                                              *");  
  155.       printf  ("*                                                                              *");
  156.       printf  ("*                                                                              *");
  157.       printf  ("*                                                                              *");
  158.       printf  ("*                                                                              *");
  159.       printf  ("*                                                                              *");
  160.       printf  ("*             X.* SALIR                                                        *");  
  161.       printf  ("********************************************************************************");
  162.       gotoxy(1,1);
  163.      
  164.     op=toupper(getch());
  165.     switch (op)
  166.     {
  167.         case 'A':
  168.             recibircoche();
  169.             clrscr();
  170.         break;
  171.  
  172.         case 'B':
  173.             impprueba();
  174.             clrscr();
  175.         break;
  176. }
  177. }
  178. while (op!='X');
  179. clrscr();
  180. return 0;
  181. }

Lo hice en devc++, lo probe en borland tambien y me pasa lo mismo.
Parece simple de arreglar pero no puedo yo, gracias y saludos.
  #2 (permalink)  
Antiguo 18/07/2011, 10:33
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Problem con Strings

Sera que los arreglos no tienen espacio suficiente para guardar el fin de string al final?
Se sabria agregando 1 al tamaño:

char fechaarribo[10]; -> char fechaarribo[11];
  #3 (permalink)  
Antiguo 18/07/2011, 10:44
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problem con Strings

Al parecer esa es la solucion, ya probe y funciona.. te agradezco mucho la verdad.
  #4 (permalink)  
Antiguo 19/07/2011, 11:52
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problem con Strings

Hola, gracias por la solucion anterior, no queria abrir otro tema por otra duda...
Lo que me ocurre ahora es que necesito ingresar un numero largo entre 1000000000 y 9999999999 y con este codigo:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. main()
  6. {
  7. long int num;
  8.  
  9. printf("Ingrese un numero\n");
  10. scanf("%d",&num);
  11. printf("Tu numero es\n");
  12. printf("%d",num);
  13.  
  14. }

Si ingreso el 9999999999 al imprimirlo sale otro numero raro, creo que es porque sobrepasa el limite del long int pero no se como declararlo entonces para que me pueda imprimir ese numero tal cual lo ingreso.

Gracias y perdon si debia armar otro tema para esta duda.
  #5 (permalink)  
Antiguo 19/07/2011, 22:51
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Problem con Strings

No uses %d, sino %l
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #6 (permalink)  
Antiguo 20/07/2011, 07:04
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problem con Strings

Gracias por la respuesta de nuevo, pero si pongo %l no me da el numero, no imprime nada directamente :S
  #7 (permalink)  
Antiguo 20/07/2011, 16:04
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Problem con Strings

Guiate por esto:

Código C:
Ver original
  1. printf ("Decimals: %d %ld\n", 1977, 650000L);
La "L" al final es de Long.

Luego revisa esta página para que veas los modificadores de formato que puedas utilizar.

http://www.cplusplus.com/reference/c...cstdio/printf/
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #8 (permalink)  
Antiguo 26/07/2011, 07:22
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problem con Strings

Gracias por las respuestas, lo pude solucionar!

Etiquetas: c++, cola, dinamica, strings
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.