Ir ao conteúdo

Posts recomendados

Postado

Fala galera tudo bem? 

Estou no primeiro ano do curso de informática e preciso fazer um algoritmo que leia o salário de um vendedor e some sua comissão de acordo com o total de vendas porém sempre dá esse erro, alguém da um help ae :D

#include <stdio.h>

int main()
{
    // VARIAVEIS
    float sfixo;
    float stotal;
    int tv;


    // INICIO
    printf ("Digite o salario do vendedor:\n");
    scanf ("%f",&sfixo);
    printf ("Digite o total de vendas do vendedor:\n");
    scanf ("%i",&tv);

    if (tv<=10000);
    stotal=sfixo+(tv*3/100);
    printf("O salario do vendedor e de:%f",stotal);
    else if (tv >10000 && tv <= 50000);
    stotal=sfixo+(tv*5/100);
    printf("O salario do vendedor e de:%f",stotal);
    else (tv>50000);
    stotal=sfixo+(tv*10/100);
    printf("O salario do vendedor e de:%f",stotal);
    

    return 0;
}

 

  • Curtir 1
Postado

@MatheusINF      você não colocou as chaves  { }  no if  e tudo bem ele funciona sem elas, mas só uma linha depois do if, mas  quando você colocou o else já havia passado duas linhas por isso o erro .  então para corrigir adicione as chaves assim :

scanf ("%i",&tv);
if (tv<=10000){    /* aqui precisa das chaves pois tem mais de uma linha dentro do if */
    stotal=sfixo+(tv*3/100);
    printf("O salario do vendedor e de:%f",stotal);
}
else{
    if(tv >10000 && tv <= 50000){/* aqui precisa das chaves pois tem mais de uma linha */
        stotal=sfixo+(tv*5/100);
        printf("O salario do vendedor e de:%f",stotal);
    }
    else{ 
        if(tv>50000)       /*  aqui não tem chave mas funciona */
            stotal=sfixo+(tv*10/100);           
    }
}

 

  • Curtir 2
  • Amei 1
  • Membro VIP
Postado

Olá.

 

1#

Sempre mantenha o código indentado. Segue código original:

#include <stdio.h>
int main() {
    // VARIAVEIS
    float sfixo;
    float stotal;
    int tv;

    // INICIO
    printf ("Digite o salario do vendedor:\n");
    scanf ("%f",&sfixo);
    printf ("Digite o total de vendas do vendedor:\n");
    scanf ("%i",&tv);

    if (tv<=10000);
        stotal=sfixo+(tv*3/100);
    printf("O salario do vendedor e de:%f",stotal);
    else if (tv >10000 && tv <= 50000);
        stotal=sfixo+(tv*5/100);
    printf("O salario do vendedor e de:%f",stotal);
    else (tv>50000);
        stotal=sfixo+(tv*10/100);
    printf("O salario do vendedor e de:%f",stotal);
    return 0;
}

Perceba que só pela indentação, já identificava a falta do "{}".... e como citado, não tem ";" após a expressão.

 

 

 

2#

Como as correções já foram citadas, segue um código referência:

#include <stdio.h>
int main() {
    // VARIAVEIS
    float sfixo;
    float stotal;
    int tv;

    // INICIO
    printf ("Digite o salario do vendedor:\n");
    scanf ("%f",&sfixo);
    printf ("Digite o total de vendas do vendedor:\n");
    scanf ("%i",&tv);
    if (tv <= 10000) {
        stotal=sfixo+(tv*3/100);
        printf("O salario do vendedor e de:%f",stotal);
    }
    else {
        if (tv > 10000 && tv <= 50000) {
            stotal=sfixo+(tv*5/100);
            printf("O salario do vendedor e de:%f",stotal);
        }
        else {
            if (tv > 50000) {
                stotal=sfixo+(tv*10/100);
            }
        }
    }
    printf("O salario do vendedor e de:%f",stotal);
    return 0;
}

 

 

 

  • Curtir 1
  • Amei 1
Postado

Sim cara vou começar fazer é que na aula o professor falou que quando tem mais de 1 if, colocar "else if", ai o código fica meio estranho, mais vou começar fazer assim, valeu

  • Curtir 2
  • Membro VIP
Postado

3#

Na dúvida, insira chaves em tudo, mas para efeito didático, abaixo indico onde precisa e NÃO precisa de chaves.

