| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
danilop
Registrado: 17 May 2011 Mensajes: 2 Ubicación: S.P.S. HONDURAS
| Publicado: 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<= *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: 7520 Ubicación: Mexico
| Publicado: 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.
| Publicado: 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
| Publicado: 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 <=  *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.
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |