Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jonhhy

Ciclo switch

Mensagens Recomendadas

jonhhy

Boa tarde,

o tema da minha dúvida é fazer um exercício utilizando o switch. Em que utilize a vertente dos case sem necessitar de utilizar o break.

Mas para constantes diferentes os resultados também são diferentes.

Problema:

Enunciado: escreve 1 programa que calcule o imposto pago pelas mulheres e por homens, as mulheres pagam 10% e os homens pagam mais 5% do que as mulheres.

tentativa de programas para solucionarem o problema, mas ao executar não funcionam de maneira eficaz

#include <stdio.h>
main()
{    float salario, taxa=0.10;
   char genero;
   puts("escreva a primeira letra do seu género\n");
   /*scanf("%c"&genero);*/genero=getchar();
   puts("introduza o montante de seu ordenado");
   scanf("%f",&salario);
   switch(genero)
   {
       case 'h':taxa= taxa * 1.5;
       case 'H':
       case 'm': taxa;
       case 'M':
       ;
   }
   printf("o imposto pago pelo usuário é de:%f  \n", salario*taxa);
}

erro: da maneira elaborada por mim a variável taxa não é alterada para os 0.15 ou 15% no caso de ser do sexo masculino o utilizador. o que tenho de alterar?

outra forma adaptada da original:

#include <stdio.h>
main()
{  
   float salario, taxa=0.10;
   char genero;


   puts("introduza o montante de seu ordenado");
   scanf("%f",&salario);

   puts("escreva a primeira letra do seu género\n");
   genero=getchar();


   switch(genero)
   {
       case 'm':
       case 'M':taxa=taxa+0.05;
       case 'f':
       case 'F':taxa= taxa+0.10;
   }
   printf("o imposto pago pelo usuário é de:%.2f  \n", salario*taxa);
}

erro: não deixa ler a variável do género.

Editado por thoga31
Tags code + GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

tens que meter um break depois dos cases:

switch(genero)
{
 case 'm':
 case 'M':taxa=taxa+0.05;
   break;
 case 'f':
 case 'F':taxa= taxa+0.10;
   break;
}


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

tens que meter um break depois dos cases:

o uso dos break's não é obrigatória além de ser um objectivo do enunciado:

Boa tarde,

o tema da minha dúvida é fazer um exercício utilizando o switch. Em que utilize a vertente dos case sem necessitar de utilizar o break.

Mas para constantes diferentes os resultados também são diferentes.

Problema:

Enunciado: escreve 1 programa que calcule o imposto pago pelas mulheres e por homens, as mulheres pagam 10% e os homens pagam mais 5% do que as mulheres.

o segundo código parece teóricamente correcto, tirando os problemas normais de quem está a começar a programar

- função main sem valor de retorno

- nenhum tratamento dos dados de entrada e do seu respectivo buffer (e sim, o "erro" que dizes acontecer, é refente e este ponto)

- identação inexistente

- uso do float em vez do double

este seria o código correcto

#include <stdio.h>

#define CLEAR_INPUT while(getchar() != '\n') /* void */

int main(void)
{  
 double salario, taxa;
 char genero;
 int ok;

 do {
   printf("introduza o montante de seu ordenado : ");
   fflush(stdout);
   ok = scanf("%lf", &salario);
   CLEAR_INPUT;
 } while (!ok);

 do {
     printf("escreva a primeira letra do seu género : ");
     fflush(stdout);
     genero = getchar();
     CLEAR_INPUT;
 } while (genero != 'm' && genero != 'M' && genero != 'f' && genero != 'F');

 switch(genero)
 {
   case 'm':
   case 'M':
     taxa=taxa+0.05;
   case 'f':
   case 'F':
     taxa= taxa+0.10;
 }

 printf("o imposto pago pelo usuário é de: %.2lf\n", salario * taxa);

 return 0;
}

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.