Jump to content
Fórum Script Brasil
  • 0

Manipulação de Strings - vogais


DgoH

Question

Preciso de ajuda com o seguinte trabalho, em C :

Enunciado

Implemente um programa em C que recebe como entrada uma string composta por no máximo 100 vogais, e os pesos (valores inteiros) de cada uma das vogais. A partir daí o programa deve calcular o peso da string digitada e imprimir o resultado na tela. O peso da string deve ser composto pelo somatório dos pesos de todas as vogais que a compõem. Devem ser consideradas as vogais minusculas e maiúsculas. Caso sejam digitados caracteres diferentes de vogais, o programa deve apresentar uma mensagem de erro na tela, informando que foi digitado um valor inválido.

Veja o exemplo da execução abaixo. Em negrito estão os valores de entrada digitados pelo usuário.

Digite a String apenas com vogais <enter>: AeaIoOiu

Digite o peso das vogais a e i o u

Peso 1a vogal <enter>: 1

Peso 2a vogal <enter>: 2

Peso 3a vogal <enter>: 0

Peso 4a vogal <enter>: 3

Peso 5a vogal <enter>: 4

Peso Total da String = 14

Atenção: O cálculo é realizado como segue:

peso(AeaIoOiu)=

peso(A)+peso(e)+peso(a)+peso(I)+peso(o)+peso(O)+peso(i)+peso(u)=

1+2+1+0+3+3+0+4 = 14

O que já fiz foi,

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char vogal[100]; //declara variável string

int tamanho;

int i,total;

vetor[5];

main ()

{

printf("Digite a String apenas com vogais: ");

gets(vogal);

printf("digite o peso das vogais : a e i o u\n");

for(i=0;i<5;i++){

printf("digite o peso da vogal %d\n",i);

scanf("%d",&vetor);

}

for(i=0;i<strlen(vogal);i++){

if((vogal=='a')||(vogal)=='A'){

}

else if((vogal=='e')||(vogal)=='E'){

}

else if((vogal=='i')||(vogal)=='I'){

}

else if((vogal=='o')||(vogal)=='O'){

}

else if ((vogal=='u')||(vogal)=='U'){

}

else{

printf("a string digitada não é vogal");

}

}

}

preciso faze-lo apenas com strings, nada de ponteiros e tal.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Tem nada de difícil.

1º: Leia a string;

2º: Leia os pesos de cada vogal;

3º: Percorra a string. Ao encontrar uma vogal (independente de ser maiúscula ou minúscula), some o peso da mesma á uma variável 'soma', inicializada com zero no momento da declaração.

Três passos fáceis.

Você pode fazer algumas modificações, como converter tudo para minúsculas antes de percorrer, por exemplo.

Link to comment
Share on other sites

  • 0

poise, eu não sei bem como calcular o peso total das vogais ao final, poderia descrever?

Tem nada de difícil.

1º: Leia a string;

2º: Leia os pesos de cada vogal;

3º: Percorra a string. Ao encontrar uma vogal (independente de ser maiúscula ou minúscula), some o peso da mesma á uma variável 'soma', inicializada com zero no momento da declaração.

Três passos fáceis.

Você pode fazer algumas modificações, como converter tudo para minúsculas antes de percorrer, por exemplo.

Link to comment
Share on other sites

  • 0

Armazene os pesos num vetor, e vá percorrendo a string. Quando achar uma vogal, pegue o valor e some á uma variável 'soma'.

Fiz dois exemplos:

#include <stdio.h>

int main(){
    char str[101], vogais[5] = {'A', 'E', 'I', 'O', 'U'};
    unsigned short int pesos[5], i, j, somaTotal = 0;

    printf("Digite a string: ");
    gets(str);

    for(i = 0; i < 5; i++){
        printf("Peso [%c]: ", vogais[i]);
        scanf("%hu", &pesos[i]);
    }

    for(i = 0; str[i] != ''; i++){
        str[i] -= (str[i] > 96 && str[i] < 123) ? 32 : 0;
        for(j = 0; j < 5; j++)
                somaTotal += (str[i] == vogais[j]) ? pesos[j] : 0;
    }

    printf("\nSoma total: %hu.\n", somaTotal);

    return(0);
}
#include <stdio.h>

int main(){
    char str[101], vogais[5] = {'A', 'E', 'I', 'O', 'U'};
    unsigned short int peso, i, j, somaTotal = 0;

    printf("Digite a string: ");
    gets(str);

    for(i = 0; str[i] != ''; i++)
        str[i] -= (str[i] > 96 && str[i] < 123) ? 32 : 0;

    for(i = 0; i < 5; i++){
        printf("Peso [%c]: ", vogais[i]);
        scanf("%hu", &peso);
        for(j = 0; str[j] != ''; j++)
            somaTotal += (str[j] == vogais[i]) ? peso : 0;
    }

    printf("\nSoma total: %hu.\n", somaTotal);

    return(0);
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...