/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

ayuda para compilar el programa de la tortug y la libre.

 
      Índice del Foro elrincondelc.com -> Dev-C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
danilop



Registrado: 17 May 2011
Mensajes: 2
Ubicación: S.P.S. HONDURAS

MensajePublicado: 17/05/2011 12:46 pm
Título: ayuda para compilar el programa de la tortug y la libre.

ya hice el programa de la tortuga y la liebre (con apuntadores), pero no consigo compilarlo, he buscado el problema, pero no lo encuentro, el error q me tira es (2 C:\Users\DANILO\Desktop\tortuga.cpp:96 [Warning] no newline at end of file ) es el unico. quisiera q una persona mas diestra intentara correrlo y me dijera cual es el error.

ais ta se los agradeceria quesos:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(int argc, char *argv[]){

int i, *ptrtortuga, *ptrliebre,tortuga = 1,liebre = 1, T,L;

*ptrtortuga=tortuga,*ptrliebre=liebre;

bool entrar = true; // Para salir

cout << "\n\n?BANG!\n?Y ARRANCAN!\n"; // Inicio de la carrera

srand(time(0)); // Genera n?meros aleatorios

//////
while(entrar){

T = 1 + rand() % 10;
L = 1 + rand() % 10;

if(T<=5){
*ptrtortuga += 3; // Paso lento ptrliebre -= 2;
// Resbal?n peque?o
}else
if(T<=7){
*ptrtortuga -= 6; // Paso lento
// Salto peque?o ptrliebre += 1;
}
else{
*ptrtortuga +=1; // Salto peque?o
}


if(L<=2){
*ptrliebre=liebre;

}
else
if(L<= 4){
*ptrliebre += 9; // Gran salto
}
else{
if(L==5)
*ptrliebre -= 12; // Paso veloz de la tortuga la liebre est? durmiendo
else{
if(L<=Cool
*ptrliebre+=1;
else
*ptrliebre-=2;
}
}

if(tortuga < 1)
*ptrtortuga = 1; // Se regresa al punto de partida

if(liebre < 1)
*ptrliebre = 1; // Se regresa al punto de partida

for(i = 0; i < 70; i++){
if(i == tortuga && i == liebre)
cout << "OUCH!!"; // La tortuga muerde a la liebre
else if(i == tortuga)
cout << 'T'; // Indicador de la posici?n de la toruga
else if(i == liebre)
cout << 'L'; // Indicador de la posici?n de la liebre
else
cout << ' '; // Pista libre
}

if(liebre >= 70 || tortuga >= 70)
entrar = false; // Alguien ha ganado y debemos salir

cout << endl; // Para la siguiente pista

// Retardo para que se haga mas emocionante
}

////


if(liebre == tortuga)
cout << "LLegaron al mismo tiempo";
else if(tortuga >= 70)
cout << "?LA TORTUGA GANA!";
else
cout << "La liebre gana. Ni hablar.";

cout << "\n\n";

system("PAUSE");
return EXIT_SUCCESS;
}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 6586
Ubicación: Mexico

MensajePublicado: 18/05/2011 3:44 am
Título:

El error principal en el programa se debe al uso de los punteros, antes de utilizarlos debes almacenar en ellos las direcciones de las variables "tortuga" y "liebre" mediante:
Código:
ptrtortuga = &tortuga;
ptrliebre = &liebre;


Tambien se deben eliminar los parametros "argc" y "argv" ya que no son utilizados en el programa, por ultimo se puede mejorar en varios puntos, por ejemplo se debe modificar para no tener esta linea:
Código:
if (L <= 2)
   *ptrliebre = liebre;

Ya que no hace nada (asigna a la variable su mismo valor).

El programa con las correcciones es:
Código:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
   int i, *ptrtortuga, *ptrliebre, tortuga = 1, liebre = 1, T, L;
   
   ptrtortuga = &tortuga;
   ptrliebre = &liebre;
   bool entrar = true; // Para salir
   
   cout << "\n\n?BANG!\n?Y ARRANCAN!\n"; // Inicio de la carrera
   srand (time (0)); // Genera n?meros aleatorios
   
   //////
   while (entrar) {
      T = 1 + rand() % 10;
      L = 1 + rand() % 10;
      
      if (T <= 5)
         *ptrtortuga += 3; // Paso lento ptrliebre -= 2;
      // Resbal?n peque?o
      else if (T <= 7)
         *ptrtortuga -= 6; // Paso lento
      // Salto peque?o ptrliebre += 1;
      else
         *ptrtortuga += 1; // Salto peque?o
      
      if (L <= 2)
         *ptrliebre = liebre;
      else if (L <= 4)
         *ptrliebre += 9; // Gran salto
      else if (L == 5)
         *ptrliebre -= 12; // Paso veloz de la tortuga la liebre est? durmiendo
      else if (L <= 8)
         *ptrliebre += 1;
      else
         *ptrliebre -= 2;
      
      if (tortuga < 1)
         *ptrtortuga = 1; // Se regresa al punto de partida
      if (liebre < 1)
         *ptrliebre = 1; // Se regresa al punto de partida
      
      for (i = 0; i < 70; i++) {
         if (i == tortuga && i == liebre)
            cout << "OUCH!!"; // La tortuga muerde a la liebre
         else if (i == tortuga)
            cout << 'T'; // Indicador de la posici?n de la toruga
         else if (i == liebre)
            cout << 'L'; // Indicador de la posici?n de la liebre
         else
            cout << ' '; // Pista libre
      }
      
      if (liebre >= 70 || tortuga >= 70)
         entrar = false; // Alguien ha ganado y debemos salir
      
      cout << endl; // Para la siguiente pista
      
      // Retardo para que se haga mas emocionante
      system("pause");
   }
   
   ////
   if (liebre == tortuga)
      cout << "LLegaron al mismo tiempo";
   else if (tortuga >= 70)
      cout << "?LA TORTUGA GANA!";
   else
      cout << "La liebre gana. Ni hablar.";
   
   cout << "\n\n";
   system ("PAUSE");
   
   return 0;
}


