/
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: 7530
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
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
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
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: 380
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
      Í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