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 originalcout<<"Ingrese el nombre ";
cout<<"Ingrese el numero de telefono ";
//utilizacion del fichero
int ban=0;
ofstream agenda;
agenda.open("temporal.txt",ios::app);
ifstream lectura;
lectura.open("telefono.txt",ios::out);
ingresado = 0;
while(lectura>>nombreb>>telefonob && ingresado == 0){
if (strcmp(nombreb
,nombre
)<0){ agenda<<nombreb<<' '<<telefonob<<
}else if(strcmp(nombreb
,nombre
)>0){ agenda<<nombre<<' '<<telefono<<endl;
agenda<<nombreb<<' '<<telefonob<<endl;
ingresado == 1;
}
}
if (ingresado ==0) agenda<<nombre<<' '<<telefono<<endl;
while(lectura>>nombreb>>telefonob) agenda<<nombreb<<' '<<telefonob<<endl;
lectura.close();
agenda.close();
return 0;
}
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.