[ Foro de C ]

Ayuda

05-Mar-2021 16:17
Invitado (i)
2 Respuestas

Hola a todos
Soy nuevo en el mundo de la programación apenas estoy aprendiendo, me decidí a realizar este problema de un libro
Escribir un programa en el que se lean 20 líneas de
texto, cada línea con un máximo de 80 caracteres.
Mostrar por pantalla el número de vocales que tiene
cada línea.

Pensé en hacerlo mediante apuntadores a cadenas, ya puedo ingresar las 20 líneas de cadenas, como puedo leerlas para buscar las vocales, puede ser con un bucle anidado? pensé en hacerlo en una función por lo tanto este se arreglo se pasa como un arreglo normal en los parámetros?
Por ejemplo la función podría quedar como " vocales(  const char lista[] ) " que será donde leere las cadenas.  Gracias por su ayuda, estaré por aquí próximamente consultando

Esto es lo que llevo, no es mucho, pero
#include<stdio.h>
#include<string.h>
#define TAMANIO 20


main() {

char *lista[TAMANIO];
int i;

printf("Ingrese 20 lineas de texto no mayor a 80 cacacteres\n\n");

for(i = 0;i <= TAMANIO;i++) {
printf("%d: ",i + 1);
gets(*lista);
}


return 0;
}


05-Mar-2021 20:08
Nacho Cabanes (+83)

¿Te obligan a usar C?  Si nadie te obliga, yo no te recomiendo empezar por C. Manejar cadenas de texto en C es relativamente difícil (mucho más que en lenguajes más modernos), y más aún si quieres guardar varias cadenas distintas a la vez.

Si por lo que sea, quieres usar C, al menos no guardes las 20 cadenas. Lees una y muestras la cantidad de vocales que tiene, luego lees otra y así sucesivamente. Te será mucho más fácil plantearlo así.


06-Mar-2021 15:01
Invitado (kini)

hola i

para empezar decirte que te fata
el int en la función main y
preferiblemente el void entre los
paréntesis, también el define de
TAMANIO

comentarte que gets esta totalmente
en desuso ya que admite una
cantidad arbitraria de elementos,
en cambio fgets si tiene control de bufer

te paso una posible solución
por si te sirve alguna idea

https://www.onlinegdb.com/H1YltW-X_






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)