Hola a todos los miembros de elhacker.net
Llevo un tiempo con la ilusion y la entrega de aprender C++.
Como todos sabemos es un lenguaje bastante Complejo (Por lo completo que puede ser)
He "Hojeado" "Buscado" "Mirado" "Preguntado" ect......
Muchos de los Ejercicios que encuentro.
No puedo compilarlos porque me da el fastidioso (jaja) error en rojo que tan poco nos gusta.
Como por ejemplo:
-void (que lo tengo que sustituir por int
-clrscr(); (que no se por que lo tengo que sustituir
-sleep (que si no me esquivoco es para el S.O Linux)
Ect.....
No se si sera mi compilador el cual utilizo es el Code::Blocks 8.02
Creo que tambien podria ser el tema de CONSOLE, Y demas.
Pero hay si es verdad que ando aun mas perdido.
El tema de mi post. es si estoy haciendo una u otra cosa mal.
O si tengo que cambiar de compilador. O si debo abrir en CONSOLE o en otro,
Agradeceria mucho vuestra ayuda pues soy muy muy novato en C++ y m queda un largiiiisimo camino, y la verdad que me encanta este lenguaje.
Un saludo
WiseHidden
Unos pequeños comentarios:
a) pon un código en concreto para saber sobre qué ayudarte.
b) utiliza mejor codeblocks 10.05
c) leete esto: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
Gracias Akai.
Aceptare tu consejo de utilizar el CodeBlock y leere el tutorial
referente alo del ejemplo en si lo expondre aqui:
Citar
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define num_palabras 3
void cosntruye_todo ();
void captura_las_palabras();
void muestra_las_palabras();
void exhibe_el_menu();
void elegir_palabra();
void construye_cabeza();
void construye_tronco();
void construye_brazo_izquierdo();
void construye_brazo_derecho();
void construye_pie_izquierdo();
void construye_pie_derecho();
void construye_horca();
int opcion_elegida;
int posicion_de_palabra_a_adivinar;
int cant_de_palabras=num_palabras;
int longitud_de_las_palabras[num_palabras];
char todas_las_palabras[20][num_palabras];
char palabra_actual[20];
int longitud_palabra_actual;
main()
{
opcion_elegida=0;
clrscr(); // AQUI ESTA MI PRIMER ERROR
exhibe_el_menu();
getche();
return 0;
}
void exhibe_el_menu(void)
{
clrscr();
do
{
gotoxy(25,2);
printf("PRECIONA EL NUMERO DE LA OPCION QUE DESEE");
gotoxy(25,3);
printf("-----------------------------------");
gotoxy(25,3.5);
printf("");
gotoxy(59,3.5);
printf("!");
gotoxy(25,4);
printf(" MENU DEL JUEGO EL AHORCADO !");
gotoxy(25,5);
printf(" 1 - INGRESAR LAS PALABRAS ! ");
gotoxy(25,6);
printf(" 2 - JUGAR EL AHORCADO ! ");
gotoxy(25,7);
printf(" 3 - MOSTRAR LAS PALABRAS ! ");
gotoxy(25,8);
printf(" 4 - ABANDONAR EL PROGRAMA ! ");
gotoxy(25,9);
printf("-----------------------------------");
gotoxy(25.5,15);
printf("ELIJA LA OPCION QUE DESEE Y PULCE ACEPTAR:");
gotoxy(67,15);
scanf("%d",&opcion_elegida);
}
while (opcion_elegida < 1 || opcion_elegida > 4);
switch (opcion_elegida)
{
case 1: captura_las_palabras();
case 2: elegir_palabra();
case 3: muestra_las_palabras();
case 4: exit(1);
}
}
void captura_las_palabras(void)
{
int i,j;
clrscr();
for (i=0; i<cant_de_palabras;i++)
{
gotoxy(5,i+10);
printf("ESCRIBA LA PALABRA NUMERO %d: ", i+1);
gotoxy(35,i+10);
cin>>palabra_actual;
longitud_palabra_actual = strlen(palabra_actual);
longitud_de_las_palabras=longitud_palabra_actual;
for(j=0;j<longitud_palabra_actual; j++)
todas_las_palabras[j]=palabra_actual[j];
}
exhibe_el_menu();
}
void muestra_las_palabras(void)
{
int i,j;
clrscr();
for (i=0; i<cant_de_palabras;i++)
{
gotoxy(5,i+10);
printf("PALABRA No %d", i+1);
longitud_palabra_actual=longitud_de_las_palabras;
for(j=0; j<longitud_palabra_actual;j++)
{
gotoxy(19+j, i+10);
printf("%c", todas_las_palabras[j]);
}
}
printf("n Pulse una tecla para continuar...");
getche();
exhibe_el_menu();
}
void elegir_palabra(void)
{
int longitud_de_palabra_a_adivinar,l;
int i,j,sw=0,errores=0,contaP=0;
char letra[1],completa[20];
clrscr();
do
{
gotoxy(10,4);
printf("Escriba un numero entre 1 y %d y pulse enter:", cant_de_palabras);
gotoxy(55,4);
scanf("%d",&posicion_de_palabra_a_adivinar);
clrscr();
}
while (posicion_de_palabra_a_adivinar < 1 || posicion_de_palabra_a_adivinar > cant_de_palabras);
longitud_de_palabra_a_adivinar=longitud_de_las_palabras[posicion_de_palabra_a_adivinar-1];
for(i=0;i<longitud_de_palabra_a_adivinar;i++)
{
gotoxy(i+20,3);
printf("-");
}
do
{ i++;
gotoxy(10,4);
printf("n Escriba Una Letra y Presione <Enter>...");
cin>>letra;
sw=0;
for(j=0;j<longitud_de_palabra_a_adivinar; j++)
{
if (todas_las_palabras[j][posicion_de_palabra_a_adivinar-1]==letra[0])
{
gotoxy(j+20,3);
printf("%c",letra[0]);
completa[j]=letra[0];
sw=1;
}
}
contaP=0;
for(l=0;l<longitud_de_palabra_a_adivinar; l++)
{
if(completa[l]==todas_las_palabras[l][posicion_de_palabra_a_adivinar-1])
contaP++;
}
if (contaP==longitud_de_palabra_a_adivinar)
{
gotoxy(37,10);
printf("nGANASTES EL JUEGO.....");
errores=4;
i=longitud_de_palabra_a_adivinar;
getch();
exhibe_el_menu();
}
else
{
if( sw==0)
errores++;
if(errores== 1)
construye_cabeza();
else
if(errores==2)
construye_tronco();
else
if(errores==3)
construye_brazo_derecho();
else
if(errores==4)
construye_brazo_izquierdo();
else
if(errores==5)
construye_pie_derecho();
else
if(errores==6)
construye_pie_izquierdo();
else
if(errores==7)
{
clrscr();
cosntruye_todo ();
errores = 7 ;
}
}
}while(i<longitud_de_palabra_a_adivinar|| errores <=6);
printf("nn Pulse una tecla para continuar...");
getche();
exhibe_el_menu();
}
void construye_cabeza(void)
{
gotoxy(39,6);
printf("|||||");
gotoxy(38,7);
printf("| . . |");
gotoxy(39,8);
printf("|_-_|");
}
void construye_tronco(void)
{
gotoxy(41,9);
printf("|");
gotoxy(41,10);
printf("|");
gotoxy(41,11);
printf("|");
gotoxy(41,12);
printf("|");
}
void construye_brazo_derecho(void)
{
gotoxy(40,9);
printf("/");
gotoxy(38,10);
printf("/");
}
void construye_brazo_izquierdo(void)
{
gotoxy(42,9);
printf("");
gotoxy(44,10);
printf("");
}
void construye_pie_izquierdo(void)
{
gotoxy(42,13);
printf("");
gotoxy(44,14);
printf("");
}
void construye_pie_derecho(void)
{
gotoxy(40,13);
printf("/");
gotoxy(38,14);
printf("/");
}
void cosntruye_horca(void)
{
int i;
gotoxy(41,5);
printf(":");
gotoxy(41,4);
printf(":");
gotoxy(41,3);
printf(":");
gotoxy(42,3);
printf(":::::::::::::::");
for(i=3;i<18;i++)
{
gotoxy(57,i);
printf(":");
}
gotoxy(50,i);
printf("===============");
}
void cosntruye_todo(void)
{
gotoxy(37,4);
printf("nPERDISTE EL JUEGO.....");
cosntruye_horca();
construye_pie_derecho();
construye_pie_izquierdo();
construye_brazo_derecho();
construye_brazo_izquierdo();
construye_tronco();
construye_cabeza();
}
Gracias de nuevo
Un saludo
WH
iostream se incluye de esta forma --> #include <iostream>
El .h es para la cabecera antigua y ya no se usa. stdio, stdlib y string se incluyen como cstdio cstdlib cstring sin la h (lo mismo para la mayoría de liberías estándar de C, se quita el .h al final se añace c al principio.
conio.h es una librería obsoleta, mejor no usarla, y por tanto clrscr y gotoxy tampoco.
Por otro lado, main debe ser int --> int main
cin da problema de no estar declarado, soluciones:
usa std::cin
o añade al principio del código using namespace std;
Me pregunto para qué usar printf en C++ teniendo cout.
Cambia el getche() por getchar()
Incluyes librerías que no usas (string.h stdlib.h)
Por otro lado tengo la impresión que estás leyendo un manual antiguo, ¿me equivoco? Puedes probar con el libro de Deitel & Deitel "Cómo Programar en C/C++" que encontrarás aquí: http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html
Creo que no me dejo nada por comentar
Fantastica respuesta.
Si, al parecer debo de estar aprendiendo en un tutorial "antiguo" Solo me queda una curiosidad.
Es tambien igual si hablamos de C++?
O solo funciona con el C?
Gracias akai y sin duda me centrare en este.
MIL GRACIAS
Todo lo que he comentado es referente a C++, asumiendo que es lo que estás utilizando.