include <stdio.h>
int main() {
    // VARIAVEIS
    float sfixo;
    float stotal;
    int tv;

    // INICIO
    printf ("Digite o salario do vendedor:\n");
    scanf ("%f",&sfixo);
    printf ("Digite o total de vendas do vendedor:\n");
    scanf ("%i",&tv);
    if (tv <= 10000) { //aqui precisa de chaves, pois só tem uma instrução dentro do else
        stotal=sfixo+(tv*3/100);
        printf("O salario do vendedor e de:%f",stotal);
    }
    else { //aqui NÃO precisa de chaves, pois só tem uma instrução dentro do else
        if (tv > 10000 && tv <= 50000) { //aqui precisa de chaves, pois só tem uma instrução dentro do else
            stotal=sfixo+(tv*5/100);
            printf("O salario do vendedor e de:%f",stotal);
        }
        else { //aqui NÃO precisa de chaves, pois só tem uma instrução dentro do else
            if (tv > 50000) { //aqui NÃO precisa de chaves, pois só tem uma instrução dentro do else
                stotal=sfixo+(tv*10/100);
            }
        }
    }
    printf("O salario do vendedor e de:%f",stotal);
    return 0;
}

 

 

4#

O último if não é necessário, pois necessariamente será maior que 50000, logo, não faz sentido verificar.

 

Ficaria assim:

    else {
        if (tv > 10000 && tv <= 50000) {
            stotal=sfixo+(tv*5/100);
            printf("O salario do vendedor e de:%f",stotal);
        }
        else {
            stotal=sfixo+(tv*10/100);
        }
    }

 

5#

Segue código resumido:
 

#include <stdio.h>
int main() {
    // VARIAVEIS
    float sfixo;
    float stotal;
    int tv;

    // INICIO
    printf ("Digite o salario do vendedor:\n");
    scanf ("%f",&sfixo);
    printf ("Digite o total de vendas do vendedor:\n");
    scanf ("%i",&tv);
    if (tv <= 10000) {
        stotal=sfixo+(tv*3/100);
        printf("O salario do vendedor e de:%f",stotal);
    }
    else
        if (tv > 10000 && tv <= 50000) {
            stotal=sfixo+(tv*5/100);
            printf("O salario do vendedor e de:%f",stotal);
        }
        else
            stotal=sfixo+(tv*10/100);
    printf("O salario do vendedor e de:%f",stotal);
    return 0;
}

 

 

6#

25 minutos atrás, MatheusINF disse:

Sim cara vou começar fazer é que na aula o professor falou que quando tem mais de 1 if, colocar "else if", ai o código fica meio estranho, mais vou começar fazer assim, valeu

 

Não é bem assim... depende do contexto. É necessário entender com o fluxo funciona.

 

Veja, primeiro você aprende if. Ele serve para "selecionar trechos" ou o mesmo que "desvia o fluxo padrão do programa", ou seja, sem eles, os programa seria executados apenas em sequência... mas, como observado, as vezes é necessário "seguir um caminho diferente de acordo com o contexto", ou seja, no seu caso, "a depender do valor da TV, você precisa aplicar um desconto diferente"...

 

Então... no seu programa, você poderia usar várias if... um para cada um... sem os else. Correto?

 

O else entra apenas para "ajudar o computador a não perder tempo e também simplificar a estrutra... veja:

 

 

Sem o else (senão), temos essa estrutura:

se (tv<10000) então
   faço algo
se (tv>=10000) e (tv<50000) então
   faço outro algo
se (tv>=50000)
  faço um terceiro algo

Supomos que a TV custa 15000.

 

O preço da TV é menor que 10k? não, pulo ("não desvio")

O preço da TV é maior que 10k e menor que 50k? sim, desvio e faço o que tenho que fazer

O preço da TV é maior que 50k? não.

 

Então, perceba que mesmo sendo desviado no segundo se (if), o computador perguntou se é maior que 50k... oras! como um número pode ser ao mesmo tempo menor que 50k e maior igual a 50k?   É IMPOSSÍVEL... pelo menos no que definimos na matemática... concorda?

 

Daí surge o "senão" (else), ou seja, como uma condição anterior automaticamente inviabiliza a verificação das condições posteriores, ela fará que o computador pule para o final...

 

Ou seja, OU entra no if, OU entra no senão...

 

se (tv<10000) então
   faço algo
senao
    se (tv>=10000) e (tv<50000) então
   	    faço outro algo
    senao
        faço um terceiro algo

Entende?

 

Logo:

25 minutos atrás, MatheusINF disse:

o professor falou que quando tem mais de 1 if

Isso só seria correto, quando os if tem certo tipo de relação entre si. Como é o caso do teu algoritmo. Ao mesmo tempo que o último não precisa de if, pois entra outro conceito... (que não lembro o nome agora, mas que é ), que necessariamente a condição verificada sempre será válida, logo, não sendo necessário verificar. Seria como perguntar "!1 < 2 ?".

 

 

***

 

Qualquer dívida é só perguntar.

  • Curtir 2
  • Amei 1
  • Membro VIP
Postado

Beleza... qualquer dúvida é só postar.

 

obs.:

if (dúvida for nesse mesmo exercício) {
   posta aqui nesse tópico
} else {
   if (dúvida for em outro exercío novo) {
      cria um novo tópico para o exercício
   }
}  

 

  • Curtir 2

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!