Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Conte

Erro no C

Recommended Posts

tenho c na faculdade e estou fazendo um trabalho.

e tem uma questao que e a seguinte:

 

Desenvolva um programa que apresente o menu de opções a seguir:

Menu de opções:

1 – Média aritmética

2 – Média ponderada

3 – Sair

Digite a opção desejada:

Na opção 1: receber duas notas, calcular e mostrar a média aritmética.

Na opção 2: receber três notas e seus respectivos pesos, calcular e mostrar a média

ponderada.

Na opção 3: sair do programa.

Verifique a possibilidade de opção inválida. Neste caso, o programa deverá mostrar

uma mensagem.

 

e o codigo fiz assim:

 

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int main()
{
    int cod, nota1, nota2, nota3, nota4, nota5, peso1, peso2, peso3, somacod1, somacod2, mar, mpon;
    
    printf("1 - Media aritmetica. \n 2 - Media ponderada. \n 3 - Sair do Programa. \n");
    printf("Digite a opcao desejada");
    scanf("%i", &cod);
    
       if(cod==0 && cod>3) {
                 printf("Codigo invalido");
                 }
       
       if(cod==1) {
                   printf("Digite a primeira nota");
                   scanf("%i", &nota1);
                   printf("Digite a segunda nota");
                   scanf("%i", nota2);
                   
                   somacod1 = nota1 + nota2;
                   }
        if(cod==2) {
                   printf("Digite a primeira nota");
                   scanf("%i", &nota3);
                   printf("Digite o primeiro peso");
                   scanf("%i", &peso1);
                   printf("Digite a segunda nota");
                   scanf("%i", nota4);
                   printf("Digite o segundo peso");
                   scanf("%i", &peso2);
                   printf("Digite a terceira nota");
                   scanf("%i", nota5);
                   printf("Digite o terceiro peso");
                   scanf("%i", &peso3);
                   
                   somacod2 = nota3*peso1 + nota4*peso2 + nota5*peso3;
                   }
        if(cod==3) {
                  getche();
                  }
        mar = somacod1 / 2;
        printf("A media aritmetica é: %i \n", mar);
        mpon = somacod2 / peso1+peso2+peso3;
        printf("A media ponderada e: %i \n", mpon);  
        
        return 0;
}

so que quando digito o codigo 1, digito as 2 notas e dou enter ele fecha o programa e nao mostra a media, o que pode estar acontecendo???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, n fiz muitas alterações, seu erro principal era pq você esqueceu o '&' na hora da leitura:

#include<stdio.h>
#include<stdlib.h>

int main(){
    int cod, nota1, nota2, nota3, nota4, nota5, peso1, peso2, peso3, somacod1, somacod2, mar, mpon;
    printf("1 - Media aritmetica. \n2 - Media ponderada. \n3 - Sair do Programa. \n");
    while(1){
        printf("Digite a opcao desejada: ");
        scanf("%d", &cod);
        if(cod<=0 || cod>3) printf("Codigo invalido\n");
        else break;
    }
    if(cod==1){
        printf("Digite a primeira nota: ");
        scanf("%d", &nota1);
        printf("Digite a segunda nota: ");
        scanf("%d", &nota2);
        somacod1 = nota1 + nota2;
        mar = somacod1 / 2;
        printf("A media aritmetica %c: %d \n", 130, mar);
    }
    else if(cod==2) {
        printf("Digite a primeira nota: ");
        scanf("%d", &nota3);
        printf("Digite o primeiro peso: ");
        scanf("%d", &peso1);
        printf("Digite a segunda nota: ");
        scanf("%d", &nota4);
        printf("Digite o segundo peso: ");
        scanf("%d", &peso2);
        printf("Digite a terceira nota: ");
        scanf("%d", &nota5);
        printf("Digite o terceiro peso: ");
        scanf("%d", &peso3);
        somacod2 = nota3*peso1 + nota4*peso2 + nota5*peso3;
        mpon = somacod2 / peso1+peso2+peso3;
        printf("A media ponderada %c: %d \n", 130, mpon);
    }
    else return 0;
    return 0;
}

melhor usar o tipo float para média neh?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duas dicas, além do fato de a média ter que ser float:

 

1. Use vetores. Ao invés de declarar int nota1, nota2, nota3, nota4..., declare int nota[5]. A partr daí, acesse os offsets de 0 a 4;

2. scanf() deixa um "\n" em stdin após jogar o valor convertido do texto pra variável que você especificou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

um outro que eu fiz esta fechando.

 

a questao e a seguinte:

 

Desenvolva um programa que receba:

