Ir ao conteúdo
  • Cadastre-se

C codigo dando erro Ensino médio


Visitante

Posts recomendados

Faça um programa que leia uma frase e indique quantas vogais ‘a’, ‘e’, ‘i’, ‘o’, e ‘u’ tem na frase.

Exemplo de frase: Vou contar as letras

3 vogal(is) a

1 vogal(is) e

0 vogal(is) i

2 vogal(is) o

1 vogal(is) u

 

tá dando tudo errado e não faço a minima ideia de como fazer para indicar o quantas vogais tem na frase.

 

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(){
    char string[50]
    int qtVogais,c,lente;
    qtVogais = 0;
    
    printf("Digite uma frase:")
    
    lente + strlen(string);
    
    for(c = 0; c < lente; c++){
        string[c] = tolower(string[c]);
        if( string[c] == 'a' || string[c] == 'e' || string[c] == 'i' || string[c] == 'o' || string[c] == 'u'){
            
            qtVogais +=1;
            
        }
    }
    
    printf("Nessa frase existe(m) %d vogais(1)", qtVogais);
    
    
    return 0;
}

Link para o comentário
Compartilhar em outros sites

Seu programa não está contando as vogais individualmente conforme o enunciado.

 

Para resolver isso crie 5 variáveis do tipo inteiro (a, e, i ,o, u) e faça a inicialização com zero. Dentro do for que vai percorrer cada caractere da frase, use um switch com toupper() ou tolower() para o caractere que vai ser comparado, crie um case para cada vogal e faça o incremento adequado, depois é só exibir o valor de cada uma dessas variáveis.

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Rebeka disse:

 

tá dando tudo errado e não faço a minima ideia de como fazer para indicar o quantas vogais tem na frase.
 

char string[50] isso aqui não pode, você está declarando uma variável do tipo array de char e chamando ela de string? É muito confuso

eu nem sei se pode fazer isso em C, mas por convenção chame esse array de outra coisa.
 

int qtVogais,c,lente; isso está muito grudado, como um membro aqui falou em outro post, o melhor a fazer é você declarar

as variáveis linha por linha, no começo eu até achei que isso fosse algum recurso de C que dava pra armazenar vários valores simultaneamente mas depois que me liguei que são variáveis do tipo int todas grudadas. E já que você declarou qtVogais já devia ter dito que o valor é zero, ao invés de declarar e mais embaixo colocar o valor, fica meio redundante assim. 

C não é minha linguagem principal mas eu vou tentar fazer em outra e depois eu dou a dica aqui de como resolver.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

34 minutos atrás, Felipecfk disse:

char string[50] isso aqui não pode, você está declarando uma variável do tipo array de char e chamando ela de string? É muito confuso

eu nem sei se pode fazer isso em C, mas por convenção chame esse array de outra coisa.
 

int qtVogais,c,lente; isso está muito grudado, como um membro aqui falou em outro post, o melhor a fazer é você declarar

as variáveis linha por linha, no começo eu até achei que isso fosse algum recurso de C que dava pra armazenar vários valores simultaneamente mas depois que me liguei que são variáveis do tipo int todas grudadas. E já que você declarou qtVogais já devia ter dito que o valor é zero, ao invés de declarar e mais embaixo colocar o valor, fica meio redundante assim. 

C não é minha linguagem principal mas eu vou tentar fazer em outra e depois eu dou a dica aqui de como resolver.

Calma ai, Felipe... Não faz não. Deixa ela fazer.

 

5 horas atrás, Rebeka disse:

@codigo rápido Mas tá errado

@codigo rápido Tá tipo, muito errado


Não é que tá errado. O que fizeram é te mostrar os metodos necessários para você fazer isso. porque você não fez? Nem tentou. você quer a coisa pronta? Alguma coisa dava pra sair, mesmo que não fosse o melhor dos códigos.

porque não começa pequeno? algo como transformar um portugol em C?

vamos la... vamos começar pequeno:

faça um programa que recebe um inteiro e uma palavra e imprima os dois na tela.
Olha:

#include <stdio.h>

int main()
{
	int inteiro;
	printf("Digite um valor inteiro: \n");
	scanf("%i", &inteiro);
	printf("Digitou: %i\n", inteiro);

	char *palavra;
	printf("Digite uma palavra: \n");
	scanf("%s", palavra);
	printf("Digitou: %s\n", palavra);

	return 0;
}


 

1) Agora eu quero que você pesquise na internete o que é um array e como fazer um array em C.
Agora, faça um programa que imprima 4 numeros quais quer de um array na tela.
 

 

#include <stdio.h>

int main()
{
	// apague os \n encontrados e veja o que acontece:
	int array[4] = {2, 4, 5, 7};
	printf("%i\n", array[0]);
	printf("%i\n", array[1]);
	printf("%i\n", array[2]);
	printf("%i\n", array[3]);

	return 0;
}

 

Faça os outros. Pelo menos tente. Mostre o seu portugol:


