viernes, 5 de junio de 2026

Encontrar la primera posición de un carácter x de una cadena en C++

Código del ejercicio:

#include <iostream>
#include <string>
#include <clocale>

using namespace std;

int main()
{
    setlocale(LC_CTYPE, "Spanish");
    int i = 0, p = 0, sw = 0;
    string s;
    char l;
    cout<<"Ingresar texto: "; getline(cin, s);
    cout<<"Ingresar carácter: "; cin>>l;
    while(i < s.length() && sw == 0){
        if(s[i] == l){
            p = i;
            sw = 1;
        }
        i++;
    }
    cout<<"El carácter "<<l<<" está en la posición "<<p;
    return 0;
}

Definición de los códigos del ejercicio:

#include <iostream> --> significa flujo de entrada-salida estándar. Este archivo de encabezado contiene definiciones de objetos como cin, cout, cerr, etc.
#include <string> --> archivo de encabezado de cadena.
#include <clocale> --> especificador de configuración regional.
using namespace std; --> un espacio de nombres es una colección de nombres o identificadores relacionados (funciones, clases, variables) que ayudan a separar estos identificadores de identificadores similares en otros espacios de nombres o en el espacio de nombres global. Los identificadores de la biblioteca estándar de C++ se definen en un espacio de nombres llamado std.
int --> dato entero de 32 bits.
main() --> la función main() es el punto de entrada de cualquier programa C++. Es el punto en el que se inicia la ejecución del programa. Cuando se ejecuta un programa C++, el control de ejecución va directamente a la función main(). Cada programa C++ tiene una función main().
return 0; --> devolver 0 en la función principal significa que el programa se ejecutó correctamente.
setlocale(); --> sirve para configurar nuestro programa acorde a los parámetros locales de la computadora donde se ejecuta el programa, uno de estos parámetros es el idioma.
LC_CTYPE --> selecciona la categoría de clasificación de caracteres del entorno local.
setlocale(LC_CTYPE, "Spanish"); --> dentro de las comillas del segundo parámetro colocaremos la palabra "Spanish" para que así se utilicen los parámetros hispanos por defecto.
cout<<""; --> se utiliza para mostrar la salida al dispositivo de salida estándar, es decir, monitor.
cin>> --> se utiliza para aceptar la entrada del dispositivo de entrada estándar, es decir, el teclado.
char --> permiten almacenar dos o más caracteres a la vez en una sola variable, son muy útiles para guardar palabras o frases completas.
string --> dato de tipo cadena de texto.
getline() --> es una función integrada definida en el archivo de encabezado <string> que permite aceptar y leer cadenas de una y varias líneas del flujo de entrada.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
< --> el operador menor que ( < ) devuelve true si el operando izquierdo es menor que el operando derecho.
length() --> devuelve la longitud de una cadena.
&& --> el operador lógico AND ( && ) (conjunción lógica) para un conjunto de operandos booleanos será true si y solo si todos los operandos son true. De lo contrario será false.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.
!= --> el operador de desigualdad ( != ) comprueba si sus dos operandos no son iguales y devuelve un resultado booleano.

Explicación del Código:

Explicación del Código

  • #include <iostream>
    Permite utilizar cout y cin para mostrar y recibir datos.
  • #include <string>
    Permite trabajar con cadenas de texto usando la variable string.
  • #include <clocale>
    Sirve para configurar el idioma español.
  • using namespace std;
    Evita escribir std:: antes de cada instrucción.
  • int main()
    Es la función principal donde inicia el programa.
  • setlocale(LC_CTYPE, "Spanish");
    Configura el programa para trabajar en español.
  • int i = 0, p = 0, sw = 0;
    Declara variables:
    • i: recorre la cadena.
    • p: guarda la posición encontrada.
    • sw: controla si el carácter fue encontrado.
  • string s;
    Guarda el texto ingresado por el usuario.
  • char l;
    Guarda el carácter que se desea buscar.
  • getline(cin, s);
    Permite ingresar una cadena completa con espacios.
  • cin >> l;
    Permite ingresar el carácter a buscar.
  • while(i < s.length() && sw == 0)
    Recorre la cadena mientras no termine y mientras el carácter no haya sido encontrado.
  • if(s[i] == l)
    Comprueba si el carácter actual es igual al carácter buscado.
  • p = i;
    Guarda la posición donde se encontró el carácter.
  • sw = 1;
    Indica que el carácter ya fue encontrado.
  • i++;
    Avanza a la siguiente posición de la cadena.
  • cout
    Muestra la posición del carácter encontrado.
  • return 0;
    Finaliza correctamente el programa.

¿Qué Hace el Programa?

El programa solicita un texto y un carácter. Luego recorre la cadena buscando la primera vez que aparece ese carácter y finalmente muestra su posición.

Ejemplo de Ejecución

Ingresar texto: computadora
Ingresar carácter: p

El carácter p está en la posición 3

Código del ejercicio: Otra forma de hacer

#include <iostream>
#include <string>
#include <clocale>

using namespace std;

