Dev - C++ - Querría saber cómo buscar la última u de este ejercicio...

 
Vista:
sin imagen de perfil

Querría saber cómo buscar la última u de este ejercicio...

Publicado por Guillermo (3 intervenciones) el 22/10/2022 01:45:39
Realizar un programa que lea por teclado una secuencia terminada en punto, que sólo
consta de minúsculas sin acentos, espacios y el punto.
Y determine para cada vocal (‘a’, ‘e’, ‘i’, ’o’) si la primera aparición es antes o después
de la última ‘u’. Si no aparece debe indicarlo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kevin

RE: Querría saber cómo buscar la última u de este ejercicio...

Publicado por kevin (59 intervenciones) el 22/10/2022 03:47:52
Tú ejercicio no lo entiendo de ningún modo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Esto es lo que llevo hecho hasta ahora. El problema viene cuando aparece una segunda u.

Publicado por Guillermo (3 intervenciones) el 22/10/2022 13:05:02
#include <iostream>
using namespace std;
int main()
{
/*Realizar un programa que lea por teclado una secuencia terminada en punto, que sólo
consta de minúsculas sin acentos, espacios y el punto.
Y determine para cada vocal (‘a’, ‘e’, ‘i’, ’o’) si la primera aparición es antes o después
de la última ‘u’. Si no aparece debe indicarlo.
Si no aparece ninguna ‘u’ debe indicarlo.
Es necesario comentar el código describiendo que hace.
*/
cout << "Introduzca una secuencia terminada por punto y le indicare si las primeras 'a', 'e', 'i' y 'o' aparecen antes o despues " << endl;
cout << "de la ultima u." << endl;
cout << " " << endl;
char letra;
int a_ant{};
int a_post{};
int e_ant{};
int e_post{};
int i_ant{};
int i_post{};
int o_ant{};
int o_post{};
cin.get(letra);
while (letra != '.' && letra != 'u')
{

if (letra == 'a')
{a_ant = 1;}
if (letra == 'e')
{e_ant = 1;}
if (letra == 'i')
{i_ant = 1;}
if (letra == 'o')
{o_ant = 1;}
cin.get(letra);
}
if (letra == '.')
{
cout << "No has introducido ninguna u." << endl;
}
else {
cin.get(letra);
while (letra != '.')
{
if (letra == 'a')
{a_post = 1;}
if (letra == 'e')
{e_post = 1;}
if (letra == 'i')
{i_post = 1;}
if (letra == 'o')
{o_post = 1;}
cin.get(letra);
}
if (a_ant == 1)
{cout << "La primera 'a' aparece antes de la ultima 'u'." << endl;}
else{if (a_post == 1) { cout << "La primera 'a' aparece despues de la ultima 'u'." << endl; }
else {cout << "No aparece ninguna 'a'." << endl;}}

if (e_ant == 1)
{cout << "La primera 'e' aparece antes de la ultima 'u'." << endl;}
else{if (e_post == 1) { cout << "La primera 'e' aparece despues de la ultima 'u'." << endl; }
else {cout << "No aparece ninguna 'e'." << endl;}}

if (i_ant == 1)
{cout << "La primera 'i' aparece antes de la ultima 'u'." << endl;}
else{if (i_post == 1) { cout << "La primera 'i' aparece despues de la ultima 'u'." << endl; }
else {cout << "No aparece ninguna 'i'." << endl;}}

if (o_ant == 1)
{cout << "La primera 'o' aparece antes de la ultima 'u'." << endl;}
else{if (o_post == 1) { cout << "La primera 'o' aparece despues de la ultima 'u'." << endl; }
else { cout << "No aparece ninguna 'o'." << endl;}}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kevin

RE: Esto es lo que llevo hecho hasta ahora. El problema viene cuando aparece una segunda u.

Publicado por kevin (59 intervenciones) el 23/10/2022 05:19:41
Escribí este código, ojalá te sirva :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
using namespace std;
 
int main()
{
    string cadena;
    cout << "Introduzca una secuencia terminada por punto y le indicare si las primeras 'a', 'e', 'i' y 'o' aparecen antes o despues de la ultima u.\n>>> ";
    cin >> cadena;
 
    /*
    El método .length nos retorna la cantidad de caracteres que hay
    como comienza en 0 y no en 1, se le resta ese 1
    El método .find nos retorna el indice donde esta una letra
    (en este caso 'u'), sino existe, devuelve un numero mayor
    al valor ASCII de 'z' (122)
    El método exit(1) solamente detiende el sistema
    */
    if(cadena[cadena.length() - 1] != '.' || cadena.find('u') > 122)
    {
        cout << "No tiene punto al final o no tiene \'u\'\n";
        exit(1);
    }
 
    char posterior = cadena[cadena.find('u') + 1];
    char anterior = cadena.find('u') - 1 < 0? ' ' : cadena[cadena.find('u') - 1];
 
    cout << "La letra antes de U es: \'" << anterior << "\'\n";
    cout << "La letra despues de U es: \'"<< posterior << "\'\n";
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Esto es lo que llevo hecho hasta ahora. El problema viene cuando aparece una segunda u.

Publicado por Guillermo (3 intervenciones) el 23/10/2022 12:41:34
muchas graciasss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar