[C con Clase] por que no funciona bien mi pregrama?

Davidson, Steven srd4121 en njit.edu
Jue Abr 18 07:35:43 CEST 2013


Hola Fanatidark,

2013/4/18 fanatidark <pandoras_box_789 en hotmail.com>

> se supone que guarda una frase u oracion y luego busca un caracter y te
> dice en que pocicion esta el codigo es el siguiente
>
>
Unos cuantos matices,

- El problema está en la función 'busqueda()'. Escribes:

int busqueda(int a, char *b,char c)
{
        while((a<67)&&(*b!=c))
        {a++;
        b++;
        return a;
        }
}

El error está en que incluyes 'return' en el cuerpo del bucle. Esto implica
que en la primera iteración del bucle, terminamos de ejecutar la función y
retornamos al punto de invocación.

- Deberías haber usado 65 y no 67 como tope. Sin embargo, esto implicaría
que la cadena apuntada siempre contendrá la cantidad máxima de caracteres
en el array; esto no siempre ocurre. Lo que tienes que hacer es comprobar
el final de la cadena. Esto significa que debes comprobar si llegamos al
carácter nulo, que sirve precisamente para indicar el final de la cadena y
por tanto el final de la información.

- Tienes otro error en 'main()', al escribir:

cout << "escribe un caracter para buscarlo" << endl;
cin.get();
cin >> l;

Con 'cin.get()', lees y extraes el primer carácter en el canal; si el canal
está vacío, entonces pedirá caracteres al usuario. Por lo tanto, 'l'
contendrá el carácter posterior al que el usuario ha introducido.
Simplemente, pide el carácter:

cout << "escribe un caracter para buscarlo" << endl;
cin >> l;


- Por último, te comento que no tiene sentido que 'busqueda()' establezca
ese primer parámetro, ya que se trata de un valor inicial para el contador.
Deberías definir el contador como una variable local a la función; o sea,

int busqueda( char *pszPalabra, char cBuscar )
{
  int i=0;
  ...
}

Obviamente, como dije antes, no uses variables globales, y además intenta
usar nombres descriptivos para variables importantes.


Espero que esto te ayude.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130418/25055156/attachment.html>


Más información sobre la lista de distribución Cconclase