Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Léo Unicap

[Resolvido] Uso ctype?

Recommended Posts

Opa pessoal.

To aqui de novo com mais uma dúvida.

Dessa vez é a seguinte.

Tenho que fazer um programa que pega um String em C puro e

troca todas as vogas da String por *(asterisco).

Ja dei uma olhada na biblioteca ctype.h mas não vi nada

que me ajudasse.

 

A sim! Um detalhe. eu não posso fazer isso:

if(string[indice]='a' || string[indice]='e' || string[indice]='i' || 
string[indice]='o' || string[indice]='u' || string[indice]='A' || 
string[indice]='E' || string[indice]='I' || string[indice]='O' || 
string[indice]='U'){
    string[indice]='*';
}

E ai, alguém tem uma solução pra isso?

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara na apostila que estudo tem uma questao que diz assim:

Escreva um programa que leia uma string, conte quantos caracteres

desta string são iguais a 'a' e substitua os que forem iguais a 'a' por 'b'. O

programa deve imprimir o número de caracteres modificados e a string

modificada.

 

eu fiz isso:

 

#include <stdio.h>
int main()
{
char frase[100];
int i,cont,x;
printf("Digite a frase: ");
gets(frase);
printf("\nA frase digitada foi: %s", frase);
cont=0;
for(i=0; frase[i] != '\0'; i=i+1)
  {
     if( frase[i] == 'a')
     cont = cont+1;
  }
printf("\nO numero de caracteres a = %d", cont);
x=0;
for(i=0; frase[i] != '\0'; i=i+1)
  {
      if( frase[i] == 'a')
      {
      (frase[i] = 'a')=(frase[i] = 'b');
          x = x+1;
      }
      else(frase[i]==frase[i]);
  }
printf("\nA frase e: %s", frase);
printf("\nO numero de caracteres modificado e: %d",x);
getchar();
return(0);
}

Acho que da certo se tu trocar o b por asterisco e colocar mais alguns ifs para as outras vogais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ripper,

ele disse que não pode fazer as comparações "hard-coded":

for(i=0; frase[i] != '\0'; i=i+1)
{
     if( frase[i] == 'a')
     cont = cont+1;
}

Portando, o jeito é escrevermos uma funçãozinha simples, que faz qualquer tipo de troca.

(teu professor pediu pra você não fazer com todos aqueles ifs, pois sua função deve funcionar em todos os casos.)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/** Troca qualquer ocorrencia de algum char de "srch" em "str" por "c"
	
	str e srch devem ser NULL-Terminated.
	
*/
void string_replace_any(char str[], const char srch[], char c);

int main(int argc, char *argv[])
{
char myStr[] = "Fazendo um teste";

        printf("myStr: %s\n", myStr);
	string_replace_any(myStr, "aeiou", '*');
	printf("myStr: %s\n", myStr);


	return 0;
}

void string_replace_any(char str[], const char srch[], char c)
{
char *p_str, *p_srch;

	for (p_str = str; *p_str != '\0'; p_str++)
	{
		for (p_srch = srch; *p_srch != '\0'; p_srch++)
		{
			if ((*p_str) == (*p_srch))
				(*p_str) = c;
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui galera.

Me foquei na resposta de Victor e achei uma ótima solução para o código.

Ta aí a resposta:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char frase[81], letras[11]="aeiouAEIOU";
	char str, srch;
	int indice=0, cont=0, qtdFrase=0;

	printf("Digite a frase: ");
	fflush(stdin);
	gets(frase);
	qtdFrase=strlen(frase);
	printf("A frase tem %i caracteres.\n",qtdFrase);

	for(indice=0;indice<qtdFrase;indice++)
	{
		str=frase[indice];
		for(cont=0;cont<=10;cont++)
		{
			srch=letras[cont];
			if(str==srch)
				str='*';
		}
		frase[indice]=str;
	}

	puts(frase);
	system("pause");
	return  0;
}

Obrigado a todos pela ajuda.

[=)]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Léo,

 

Não use system("pause") nem fflush(stdin).

São erros relativamente graves na programação em C.

http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/

 

De resto, ainda bem que funcionou da forma que precisavas! =D

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.