• Sábado 18 de Mayo de 2024, 17:07

Autor Tema:  Alguien Usa El Programa Dev-cpp  (Leído 3357 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Alguien Usa El Programa Dev-cpp
« en: Martes 1 de Junio de 2004, 13:36 »
0
Esto que puse antes, ya lo tengo resuelto, muchas gracias, por la ayuda qye me habeis prestado todos.

Jevi

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
    • http://jevi.ods.org
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #1 en: Jueves 3 de Junio de 2004, 14:21 »
0
He depurado tu programa, parando la ejecución en la línia 34
Código: Text
  1. if((fp=fopen("alumnos.txt", "r"))== NULL)
  2.  
veo que como el fichero alumnos.txt no existe, te escribe el mensaje
Código: Text
  1. printf("El fichero alumnos.txt no existe\n");
  2.  
y luego salta a final del programa con return -1;

Si pones un getche(); después de cada printf, el programa esperará a presiones una tecla y te dará tiempo a visualizar los mensajes. Eso, o aprender a leer ultrarápidamente  :D

Un saludo.
El software es como el sexo, es mejor cuando es gratis. (Linus Torvalds)

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #2 en: Jueves 3 de Junio de 2004, 20:55 »
0
Cita de: "Jevi"
...un getche();...

supongo que habra sido un error pero es getch(); no getche(); y otra cosa para usar getch() debes incluir un #include <conio.h> al principio del codigo (que supongo k tambien se sabe, pero por si alguien no lo sabe)   :hola:

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #3 en: Sábado 5 de Junio de 2004, 13:01 »
0
Cita de: "Rataman"
Cita de: "Jevi"
...un getche();...

supongo que habra sido un error pero es getch(); no getche(); y otra cosa para usar getch() debes incluir un #include <conio.h> al principio del codigo (que supongo k tambien se sabe, pero por si alguien no lo sabe)   :hola:
Hola muchas gracias, por responderme, pero tengo otro problema, ahora en el dev cpp, uno el archivo alumnos.txt, pero no me lo reconoce, asi que cuando compilo el programa y ejecuto, me sale. que el archivo alumnos.txt, no existe.
Y se sale. Por favor, respondeme si sabes como debo hacerlo.
Gracias

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #4 en: Sábado 5 de Junio de 2004, 13:04 »
0
Cita de: "Jevi"
He depurado tu programa, parando la ejecución en la línia 34
Código: Text
  1. if((fp=fopen(&#34;alumnos.txt&#34;, &#34;r&#34;))== NULL)
  2.  
veo que como el fichero alumnos.txt no existe, te escribe el mensaje
Código: Text
  1. printf(&#34;El fichero alumnos.txt no existe&#092;n&#34;);
  2.  
y luego salta a final del programa con return -1;

Si pones un getche(); después de cada printf, el programa esperará a presiones una tecla y te dará tiempo a visualizar los mensajes. Eso, o aprender a leer ultrarápidamente  :D

Un saludo.
Hola muchas gracias, por responderme, pero tengo otro problema, ahora en el dev cpp, uno el archivo alumnos.txt, pero no me lo reconoce, asi que cuando compilo el programa y ejecuto, me sale. que el archivo alumnos.txt, no existe. Como debo linkarlo el archivo alumnos.txt, para que la práctica me funcione?. Muchas gracias, por ser tan amable conmigo.Me estás ayudando mucho. Gracias.
Espero tu respuesta para cuando puedas.
Ya acabo de solucinar ese problema, pero sigue sin ejectarme bien. Debe de salirse del programa, cuando el numero_agno, sea menor de 3. Por favor, te mando de nuevo el codigo que tengo y me dices, porque no sale.
Vale. DE NUEVO muchas gracias.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #5 en: Sábado 5 de Junio de 2004, 13:58 »
0
He estado mirando tu codigo, y tu problema es k cuando es menor de 3 años, se sale del primer bucle, pero como tienes otro while mas abajo que controla el fin de fichero pues vuelve a empezar. Otra cosa que e visto es k si introduces unos datos en los que la persona tiene mas de 3 años no guarda los datos en el fichero, y te vuelve a pedir apellidos y demas, no creo k sea eso lo que pretendes.

Lo de controlar el fin de fichero no te hace falta a la hora de escribir, solo cuando kieras leer el fichero. En vez de controlar si es fin de fichero, haz algo asi:

Código: Text
  1.  
  2.    printf(&#34;¿Quiere introducir otra persona? (s/n):&#34;);
  3.    }while(getchar!='n');
  4.  
  5.  

No se si es algo asi lo k pretendes de todas formas espero servirte de ayuda

 :hola:

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #6 en: Sábado 5 de Junio de 2004, 14:19 »
0
Cita de: "Rataman"
He estado mirando tu codigo, y tu problema es k cuando es menor de 3 años, se sale del primer bucle, pero como tienes otro while mas abajo que controla el fin de fichero pues vuelve a empezar. Otra cosa que e visto es k si introduces unos datos en los que la persona tiene mas de 3 años no guarda los datos en el fichero, y te vuelve a pedir apellidos y demas, no creo k sea eso lo que pretendes.

Lo de controlar el fin de fichero no te hace falta a la hora de escribir, solo cuando kieras leer el fichero. En vez de controlar si es fin de fichero, haz algo asi:

Código: Text
  1.  
  2.    printf(&#34;¿Quiere introducir otra persona? (s/n):&#34;);
  3.    }while(getchar!='n');
  4.  
  5.  

No se si es algo asi lo k pretendes de todas formas espero servirte de ayuda

 :hola:
Hola de nuevo, te refires a una cosa asi:

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
#define TAMANYODNI 10


struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_agno;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_agno;


if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   getch();
 return -1;
   
      
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   getch();
  return -1;
}   


do {

 while((car = fgetc(fp)) != '\n')  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
   do{      
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
            
         }
        strcpy(d.DNI, dni);  
         
          

            printf("Introduzca los Apellidos: ");
             
           gets(apellidos);
         fflush(stdin);
      
            printf("Introduzca el Nombre: ");
                 gets(nombre);
         fflush(stdin);

            printf("Introduzca el Numero de años: ");
           scanf("%d",&numero_agno);
              fflush(stdin);

/*        }while(numero_anyo>3);*/
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_agno = numero_agno;
   
       }while(numero_agno >= 3);

       
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
   
    }//cierre del if
  } //cierre del while
  printf("\n¿Quiere introducir otra persona\n");
}while(getchar() != 'n');

 
 fclose(ficbin);
 fclose(fp);
 return 0;
 
}

