• Viernes 8 de Noviembre de 2024, 23:27

Autor Tema:  Sopa de Letras C++  (Leído 14714 veces)

arian2822

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Sopa de Letras C++
« en: Lunes 18 de Octubre de 2010, 03:45 »
0
buenas, tengo una pregunta, tengo q hacer q al ingresar una palabra menor a 10 caracteres (indicando el fin de la palabra con un punto) el programa busque y muestra un 1 si la encontro y un 0 si no la encontro.. ( en horizontal de izq a derecha, y vertical ( q todavia no esta en el codigo ) de arriba para abajo.
el tema es q hay veces q me sale un 1 y no esta la palabra..
debe ser algo no muy complicado, pero no lo encuentro..
si alguien ve el error por ahi,
muchas gracias desde ya! ;)

Citar
#include <iostream>
using namespace std;

int main ()
{
    const int max = 10;
   
    char A[max][max] = {'A', 'S', 'B', 'E', 'D', 'A', 'O', 'H', 'I', 'J',
                        'A', 'B', 'C', 'D', 'E', 'F', 'H', 'I', 'J', 'O',
                        'B', 'D', 'I', 'O', 'S', 'F', 'G', 'H', 'I', 'J',
                        'P', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                        'S', 'D', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                        'E', 'I', 'C', 'S', 'U', 'S', 'A', 'N', 'A', 'J',
                        'B', 'O', 'A', 'L', 'O', 'B', 'B', 'B', 'B', 'B',
                        'F', 'S', 'B', 'B', 'A', 'I', 'A', 'R', 'B', 'B',
                        'A', 'R', 'I', 'A', 'N', 'A', 'R', 'I', 'A', 'N',
                        'N', 'E', 'X', 'I', 'S', 'T', 'E', 'S', 'O', 'O'};
                       
    char B[max];
    char punto = '.';
    int long_palabra = 0;
    int dim_palabra;
    int horizontal = 0;
    int vertical = 0;
    int inicio=0;
    int contador = 0;

// muestra la sopa de letras, solo para verificar.
    for (int i=0; i<max; i++)
    {
        for (int j=0; j<max; j++)
        {
            cout << A[j] << " ";
        }
      cout << endl;
    }
   
    cout << endl;

// ingreso los valores de B, y termina cuando sea mayor a 10,
// o cuando se ingresa un punto.

    cout << "Ingrese B: " << endl;
    for(int i=0; i<max; i++)
{
        cin>>B;
        long_palabra++;
       
        if(B==punto)
          break;
        if(i==9)
        {
                B[i+1]=punto;
                break;
        }
}

// crea nuevo vector con la palabra, sin el punto.
dim_palabra=long_palabra-1;
char P[dim_palabra];

for(int i=0; i<dim_palabra; i++)
   P=B;
 
// muestra palabra escrita, solo para verificar.
for (int k=0; k<dim_palabra; k++)
    cout << P[k];

// busca horizontal
int pos = 0;
for(int k=0; k<max; k++)
{
        for (int n=0; n<max; n++)
            {
                if (A[k][n] == P[pos])
                {  
                   if (pos == 0)
                   {
                        inicio = n;
                        horizontal++;
                        pos++;
                   }
                   else if (n = inicio+1)
                   {
                        horizontal++;
                        pos++;
                   }
                   else
                   pos = 0;
                }
                if (horizontal == dim_palabra)
                {
                    contador++;
                }
            }
       
}

cout << endl << endl << horizontal << endl << endl;
if (horizontal == dim_palabra)
{
cout << endl << 1;
}
else
{
cout << endl << 0;
}  
    cin.get();
    cin.get();
  return 0;
}


m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Sopa de Letras C++
« Respuesta #1 en: Miércoles 20 de Octubre de 2010, 16:19 »
0
Mi consejo es que cojas un buen libro de C++ y te pongas a estudiar programación orientada a objetos, porque esto tiene de C++ lo que C.