2) Agora eu quero que você pesquise como fazer condicionais em C. if, else, else if.
Eu quero que você faça um programa que teste se dois numeros que são iguais e mostre se são ou não na tela. E depois quero que teste dois numeros que não são iguais e mostra que não são na tela.

2.1 Agora eu quero que você me explique o que seja os operadores lógicos que podem ser utilizados nas condicionais. Tais como 'ou' mesmo que '||' e o 'e' lógico &&. Por enquanto esses tá bom, depois, mais na frente lhe pergunto sobre outros. Esses dois são os principais.

3) Agora eu quero que você pesquise o que é laço de repetição, ou loop, em C como por exemplo for, while e do-while. Agora eu quero que você popule o array da questão 1 usando os 3 laços de repetição.

Se você responder essas questões nos (eu),  ajudo você no resto. Apenas nos prove que tem interesse em aprender.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, codigo rápido disse:

Calma ai, Felipe... Não faz não. Deixa ela fazer.
 

Sim, eu só estava dando umas dicas na formatação pro código ficar mais limpo. Mas eu já desisti também. Consegui fazer no C# em coisa de 10 min usando o 'foreach' mas o C pra mim é uma linguagem anciã usada por ferreiros, talvez outro dia eu me aventure de novo rsrs.

Link para o comentário
Compartilhar em outros sites

Uma forma simples é declarar um vetor representando as letras do alfabeto parar receber a quantidade de cada letra na frase,

char letras[26] = {0};

 

O incremento para cada posição de acordo com a letra,

char L = tolower(frase[i]);
if(isalpha(L)){
    letras[L - 'a'] += 1;
}

 

E para mostrar a quantidade das vogais,