Pues es que sigo sin entender porque no se sale bien del bucle, cuando el numero de años es menor de 3.
Gracias.Espero tu respuesta.

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #7 en: Sábado 5 de Junio de 2004, 22:08 »
0
Es que no entiendo para que sirve la condicion de que sea menor de 3 años... que quieres exactamente que haga cuando es menor? En el codigo original no es k no salga del bucle, es k sale del primer while, pero no del segundo (el de feof). ¿podrias especificar lo k pretendes al controlar lo de los tres años?  ;)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #8 en: Domingo 6 de Junio de 2004, 01:12 »
0
Cita de: "Rataman"
Es que no entiendo para que sirve la condicion de que sea menor de 3 años... que quieres exactamente que haga cuando es menor? En el codigo original no es k no salga del bucle, es k sale del primer while, pero no del segundo (el de feof). ¿podrias especificar lo k pretendes al controlar lo de los tres años?  ;)
Verás lo que pretendo es poner alguna condición de salida,para que en un momento dado deje preguntar datos, los meta en el fichero binario. Y se guarden bien. Me inventé lo de los 3 años, porque como son 3 años de carrera, pues solo pueden como minimo debian llevar 3 años, porque la practica pone que son 3 años lectivos. En fin, era por poder salir del bucle.
Gracias

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #9 en: Miércoles 9 de Junio de 2004, 11:33 »
0
Cita de: "Rataman"
Es que no entiendo para que sirve la condicion de que sea menor de 3 años... que quieres exactamente que haga cuando es menor? En el codigo original no es k no salga del bucle, es k sale del primer while, pero no del segundo (el de feof). ¿podrias especificar lo k pretendes al controlar lo de los tres años?  ;)
Hola, ya te dije lo que significaba lo de los 3 años, por favor, contestame, que aun no me has contestado, acabo de llegar de un examen. Luego vere si me has contestado, me voy a la camal, que estoy molida.
Gracias, saludos.

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #10 en: Miércoles 9 de Junio de 2004, 14:31 »
0
Hola otra vez, yo siempre k trabajo con ficheros, lo hago controlando el numero de registros y haciendolo por acceso directo, pòr eso no estoy muy puesto en lo de controlar el fin de fichero y demas. Me e dado cuenta k el problema de k se repite tu bucle esta en uno de los while -> while((car = fgetc(fp)) != '\n') debido a este bucle se repite siempre, kitande este bucle y el if k le sigue -> (if(isspace (car) == 0)) ya funciona bien en lo k a no repetir los bucles se refiere, pero claro supongo k en tu caso estas dos sentencias seran necesarias, y la verdad es k no se para k sirven. Espero k al menos te sirva de algo...  :unsure:

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #11 en: Jueves 10 de Junio de 2004, 13:30 »
0
Cita de: "Rataman"
Hola otra vez, yo siempre k trabajo con ficheros, lo hago controlando el numero de registros y haciendolo por acceso directo, pòr eso no estoy muy puesto en lo de controlar el fin de fichero y demas. Me e dado cuenta k el problema de k se repite tu bucle esta en uno de los while -> while((car = fgetc(fp)) != '\n') debido a este bucle se repite siempre, kitande este bucle y el if k le sigue -> (if(isspace (car) == 0)) ya funciona bien en lo k a no repetir los bucles se refiere, pero claro supongo k en tu caso estas dos sentencias seran necesarias, y la verdad es k no se para k sirven. Espero k al menos te sirva de algo...  :unsure:
Veras el bucle de while((car = fgetc(fp)) = '\n') está puesto para que lea del fichero de texto. y luego si car es un espacio en blanco entonces haga todo lo que viene debajo. Yo sé que el error de que se me repitan los bucles está ahi. Pero es que no sé como ponerlo para la solucionar el problema. Si los quito no me hacen lo que quiero.
Saludos Mercedes. Gracias

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #12 en: Jueves 10 de Junio de 2004, 17:20 »
0
Siento no serte mas util, pero como ya e dixo, yo suelo trabajar con ficheros d acceso directo(fwrite,fread,fseek y demas) y clarro lo mismo k estas haciendo tu yo lo haria con un planteamiento totalmente distinto, controlando el numero de registros y demas, a ver si hay suerte y ayuda alguien mas... un saludo.