· O código de um produto comprado, um número inteiro entre 1 e 10 (não aceitar

outros valores);

· O peso do produto em quilos;

· O código do país de origem, um número entre 1 e 3 (não aceitar outros valores).

Tabelas:

Código do país de origem Imposto

1------------------------- 0%

2------------------------- 15%

3------------------------- 25%

 

Código do produto Preço por grama

1 a 4 ------------------------- 10

5 a 7 ------------------------- 25

8 a 10 ------------------------ 35

 

Calcule e mostre:

· O peso do produto convertido em gramas;

· O preço total do produto;

· O valor do imposto, sabendose

que ele é cobrado sobre o preço total do produto

comprado e depende do país de origem;

· O valor total, preço total do produto mais imposto.

 

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int main()
{
    int cod, preco, codpais, pesogramas, precototal, valorimposto;
    float peso;
    
      printf("Digite o codigo do produto");
      scanf("%d", &cod);
      printf("O Peso do produto em quilos");
      scanf("%f", peso);
      printf("Codigo do pais de origem");
      scanf("%d", codpais);
      
         pesogramas = peso * 1000;
             
             if(cod>=1 && cod<=4) {
                            preco = pesogramas * 10;
                            }
             if(cod>=5 && cod<=7) {
                            preco = pesogramas * 25;
                            }
             if(cod>=8 && cod<=10) {
                            preco = pesogramas * 35;
                            }
         
             if(codpais==1) {
                            precototal = preco * 0/100;
                            valorimposto = precototal - preco;
                            }
             if(codpais==2) {
                            precototal = preco * 15/100;
                            valorimposto = precototal - preco;
                            }
             if(codpais==3) {
                            precototal = preco * 25/100;
                            valorimposto = precototal - preco;
                            }
             
             printf("O peso do produto em gramas e: \n %d", pesogramas);
             printf("O Preco total do produto e: \n %d", preco);
             printf("O valor do imposto e: \n %d", valorimposto);
             printf("O Preco do produto mais impostos: \n %d", precototal);
         
         getche();
         return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu bati o olho enquanto a página rolava e vi 2 problemas:

 

- ele ainda não entendeu que scanf() precisa do endereço da variável que vai armazenar o formato especificado;

- "precototal" tá recebendo uma multiplicação de um valor por 0. Sempre é 0 ali. Depois disso ele ainda subtrai algo disso, ou seja, fica negativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta usar o comando switch olha um exemplo:

 

#include <stdio.h>
#include <conio.h>

main()
{
      float salario, aumento, salario_total;
      int op;
      
      printf("Informe o numero de acordo com o nome\n\n");
      printf("1 - Escriturado\n\n");
      printf("2 - Secretario(a)\n\n");
      printf("3 - Caixa\n\n");
      printf("4 - Gerente\n\n");
      printf("5 - Diretor\n\n");

      printf("\nInforme o cargo: ");
      scanf("%d", &op);
      printf("\n\nInforme o salario: ");
      scanf("%f", &salario);
      
      switch (op){
             case 1:
                  {
                       aumento = salario * 0.50;
                       salario_total = salario + aumento;

                       printf("\nCargo Escriturado\n\n");
                       printf("O aumento foi de: R$%.2f", aumento);
                       printf("\n\nSeu novo salario e: R$%.2f", salario_total);
                  }
                  break;
                  case 2:
                       {
                                   aumento = salario * 0.35;
                                   salario_total = salario + aumento;

                                   printf("\nCargo Secretario(a)\n\n");
                                   printf("O aumento foi de: R$%.2f", aumento);
                                   printf("\n\nSeu novo salario e: R$%.2f", salario_total);
                       }
                       break;
                       case 3:
                            {
                                   aumento = salario * 0.20;
                                   salario_total = salario + aumento;

                                   printf("\nCargo Caixa\n\n");
                                   printf("O aumento foi de: R$%.2f", aumento);
                                   printf("\n\nSeu novo salario e: R$%.2f", salario_total);
                            }
                            break;
                            case 4:
                                 {
                                              aumento = salario * 0.10;
                                              salario_total = salario + aumento;

                                              printf("\nCargo Gerente\n\n");
                                              printf("O aumento foi de: R$%.2f", aumento);
                                              printf("\n\nO novo salario e: R$%.2f", salario_total);
                                 }
                                 break;
                                 case 5:
                                      {
                                               printf("\n\nDiretor nao tem aumento");
                                      }
                                      break;
                                      default:
                                              {
                                                               printf("\n\nOpcao invalida");
                                              }
                                              break;
                  }
                  getch();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.