Ir ao conteúdo
  • Cadastre-se

Problema com execução da estrutura em C


Season

Posts recomendados

Olá, gostaria de pedir ajuda em uma situação pela qual estou passando, no caso eu fiz um executável em linguagem C, e embora não tenha erro na sintaxe dos comandos estou enfrentando a parada repentina do executável, estou no começo do aprendizado e por isso recorro a pessoas experientes no assunto. 

Aqui segue o código:

 

#include <stdio.h>
#include <locale.h>
main()
{
setlocale (LC_ALL, "Portuguese");
float n1,n2,n3,m;
printf("A nota da avaliação 1 é: \n");
scanf("%f", n1);
printf("A nota da avaliação 2 é: \n");
scanf("%f", n2);
printf("A nota da avaliação 3 é: \n");
scanf("%f", n3);

if (n1<n2 and n1<n3)
    n1=0;
if (n2<n1 and n2<n3)
    n2=0;
if (n3<n1 and n3<n2)
    n3=0;
if (n1=n2=n3)
    n1=0;
m=(n1+n2+n3)/2;    

printf("A média do aluno é: %f",m);
if (m>=7)
    printf("Aluno está aprovado!");
    else
        if(m<7)
            printf("Aluno está reprovado!");
}

 

Desde já, agradeço.

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

@Season      são três erros,  o primeiro é o setlocale, se você quer que ele seja configurado como linguagem português então você precisa remover essa palavra " portuguese " do comando, então ficaria assim :

setlocale (LC_ALL, "");

o segundo erro é na hora de comparar no comando if, se você vai comparar se é igual então você precisa usar dois sinais de igual assim :

if (n1 == n2 && n2 == n3)

e o terceiro erro é que não pode dividir nenhum número por zero, e nem zero por nenhum número , e ali na hora que você vai pegar a média você tem n1=0 + n2 =0 + n3 =0 resultado zero dividido por dois, aí dá erro e fecha o programa .

veja como ficaria seu código com algumas modificações :.

#include <stdio.h>
#include <conio.h>
#include <locale.h>
int main(){
    setlocale (LC_ALL, "");
    float n1,n2,n3,m;
    printf("A Nota da avaliação 1 é: \n");
    scanf("%f",& n1);
    printf("A Nota da avaliação 2 é: \n");
    scanf("%f",& n2);
    printf("A Nota da avaliação 3 é: \n");
    scanf("%f",& n3);
    m=(n1+n2+n3)/3;
    printf("\nA Média Do Aluno é: %.2f\n",m);
    if (m>=7)
        printf("Aluno Está Aprovado!\n\n");
    else
        if(m<7)
            printf("Aluno Está Reprovado!\n\n");
    getch();
    return 0;
}

 

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

Em 8/23/2017 às 20:04, MassakiMsk disse:

tem um quarto erro que é na hora dos scanf a falta do & 

scanf("%f", & n1);

 

Em 8/23/2017 às 20:09, devair1010 disse:

@MassakiMsk    opa é mesmo não notei esse erro, e também tem mais um que é o if (n1<n2 and n1<n3) que está usando a expressão and ao invéz de && então no caso ficaria assim  :


if (n1<n2 && n1<n3)

 

Muito obrigado, pessoal, agora compreendo, mas ali na média, é aquilo mesmo, só que eu não achei forma melhor para fazer, então fiz media=(n1+n2+n3)/2. A minha ideia era a seguinte, eu tenho três avaliações, mas a média é feita por duas, no caso eu pego as duas maiores e descarto a menor, por isso coloco Variável=0, se menor que 7, para não afetar na fórmula da média, e se fossem todos iguais eu excluiria a primeira.

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

@Season    modifiquei seu código por que não havia entendido como ele funcionava, mas agora que você disse, deu para entender, então seu código ficaria assim :

#include <stdio.h>
#include <locale.h>
main(){
    setlocale (LC_ALL, "");
    float n1,n2,n3,m;
    printf("A nota da avaliação 1 é: \n");
    scanf("%f", &n1);
    printf("A nota da avaliação 2 é: \n");
    scanf("%f",&n2);
    printf("A nota da avaliação 3 é: \n");
    scanf("%f",&n3);
    if (n1<n2 && n1<n3)
        n1=0;
    if (n2<n1 && n2<n3)
        n2=0;
    if (n3<n1 && n3<n2)
        n3=0;
    if (n1==n2 && n1==n3)
        n1=0;
    m=(n1+n2+n3)/2;
    printf("\nA média do aluno é: %.2f\n",m);
    if (m>=7)
        printf("Aluno está aprovado!\n\n");
    else
        if(m<7)
            printf("Aluno está reprovado!\n\n");
    getch();
    return 0;
}

 

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

Em 26/08/2017 às 00:27, devair1010 disse:

@Season    modifiquei seu código por que não hivia entendido como ele funcionaria, mas agora que você disse, deu para entender, seu código ficaria assim :


#include <stdio.h>
#include <locale.h>
main(){
    setlocale (LC_ALL, "");
    float n1,n2,n3,m;
    printf("A nota da avaliação 1 é: \n");
    scanf("%f", &n1);
    printf("A nota da avaliação 2 é: \n");
    scanf("%f",&n2);
    printf("A nota da avaliação 3 é: \n");
    scanf("%f",&n3);
    if (n1<n2 && n1<n3)
        n1=0;
    if (n2<n1 && n2<n3)
        n2=0;
    if (n3<n1 && n3<n2)
        n3=0;
    if (n1==n2 && n1==n3)
        n1=0;
    m=(n1+n2+n3)/2;
    printf("\nA média do aluno é: %.2f\n",m);
    if (m>=7)
        printf("Aluno está aprovado!\n\n");
    else
        if(m<7)
            printf("Aluno está reprovado!\n\n");
    getch();
    return 0;
}

 

Senhor, muito obrigado, além de me ajudar ainda me mostrou como fazer o uso do && e ==, valeu mesmo.

  • Curtir 2
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...