<div dir="ltr">Hola Fantidark,<div><br></div><div>En el correo-e anterior, te comentaba que no puedes meter una función dentro de otra. Otro error que tenías era acerca del bucle 'while', tanto la condición que escribiste: o=0 cuando debería ser o==0, como la falta de la posibilidad de cambiar el valor de 'o', para que la condición falle.<br>
<div class="gmail_extra"><br><div class="gmail_quote">2013/4/21 fanatidark <span dir="ltr"><<a href="mailto:pandoras_box_789@hotmail.com" target="_blank">pandoras_box_789@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
entonces queda algo asi???(pero tadavia no busca bien siempre me dice que el caracter esta en la pocicion 1 por q???<br></blockquote><div><br></div><div style>Veamos el código fuente.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">#include <iostream><br>
#include <stdlib.h><br>
#include <stdio.h><br>
#include <conio.h><span style="color:rgb(34,34,34)"> </span></div></blockquote><div><br></div><div style>Puedes eliminar estas tres últimas inclusiones; es deicr, quédate con:<br><br>#include <iostream></div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
using namespace std;<br>
<br>
</div>char oracion[65];<br>
<div class="im"><br></div></blockquote><div><br></div><div style>Como te dije antes, no te acostumbres a usar variables globales; no las necesitas.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">
int busqueda(char *a,int b,char c)<br>
</div><div class="im">    {<br>
                a=&oracion[0];<br></div></blockquote><div><br></div><div style>Esto no es necesario, ya que para eso mismo sirve pasar los parámetros por copia: para copiar los parámetros.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">
                b=0;<br></div></blockquote><div><br></div><div style>No tiene sentido pasar 'b', ya que vas a cambiar su valor. Por lo tanto, define 'b' localmente y elimina este segundo parámetro de la función. Esto es,</div>
<div style><br></div><div style>int busqueda( char *szCadena, char cClave )</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
                while((b<65)&&((*a)!=c))<br>
                {<br>
                        b++;<br>
                        a++;<br>
                }<br>
                return b;<br>
<br>
    }<br>
<br>
int main()<br>
{<br>
<br>
</div><div class="im">        char *p,*p2;<br></div></blockquote><div><br></div><div style>No necesitas estos punteros.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">
        int n,o;<br>
        char l;<br>
<br>
</div><div class="im">        cout<<"escribe una oracion"<<endl;<br>
        cin>>oracion;<br>
        cout<<"quieres buscar algun caracter?"<<endl;<br>
        cout<<"\n si=0 \n no=1"<<endl;<br>
<br>
        cin>>o;<br>
</div>        if(o==0)<br>
        {<br>
        while(o==0)<br></blockquote><div><br></div><div style>No necesitas hacer un 'if' y luego un 'while', ya que en este caso vamos a comprobar ambas condiciones. Date cuenta que un bucle 'while' es básicamente un 'if' pero con iteraciones (repeticiones).</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">        {<br>
                cout<<"que caracter quieres buscar?"<<endl;<br>
                cin>>l;<br>
</div>                n=0;<br>
<div class="im">                busqueda (p, n ,l);<br></div></blockquote><div><br></div><div style>Con acorde a lo que dije previamente, no necesitas pasar 'n', ni tampoco tener tres parámetros.</div><div style>
<br></div><div style>También date cuenta que esta función retornará un entero, por lo que deberíamos guardar tal valor retornado en alguna variable. Ésta es la razón del problema que comentas: no haces nada con el resultado retornado.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
                if(n<65)<br>
                {<br>
                        cout<<"\n su caracter es:  "<<l <<" y esta en la pocicion: "<<busqueda<<endl;<br>
                }<br>
                else<br>
                {<br>
                        cout<< "no existe ese caracter en esta cadena"<<endl;<br>
                }<br>
</div>                cout<<"quieres seguir buscando?"<<endl;<br>
<div class="im HOEnZb">                cout<<"\n si=0 \n no=1"<<endl;<br>
                cin>>o;<br>
<br>
    }<br>
    }<br>
</div><div class="im HOEnZb">        else<br>
        {<br>
                cout<<"adios"<<endl;<br>
        }<br>
<br></div></blockquote><div><br></div><div style>Este apartado de 'else' sólo se ejecutará la primera vez que el usuario elija "no"; o sea, '1'. Para posteriores preguntas, no habrá mensaje al finalizar el bucle.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im HOEnZb">
return 0;<br>
<br>
}</div></blockquote></div></div></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra" style>Espero que esto te aclare las dudas.</div><div class="gmail_extra"><br></div><div class="gmail_extra" style>
Steven</div><div class="gmail_extra" style><br></div></div>