Jump to content

C++ lendo frase e imprimindo apenas vogais


Recommended Posts

Posted (edited)

Boa tarde a todos,

primeiramente agradeço a oportunidade fazer parte do forum. Sou iniciante em programação e me surgiu a necessidade de fazer um programa em C++ que leia uma frase e depois me mostre em um vetor apenas as vogais. Abaixo segue o exemplo que fiz e que, infelizmente, não deu certo. Alguém pode me auxiliar neste problema? Agradeço.

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace std;
main()
{
  /*3 - Fazer um programa em C que leia uma frase e imprima somente as vogais.  */
char frase[80];
int cont, cont2;
int tamanho;
printf("Entre com uma frase qualquer\n");
scanf("%c",&frase);
tamanho=strlen(frase);
char final[tamanho];
				 for (cont=0;cont<tamanho;cont++)
				 {
				 if (frase[cont]=='a')
				 {
					final[cont2]='a';
					cont2++;
					}
				 else if (frase[cont]=='e')
				 {
					final[cont2]='e';
					cont2++;
					}
				 else if (frase[cont]=='i')
				 {
					final[cont2]='i';
					cont2++;
					}
				 else if (frase[cont]=='o')
				 {
					final[cont2]='o';
					cont2++;
					}
				 else if (frase[cont]=='u')
				 {
					final[cont2]='u';
				   cont2++;	
				 }
				 }
				 tamanho=strlen(final);

				 for (cont2=0;cont2<tamanho;cont2++)
				 {
				 printf("%c",final[cont2]);
				 }
getch();
}
Edited by Baderous
geshi
Posted

primeiro de tudo, seja bem vindo.

bem ... não percebi porque é que um problema em C++, na secção de C++ está escrito em C.

deverias era usar as tags do geshi para apresentar código, mas como é o teu primeiro post, estás desculpado mas não deixes de dar uma vista de olhos aqui (principalmente na parte de colocação de código) : http://www.portugal-a-programar.pt/index.php?app=core&module=help

agora os erros de código:

scanf("%c",&frase);

está a pedir um caracter (%c) e quando tens um array/ponteiro (frase) não necessitas do operador &.

o resto do código é o método normal de quem está a aprender. não está errado mas não se escreve dessa maneira. olha apra esta simplificação:

if (frase[cont]=='a' ||
   frase[cont]=='e' ||
   frase[cont]=='i' ||
   frase[cont]=='o' ||
   frase[cont]=='u')
{
   final[cont2]=frase[cont];
   cont2++;
}

bem mais simples não ?

no final estás a escrever caracter a caracter:

for (cont2=0;cont2<tamanho;cont2++)
{
printf("%c",final[cont2]);
}
// e que tal assim ?
printf("%s\n", final);
IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.