Untitled

mail@pastecode.io avatar
unknown
plain_text
8 months ago
2.7 kB
9
Indexable
Never
#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);

}   
Leave a Comment