printf(
    "%d vogal(is) a\n"
    "%d vogal(is) e\n",
    letras['a' - 'a'],
    letras['e' - 'a'],
...

 

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Felipecfk disse:

o C pra mim é uma linguagem anciã usada por ferreiros

Qualquer um pode achar isso, mas não é bem assim.
Eu também curto a arte da ferraria, cutelaria e serralheria. O nome, na verdade, só deu uma mudada porque as coisas evoluiram muito na ferraria e cutelaria. Hoje se chama metalurgia. Mas os metodos ainda são os mesmos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 20/09/2021 às 20:38, Rebeka disse:

Faça um programa que leia uma frase e indique quantas vogais ‘a’, ‘e’, ‘i’, ‘o’, e ‘u’ tem na frase.

Exemplo de frase: Vou contar as letras

3 vogal(is) a

1 vogal(is) e

0 vogal(is) i

2 vogal(is) o

1 vogal(is) u

 

tá dando tudo errado e não faço a minima ideia de como fazer para indicar o quantas vogais tem na frase.

 

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(){
    char string[50]
    int qtVogais,c,lente;
    qtVogais = 0;
    
    printf("Digite uma frase:")
    
    lente + strlen(string);
    
    for(c = 0; c < lente; c++){
        string[c] = tolower(string[c]);
        if( string[c] == 'a' || string[c] == 'e' || string[c] == 'i' || string[c] == 'o' || string[c] == 'u'){
            
            qtVogais +=1;
            
        }
    }
    
    printf("Nessa frase existe(m) %d vogais(1)", qtVogais);
    
    
    return 0;
}

tá certo?

 

#include <iostream>
using namespace std;
#include <string.h>
main()
{
    char  frase[200];
    int  cont,a=0, e=0, i=0, o=0, u=0, tam;
    cout<<"\t\t\n...CONTA VOGAL...\n\n";
    cout<<"\tDigite uma frase: ";
    gets(frase);
    
    tam=strlen(frase);
    
    for(cont=0;cont<=tam;cont++)
    {
    
    if(frase[cont]=='a'||frase[cont]=='A')
        
        a++;
        
    else if(frase[cont]=='e'||frase[cont]=='E')

        e++;
    
    else if(frase[cont]=='i'||frase[cont]=='I')
    
        i++;
    
    else if(frase[cont]=='o'||frase[cont]=='O')
        
        o++;
    
    else if(frase[cont]=='u'||frase[cont]=='U')
    
        u++;
    
}
    cout<<"\nA frase: ["<<frase<<"] tem: "<<a<<" vogal(is) 'A'\n";        
    cout<<"\nA frase: ["<<frase<<"] tem: "<<e<<" vogal(is) 'E'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<i<<" vogal(is) 'I'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<o<<" vogal(is) 'O'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<u<<" vogal(is) 'U'\n";
    system("pause");
    
}

23 horas atrás, codigo rápido disse:

Qualquer um pode achar isso, mas não é bem assim.
Eu também curto a arte da ferraria, cutelaria e serralheria. O nome, na verdade, só deu uma mudada porque as coisas evoluiram muito na ferraria e cutelaria. Hoje se chama metalurgia. Mas os metodos ainda são os mesmos.

tá certo?

 

#include <iostream>
using namespace std;
#include <string.h>
main()
{
    char  frase[200];
    int  cont,a=0, e=0, i=0, o=0, u=0, tam;
    cout<<"\t\t\n...CONTA VOGAL...\n\n";
    cout<<"\tDigite uma frase: ";
    gets(frase);
    
    tam=strlen(frase);
    
    for(cont=0;cont<=tam;cont++)
    {
    
    if(frase[cont]=='a'||frase[cont]=='A')
        
        a++;
        
    else if(frase[cont]=='e'||frase[cont]=='E')

        e++;
    
    else if(frase[cont]=='i'||frase[cont]=='I')
    
        i++;
    
    else if(frase[cont]=='o'||frase[cont]=='O')
        
        o++;
    
    else if(frase[cont]=='u'||frase[cont]=='U')
    
        u++;
    
}
    cout<<"\nA frase: ["<<frase<<"] tem: "<<a<<" vogal(is) 'A'\n";        
    cout<<"\nA frase: ["<<frase<<"] tem: "<<e<<" vogal(is) 'E'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<i<<" vogal(is) 'I'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<o<<" vogal(is) 'O'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<u<<" vogal(is) 'U'\n";
    system("pause");
    
}

@Midori

tá certo?

 

#include <iostream>
using namespace std;
#include <string.h>
main()
{
    char  frase[200];
    int  cont,a=0, e=0, i=0, o=0, u=0, tam;
    cout<<"\t\t\n...CONTA VOGAL...\n\n";
    cout<<"\tDigite uma frase: ";
    gets(frase);
    
    tam=strlen(frase);
    
    for(cont=0;cont<=tam;cont++)
    {
    
    if(frase[cont]=='a'||frase[cont]=='A')
        
        a++;
        
    else if(frase[cont]=='e'||frase[cont]=='E')

        e++;
    
    else if(frase[cont]=='i'||frase[cont]=='I')
    
        i++;
    
    else if(frase[cont]=='o'||frase[cont]=='O')
        
        o++;
    
    else if(frase[cont]=='u'||frase[cont]=='U')
    
        u++;
    
}
    cout<<"\nA frase: ["<<frase<<"] tem: "<<a<<" vogal(is) 'A'\n";        
    cout<<"\nA frase: ["<<frase<<"] tem: "<<e<<" vogal(is) 'E'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<i<<" vogal(is) 'I'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<o<<" vogal(is) 'O'\n";
    cout<<"\nA frase: ["<<frase<<"] tem: "<<u<<" vogal(is) 'U'\n";
    system("pause");
    
}

Link para o comentário
Compartilhar em outros sites

@Rebeka Seu código está compilando e retornando a quantidade de vogais. Mas o compilador apresenta alguns warnings e deve ter te alertado sobre a função gets (se está programando em C++ normalmente se usa o comando cin para pegar a entrada, ou pode usar fgets como fiz no código abaixo em C). Acho que essa quantidade de variáveis poderiam ser substituídas por um vetor. Outra forma de resolver poderia ser como comentei, p.ex,

 

#include <stdio.h>
#include <ctype.h>

#define Indice(x)(x - 'a')

int main(void){
    int letras[26] = {0};
    char frase[200];
    
    printf("Frase: ");
    fgets(frase, 200, stdin);
    
    for(int i = 0; frase[i]; i += 1){
        char L = tolower(frase[i]);
        if(isalpha(L)){
            letras[Indice(L)] += 1;
        }
    }
    
    printf(
        "%d vogal(is) a\n"
        "%d vogal(is) e\n"
        "%d vogal(is) i\n"
        "%d vogal(is) o\n"
        "%d vogal(is) u\n",
        letras[Indice('a')],
        letras[Indice('e')],
        letras[Indice('i')],
        letras[Indice('o')],
        letras[Indice('u')]
    );
    return 0;
}
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Eu acho a galera aqui gente boa de mais... Eu não sou benevolente assim porque quando celular explode sem razão aparente ou predio cai por erro de calculo é porque os pivetes das faculdades ficam pagando outros pra fazerem exercicios ou trabalhos pra eles.
Eu espero que seu professor tenha pelo menos a competencia pra ver se você copiou isso da internete.

Link para o comentário
Compartilhar em outros sites

Em 21/09/2021 às 11:23, codigo rápido disse:

Qualquer um pode achar isso, mas não é bem assim.
Eu também curto a arte da ferraria, cutelaria e serralheria. O nome, na verdade, só deu uma mudada porque as coisas evoluiram muito na ferraria e cutelaria. Hoje se chama metalurgia. Mas os metodos ainda são os mesmos.

Sim claro, não estou falando mal da linguagem mesmo porque ela tem suas vantagens. Só estou dizendo que requer um conhecimento a mais que eu não possuo porque sou mimado por linguagens orientadas a objetos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Felipecfk disse:

Sim claro, não estou falando mal da linguagem mesmo porque ela tem suas vantagens. Só estou dizendo que requer um conhecimento a mais que eu não possuo porque sou mimado por linguagens orientadas a objetos.

ok. também não quero que pense que fiz um julgamento. a gente vai aprendendo com o tempo. continue firme.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...