Un saludo
_________________
Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short.
--
Mentat Handbook
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 290
Ubicación: MICA S.A.

MensajePublicado: 18/05/2011 3:59 am
Título:

Hola,

Me voy a permitir añadir un pequeño comentario:

El mensaje:

[Warning] no newline at end of file

Se traduciría al castellano como:

[Alerta] No hay nueva línea al final del fichero.

Es un mensaje muy común y muy fácil de corregir. Simplemente hay que ir al fin de la última línea del fichero fuente y presionar Retorno (ó Enter). Así añadimos una línea extra al fichero -naturalmente vacía- y nos quitamos el mensajito.

Espero que le sea útil a alguien.
Volver arriba
Yahoo Messenger
danilop



Registrado: 17 May 2011
Mensajes: 2
Ubicación: S.P.S. HONDURAS

MensajePublicado: 18/05/2011 8:51 am
Título: a rir3760 y a untio gracias! son unas fieras.

solo le quite un system("pause"); , y me corrio galan.

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
int i, *ptrtortuga, *ptrliebre, tortuga = 1, liebre = 1, T, L;

ptrtortuga = &tortuga;
ptrliebre = &liebre;
bool entrar = true; // Para salir

cout << "\n\n?BANG!\n?Y ARRANCAN!\n"; // Inicio de la carrera
srand (time (0)); // Genera n?meros aleatorios

//////
while (entrar) {
T = 1 + rand() % 10;
L = 1 + rand() % 10;

if (T <= 5)
*ptrtortuga += 3; // Paso lento ptrliebre -= 2;
// Resbal?n peque?o
else if (T <= 7)
*ptrtortuga -= 6; // Paso lento
// Salto peque?o ptrliebre += 1;
else
*ptrtortuga += 1; // Salto peque?o

if (L <= 2)
*ptrliebre = liebre;
else if (L <= 4)
*ptrliebre += 9; // Gran salto
else if (L == 5)
*ptrliebre -= 12; // Paso veloz de la tortuga la liebre est? durmiendo
else if (L <= Cool
*ptrliebre += 1;
else
*ptrliebre -= 2;

if (tortuga < 1)
*ptrtortuga = 1; // Se regresa al punto de partida
if (liebre < 1)
*ptrliebre = 1; // Se regresa al punto de partida

for (i = 0; i < 70; i++) {
if (i == tortuga && i == liebre)
cout << "OUCH!!"; // La tortuga muerde a la liebre
else if (i == tortuga)
cout << 'T'; // Indicador de la posici?n de la toruga
else if (i == liebre)
cout << 'L'; // Indicador de la posici?n de la liebre
else
cout << ' '; // Pista libre
}

if (liebre >= 70 || tortuga >= 70)
entrar = false; // Alguien ha ganado y debemos salir

cout << endl; // Para la siguiente pista

// Retardo para que se haga mas emocionante
system("pause"); // <- Este sistem y me corrio!
}

////
if (liebre == tortuga)
cout << "LLegaron al mismo tiempo";
else if (tortuga >= 70)
cout << "?LA TORTUGA GANA!";
else
cout << "La liebre gana. Ni hablar.";

cout << "\n\n";
system ("PAUSE");

return 0;
}
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 290
Ubicación: MICA S.A.

MensajePublicado: 18/05/2011 10:56 am
Título:

Hola otra vez,

Puntualizo para todo aquel al que le salga ese error:

El último carácter de un fichero fuente ha de ser un \n.
Un carácter de nueva línea.

Me alegro de que te funcione.

Felicidades.
Volver arriba
Yahoo Messenger
      Índice del Foro elrincondelc.com -> Dev-C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com