P.D: Me parecio leer por ahi k eras andaluza... yo tb lo soy  :hola:  :D

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #13 en: Jueves 10 de Junio de 2004, 17:39 »
0
Cita de: "Rataman"
Siento no serte mas util, pero como ya e dixo, yo suelo trabajar con ficheros d acceso directo(fwrite,fread,fseek y demas) y clarro lo mismo k estas haciendo tu yo lo haria con un planteamiento totalmente distinto, controlando el numero de registros y demas, a ver si hay suerte y ayuda alguien mas... un saludo.

P.D: Me parecio leer por ahi k eras andaluza... yo tb lo soy  :hola:  :D
Hola gracias de todos modos, si que soy andaluza, de Córdoba.
Jeje. Ya somos dos andaluces. :D

Gracias por tu ayuda, siento que no me hayas podido ayudar más porque el método que tú usas es distinto.No pasa nada.
Saludos

m13_biker

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Alguien Usa El Programa Dev-cpp
« Respuesta #14 en: Jueves 10 de Junio de 2004, 21:24 »
0
Hola!

tu problema es bastante semcillo!

un comando que puedes utilizar y el cual es muy util a la hora de programar en c es el

getch();

el getch lo que hace es esperar que el usuario oprima cualquier tecla y el programa sigue ejecutandose, tambien puedes personalizar el getch para que solo funcione copn una tecla en especifico.

tambien puedes usar el delay(****) que espera x cantidad de tiempo para seguir!

si vas a usar el getch debes incluir la libreria conio.h al principio del programa.

att

M13_biker

suerte con tu programa  :)  ;)