int main()
{
    setlocale(LC_CTYPE, "Spanish");
    int i = 0;
    string s;
    char x;
    cout<<"Ingresar texto: "; getline(cin, s);
    cout<<"Ingresar carácter: "; cin>>x;
    while(i < s.length()){
        if(s[i] != x){
            i++;
        }else{
            cout<<"El carácter "<<x<<" está en la posición "<<i;
            i = s.length();
        }
    }
    return 0;
}

Definición de los códigos del ejercicio:

#include <iostream> --> significa flujo de entrada-salida estándar. Este archivo de encabezado contiene definiciones de objetos como cin, cout, cerr, etc.
#include <string> --> archivo de encabezado de cadena.
#include <clocale> --> especificador de configuración regional.
using namespace std; --> un espacio de nombres es una colección de nombres o identificadores relacionados (funciones, clases, variables) que ayudan a separar estos identificadores de identificadores similares en otros espacios de nombres o en el espacio de nombres global. Los identificadores de la biblioteca estándar de C++ se definen en un espacio de nombres llamado std.
int --> dato entero de 32 bits.
main() --> la función main() es el punto de entrada de cualquier programa C++. Es el punto en el que se inicia la ejecución del programa. Cuando se ejecuta un programa C++, el control de ejecución va directamente a la función main(). Cada programa C++ tiene una función main().
return 0; --> devolver 0 en la función principal significa que el programa se ejecutó correctamente.
setlocale(); --> sirve para configurar nuestro programa acorde a los parámetros locales de la computadora donde se ejecuta el programa, uno de estos parámetros es el idioma.
LC_CTYPE --> selecciona la categoría de clasificación de caracteres del entorno local.
setlocale(LC_CTYPE, "Spanish"); --> dentro de las comillas del segundo parámetro colocaremos la palabra "Spanish" para que así se utilicen los parámetros hispanos por defecto.
cout<<""; --> se utiliza para mostrar la salida al dispositivo de salida estándar, es decir, monitor.
cin>> --> se utiliza para aceptar la entrada del dispositivo de entrada estándar, es decir, el teclado.
char --> permiten almacenar dos o más caracteres a la vez en una sola variable, son muy útiles para guardar palabras o frases completas.
string --> dato de tipo cadena de texto.
getline() --> es una función integrada definida en el archivo de encabezado <string> que permite aceptar y leer cadenas de una y varias líneas del flujo de entrada.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
< --> el operador menor que ( < ) devuelve true si el operando izquierdo es menor que el operando derecho.
length() --> devuelve la longitud de una cadena.
&& --> el operador lógico AND ( && ) (conjunción lógica) para un conjunto de operandos booleanos será true si y solo si todos los operandos son true. De lo contrario será false.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.
!= --> el operador de desigualdad ( != ) comprueba si sus dos operandos no son iguales y devuelve un resultado booleano.

Explicación del Código:

Este programa permite ingresar un texto y un carácter. Luego busca la primera posición donde aparece dicho carácter dentro de la cadena.

Código en C++

#include <iostream>
#include <string>
#include <clocale>

using namespace std;

int main()
{
    setlocale(LC_CTYPE, "Spanish");

    int i = 0;
    string s;
    char x;

    cout<<"Ingresar texto: ";
    getline(cin, s);

    cout<<"Ingresar carácter: ";
    cin>>x;

    while(i < s.length()){

        if(s[i] != x){
            i++;
        }else{

            cout<<"El carácter "
                <<x
                <<" está en la posición "
                <<i;

            i = s.length();
        }
    }

    return 0;
}

Explicación del Código

  • #include <iostream>
    Permite utilizar cout y cin para mostrar y leer datos.
  • #include <string>
    Permite trabajar con cadenas de texto usando la variable string.
  • #include <clocale>
    Se utiliza para configurar caracteres del idioma español.
  • using namespace std;
    Evita escribir std:: antes de cada instrucción.
  • int main()
    Es la función principal donde comienza el programa.
  • setlocale(LC_CTYPE, "Spanish");
    Configura el programa para reconocer caracteres del español.
  • int i = 0;
    Variable contador que representa la posición de los caracteres.
  • string s;
    Variable donde se almacena el texto ingresado.
  • char x;
    Variable que guarda el carácter que se desea buscar.
  • getline(cin, s);
    Permite ingresar una línea completa de texto incluyendo espacios.
  • while(i < s.length())
    Recorre toda la cadena carácter por carácter.
  • if(s[i] != x)
    Verifica si el carácter actual es diferente al carácter buscado.
  • i++;
    Avanza a la siguiente posición de la cadena.
  • else
    Se ejecuta cuando encuentra el carácter buscado.
  • cout
    Muestra el carácter encontrado y la posición donde aparece.
  • i = s.length();
    Finaliza el ciclo después de encontrar el carácter.
  • return 0;
    Indica que el programa terminó correctamente.

Ejemplo de Funcionamiento

Entrada:

Ingresar texto: Programación
Ingresar carácter: g

Salida:

El carácter g está en la posición 3 

No hay comentarios.:

Publicar un comentario

Calcular el radio de una circunferencia y que la imprima solo si el radio sede a los 50 cm en C++

Código del ejercicio: #include <iostream> #include <cmath> using namespace std ; int main () {     double cir...

Copyright ©2025 Ejercicios de programación. Todos los derechos reservados. ❤️