Dudas en C++

Iniciado por WiseHidden, 3 Diciembre 2010, 11:23 AM

0 Miembros y 2 Visitantes están viendo este tema.

WiseHidden

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
Si tu tienes una manzana y yo otra y decidimos intercambiarlas, seguiremos teniendo una manzana cada uno, pero si tu tienes una idea y yo otra y la intercambiamos, ambos tendremos dos ideas. (Origen Anónimo)

Akai

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

WiseHidden

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

Si tu tienes una manzana y yo otra y decidimos intercambiarlas, seguiremos teniendo una manzana cada uno, pero si tu tienes una idea y yo otra y la intercambiamos, ambos tendremos dos ideas. (Origen Anónimo)

Akai

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

WiseHidden

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
Si tu tienes una manzana y yo otra y decidimos intercambiarlas, seguiremos teniendo una manzana cada uno, pero si tu tienes una idea y yo otra y la intercambiamos, ambos tendremos dos ideas. (Origen Anónimo)

Akai

Todo lo que he comentado es referente a C++, asumiendo que es lo que estás utilizando.