Lo primero que debes hacer es evitar el uso de la biblioteca conio de Borland, las razones de ello se explican en el tema
|Lo que no hay que hacer en C/C++. Nivel basico|.
Ademas:
* Hay que cambiar el nombre del encabezado <string.h> ya que el nombre correcto es <cstring>, eliminar la variable "i" ya que no la utilizas en el programa y acortar algunas partes, por ejemplo este bloque:
char palabra[20];
strcpy (palabra,"argentina");
entrada<<palabra<<endl;
entrada.close();
Se puede reducir con el mismo efecto a solo:
entrada << "argentina" << endl;
entrada.close();
* Si no utilizas los argumentos pasados mediante la linea de comandos cambia la definicion de la funcion principal a "int main() ...".
* Hay que cambiar los nombres de las variables para el manejo de archivos ya que abren la puerta a errores lógicos, esto porque el archivo de salida (a donde envías los datos) se llama "entrada" mientras que el archivo de entrada (leer los datos del archivo) se llama "salida".
* Debido a la forma del bucle donde lees e imprimes las palabras la primera se descarta (no se imprime):
getline(salida,palabra);
while (!salida.eof()){
getline(salida,palabra);
cout<<palabra<<endl;
}
Para corregirlo basta con utilizar el valor de retorno de la función getline:
string palabra;
while (getline(salida,palabra))
cout<<palabra<<endl;
----
En cuanto a la impresión de una palabra al azar leída del archivo lo primero que debes hacer es ... enviar mas de una palabra al archivo, por ejemplo con:
} else {
entrada << "Hugo" << endl;
entrada << "Paco" << endl;
entrada << "Luis" << endl;
entrada.close();
cout<<"Los datos fueron almacenados correctamente\n"<<endl;
}
A continuación lees cada una de las lineas y las almacenas en un vector de cadenas utilizando las clases vector y string, los encabezados a incluir son <vector> y <string>. Para seleccionar una utilizas la funciones srand y rand. Mas o menos así:
int main()
{
srand((unsigned) time(0));
// ...
} else {
vector<string> palabra;
string aux;
while (getline(salida, aux))
palabra.push_back(aux);
int i = rand() % palabra.size();
cout << palabra[i] << endl;
}
salida.close();
Un saludo