• Domingo 28 de Abril de 2024, 16:54

Autor Tema:  socorro principiante!!! dificultad con funcion  (Leído 1398 veces)

makum

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
socorro principiante!!! dificultad con funcion
« en: Domingo 13 de Junio de 2010, 19:09 »
0
estoy con un proyecto en el que me juego el año y se me da realmente mal...
tengo que crear ficheros con datos, crear una ruta, que la crea pero a la hora de comparar si el codigo de la ruta existe o no...no funciona. En fin, lo dejo aqui:
gracias de antemano a cualquier ayuda :)

la estructura es la siguiente:

struct rutas
 {
   int codruta;
   char cadorigen[20];
   char caddestino[20];
   float distancia;
};
  typedef struct rutas trut;

y la funcion: no se como ponerlo y ya estoy quemadisima...


void datos_ruta ()  
{
    int cod;
    int condicion=0;
    trut rutas;
    FILE *pfich;
   
  printf ("Introduzca el codigo de la ruta:");
  scanf ("%d",&cod);
  pfich=fopen("c:\rutas.dat","ab+");
      if (pfich == NULL)
      {
        printf ("Se ha producido un error. Imposible abrir el fichero.");
        exit(1);
      }
      else
      {
          fread(&rutas,sizeof(trut),1,pfich);
          while (condicion == 0)
          {
                     if (cod == rutas.codruta)
                       {
               
                       printf ("El código introducido ya existe.");                                      
           
                       printf ("Por favor, introduzca un código diferente:");
                       scanf ("%d",&cod);
                       fseek(pfich,0,0);
                       condicion=0;
           
                      }
                    else
                     {
               
                      printf ("INTRODUZCA:nn");
                      printf ("*Origen del viaje:");
                      scanf ("%s",&rutas.cadorigen);
                      printf ("*Destino del viaje:");
                      scanf ("%s",&rutas.caddestino);
                      printf ("*Distancia a recorrer:");
                      scanf ("%f",&rutas.distancia);
                      condicion=1;  
                      }
             
                  system ("cls");
                 printf ("*La ruta ha sido creada correctamente*");
             
                 getch ();
             }  
           fwrite (&rutas, sizeof(trut),1,pfich);
         }
  fclose(pfich);
}

lilezek

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: socorro principiante!!! dificultad con funcion
« Respuesta #1 en: Domingo 13 de Junio de 2010, 22:50 »
0
Principiante, ponle más empeño la próxima vez xD. Yo tengo 17 años y todo esto lo he aprendido teniendo paciencia, revisando muchos links y leyendo muchos documentos. Y después del consejo, la pregunta:

No entiendo que intentas hacer. Pero creo que esto es lo que necesitas:

Código: C++
  1. #include <Windows.h>
  2. #include <iostream>
  3. #include <conio.h>
  4.  
  5. typedef struct rutas
  6.  {
  7.    int codruta;
  8.    char cadorigen[20];
  9.    char caddestino[20];
  10.    float distancia;
  11. } trut;
  12.  
  13. void datos_ruta()  
  14. {
  15.     int cod=0;
  16.     trut rutas;
  17.     FILE *pfich;
  18.  
  19.     printf ("Introduzca el codigo de la ruta:");
  20.     scanf ("%i",&cod);
  21.     pfich=fopen("c:\rutas.dat","r+");
  22.     if (pfich == NULL)
  23.     {
  24.         printf ("Se ha producido un error. Imposible abrir el fichero.");
  25.         exit(1);
  26.     }
  27.     else
  28.     {
  29.         fread(&rutas,sizeof(trut),1,pfich);
  30.         while (cod == rutas.codruta)
  31.         {
  32.             printf ("El código introducido ya existe.");                                      
  33.             printf ("Por favor, introduzca un código diferente:");
  34.             scanf ("%d",&cod);
  35.             fseek(pfich,0,0);
  36.         }
  37.         printf ("INTRODUZCA:nn");
  38.         printf ("*Origen del viaje:");
  39.         scanf ("%s",&rutas.cadorigen);
  40.         printf ("*Destino del viaje:");
  41.         scanf ("%s",&rutas.caddestino);
  42.         printf ("*Distancia a recorrer:");
  43.         scanf ("%f",&rutas.distancia);  
  44.         system ("cls");
  45.         printf ("*La ruta ha sido creada correctamente*");
  46.         _getch();
  47.         rutas.codruta = cod;
  48.         fwrite (&rutas, sizeof(trut),1,pfich);
  49.     }
  50.     fclose(pfich);
  51. }
  52.  
  53. int main (int argc, char ** argv)
  54. {
  55.     datos_ruta();
  56.     return 0;
  57. }
  58.  

Si es esto, déjame un agradecimiento o algo xD. Saludos.

makum

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: socorro principiante!!! dificultad con funcion
« Respuesta #2 en: Domingo 13 de Junio de 2010, 23:28 »
0
Yo es que esto...obviamente no es lo mio pero tengo que hacerlo este año.

librerias puse
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

las que tu has puesto no se para que sirven la verdad...no las he visto aun
gracias por responder  ^_^

lilezek

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: socorro principiante!!! dificultad con funcion
« Respuesta #3 en: Lunes 14 de Junio de 2010, 15:47 »
0
Pues creo que windows.h tiene definido FILE y sus funciones, iostream todas las funciones de input-output streamed, excepto _getch() que viene definido en conio.h

De todos modos si lo que vas a intentar es a manejar datos, mírate la API de SqlLite, conseguirás algo mucho mejor para tu proyecto (hazlo sólo si tienes tiempo antes de acabar el curso)

makum

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: socorro principiante!!! dificultad con funcion
« Respuesta #4 en: Lunes 14 de Junio de 2010, 19:31 »
0
pues lo hare, muchas gracias por la info!!!