Untitled
unknown
plain_text
2 years ago
2.7 kB
14
Indexable
#include <stdio.h>
int contaVogais (char *s) // == char s[] ?
{
int i;
int contar = 0;
for (i = 0; s[i]!='\0';i++)
{
if(s[i] == 'a'||s[i] == 'e'||s[i] == 'i'||s[i] == 'o'||s[i] == 'u')// n estou a ver as maiusculas
{
contar+=1;
}
}
return contar;
}
int retiraVogaisRep (char *s)
{
int contar, i,j = 0;
char aux [50];
char pc;
for ( i = 0; s[i] != '\0'; i++)
{
pc = s[i];
if(s[i] == 'a'||s[i] == 'e'||s[i] == 'i'||s[i] == 'o'||s[i] == 'u')
{
if (s[i+1] != pc)
{
aux[j] = s[i];
j++;
}
else
{
contar++;
}
}
else
{
aux[j] = s[i];
j++;
}
}
aux[j] = '\0'; //colocar end of string no final
printf("%d %s\n", contar,aux);
}
int retiraVogaisRep2 (char *s)
{
int contar,i,j = 0;
char pc;
for ( i = 0; s[i] != '\0'; i++)
{
pc = s[i];
if(s[i] == 'a'||s[i] == 'e'||s[i] == 'i'||s[i] == 'o'||s[i] == 'u')
{
if (s[i+1] == pc)
{
contar++;
for(j = i; s[j]!='\0';j++)
{
s[j] = s[j+1];
}
i--; // importante para o i ficar na mesma posição do indice depois de remover a vogal. depois deste loop acabar i é incrementado ali em cima
// mas como desloquei todos os chars para a esquerda tenho de garantir que permanece na mesma posição para ver a vogal que esta a seguir
// se apenas houvesse 2 vogais seguidas funcionava na mesma sem i--;
}
}
}
printf("%d %s",contar,s);
}
int duplicaVogais (char *s)
{
int contar,i,j = 0;
char pc;
char aux [50];
for (i = 0, j = 0; s[i] != '\0'; i++)
{
aux[j++] = s[i]; // é equivalente a aux[j] = s[i]; e depois fazer j++;
if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u')
{
aux[j] = s[i];
j++;
}
}
aux[j] = '\0';
printf("\n%s",aux);
}
int main ()
{
char c [50]= "Estaa e umaa string coom duuuplicadoos";
// Strings sao sempre listas de chars. Posso definir um tamanho qq (nunca inferior ao tamanho da string) ou
//deixar o compilador definir automaticamente
printf("%d\n",contaVogais (c));
retiraVogaisRep(c);
char cc [50]= "Estaa e umaa string coom duuuplicadoos";
retiraVogaisRep2(cc);
char d [50] = "ola sou eu";
duplicaVogais(d);
} Editor is loading...
Leave a Comment