SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: arian2822 en Lunes 18 de Octubre de 2010, 03:45
-
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! ;)
#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;
}
-
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.