Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/09/2010, 12:47
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ayuda con fichero...

Tu problema es que reemplaza a todos los mayores por el mismo. Eso pasa porque no cortas el bucle cuando encontras la posicion donde va el nombre.

Código C++:
Ver original
  1. cout<<"Ingrese el nombre ";
  2.                 fflush(stdin);
  3.                 gets(nombre);
  4.                 cout<<"Ingrese el numero de telefono ";
  5.                 fflush(stdin);
  6.                 gets(telefono);
  7.                
  8.                 //utilizacion del fichero
  9.                 int ban=0;
  10.                 ofstream agenda;
  11.                 agenda.open("temporal.txt",ios::app);
  12.                 ifstream lectura;
  13.                 lectura.open("telefono.txt",ios::out);
  14.                 ingresado = 0;
  15.                 while(lectura>>nombreb>>telefonob && ingresado == 0){
  16.                            if (strcmp(nombreb,nombre)<0){
  17.                                                 agenda<<nombreb<<' '<<telefonob<<
  18.                            }else if(strcmp(nombreb,nombre)>0){
  19.                                                 agenda<<nombre<<' '<<telefono<<endl;
  20.                                                  agenda<<nombreb<<' '<<telefonob<<endl;
  21.                                                  ingresado == 1;
  22.                             }
  23.                 }
  24.                  if (ingresado ==0)   agenda<<nombre<<' '<<telefono<<endl;
  25.                  while(lectura>>nombreb>>telefonob) agenda<<nombreb<<' '<<telefonob<<endl;
  26.                 lectura.close();
  27.                 agenda.close();
  28.                
  29.  system("PAUSE");
  30.     return 0;
  31.    
  32. }

Utilizo la variable ingresado, para llevar la cuenta si lo ingrese. Una vez ingresado, se corta el while y se procede a guarlos los que faltaron, que deberian ser todos mayores.
Se puede dar el caso que el nombre a ingresar sea el mayor de todo, en ese caso cuando se sale del while "ingresado" va a seguir siendo cero. Por lo tanto escribo el nombre.

Última edición por sam90; 27/09/2010 a las 12:54