Ir ao conteúdo
  • Cadastre-se

Dúvida no comando switch


osmar.takashi

Posts recomendados

#include <stdio.h>
#include <stdlib.h>
int main()
{
int mes,ano;
printf("Mes:");
scanf("%d",&mes);
printf("Ano:");
scanf("%d",&ano);
switch(mes)
{
case 1: printf("\n31 dias");
break;
case 3: printf("\n31 dias");
break;
case 5: printf("\n31 dias");
break;
case 7: printf("\n31 dias");
break;
case 8: printf("\n31 dias");
break;
case 10: printf("\n31 dias");
break;
case 12: printf("\n31 dias");
break;
}
case 2:
if((ano%400)==0)||((ano%100)!=0)&&((ano%4)==0)
{
printf("\n29 dias.");

else
{
printf("28 dias");
break;
}
case 4:printf("\n30 dias");
break;
case 6:printf("\n30 dias");
break;
case 9:printf("\n30 dias");
break;
case 11:printf("\n30 dias");
break;
default:printf("Mes invalido");
}
system("pause");
}

Pessoal, no código acima na linha 27 o compilador me dá a seguinte mensagem:"27 C:\Dev-Cpp\meses.cpp case label `2' not within a switch statement ". Não estou entendendo o que isso quer dizer.

Na linha 28 também:"28 C:\Dev-Cpp\meses.cpp expected primary-expression before '||' token " Não entendi o erro antes do operador ||.

Na linha 29 outro erro:"29 C:\Dev-Cpp\meses.cpp expected `;' before '{' token "

Agradeço muito quem puder me ajudar. Estou com um livro de C aqui mas mesmo assim não consegui encontrar a solução.

Link para o comentário
Compartilhar em outros sites

Após o comando "break", do "case 12:", você pôs uma chave de fechamento que estaria fechando ali o seu "switch", no "if" do "case 2:" está faltando um parênteses de abertura antes da expressão e um de fechamento no final dela, nesse mesmo "if" está faltando a chave de fechamento desse bloco (antes do "else") e está faltando o comando "break" após o "printf".

Aqui está o código correto:

include <stdio.h>
#include <stdlib.h>
int main() {

int mes,ano;
printf("Mes:");
scanf("%d",&mes);
printf("Ano:");
scanf("%d",&ano);
switch(mes) {
case 1: printf("\n31 dias");
break;
case 3: printf("\n31 dias");
break;
case 5: printf("\n31 dias");
break;
case 7: printf("\n31 dias");
break;
case 8: printf("\n31 dias");
break;
case 10: printf("\n31 dias");
break;
case 12: printf("\n31 dias");
break;
case 2:
if(((ano%400)==0)||((ano%100)!=0)&&((ano%4)==0)) {
printf("\n29 dias.");
break;
} else {
printf("28 dias");
break;
}
case 4:printf("\n30 dias");
break;
case 6:printf("\n30 dias");
break;
case 9:printf("\n30 dias");
break;
case 11:printf("\n30 dias");
break;
default:printf("Mes invalido");
}

system("pause");
}

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

Na verdade só há obrigatoriedade do uso de chaves nas decisões (if) se esta possuir mais de uma ação no bloco de execução. Isso serve para decisões e laços de repetição.

Ex:

if(cond1)

ação1; //aqui não necessita de {} pois só possui uma ação.

else

{

/*aqui precisa de {} pois tem mais de uma ação, se não colocar ele só vai executar a 1ª linha*/

ação2;

ação3;

}

Link para o comentário
Compartilhar em outros sites

  • 6 anos depois...

alguem pode me ajudar esta dando esse error 

case 2:

#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);

///////////////// entradas digitais///////////////////
int incPin=13;// entrada digital botão incrementa
int decPin=8;// entrada digital botão decrementa
int setPin=7;// entrada digital botão enter
int progPin=10;///entrada digital botão prog

/////////////variáveis///////////
int conta=0;////variável do switch programa
int zero=0;
int estadozero=0;

int prog=0;
int prog1=1;
int setlata1=0;
int setlata2=0;
int enclata1=0;
int declata1=0;
//int conta2=2;
int lata;

void setup(){
pinMode(13,INPUT);
pinMode(8,INPUT);
}
void loop()
{
  if(conta!=prog1)
      {
       lcd.begin(16,2);
       lcd.setCursor(0,0);
       lcd.print("TEMP=   ");
       lcd.setCursor(7,0);
       lcd.print(conta);
       delay(2);
  
 int enc=digitalRead(progPin);
 if (enc!=estadozero)
 {
  if (enc==HIGH)
  {
    conta++;
 }
 }
 }

         
  
//////////////////inserir temperatura da lata 1/////////
switch(conta){
     case 0:
  lcd.begin(16,2);
  lcd.setCursor(0,2);
  lcd.print("Lat 1=   ");
  lcd.setCursor(7,2);
  lcd.print(setlata1);
  delay(2);
 int enc=digitalRead(setPin);
 {
 if (enc!=setPin)
 {
  if (enc==HIGH)
  {
    conta++;   
  }
 }
 }
   delay(2);
 {
   int enc=digitalRead(incPin);
 if (enc!=enclata1)
 {
  if (enc==HIGH)
  {
    setlata1++;
  }
 }
 }
{    
         int dec=digitalRead(decPin);
         if (dec!=declata1)
         {
  if (dec==HIGH)
  {
    setlata1--;
}
 }
}
  break;
   delay(3);
}
 
  case 1:
  
  lcd.begin(16,2);
  lcd.setCursor(0,2);
  lcd.print("Lat 2=   ");
  lcd.setCursor(7,2);
  lcd.print(setlata2);
  delay(2);
  
 int enc=digitalRead(setPin);
 {
 if (enc!=setPin)
 {
  if (enc==HIGH)
  {
    conta++;   
  }
 }
 }
 delay(1);
 {
   int enc=digitalRead(incPin);
 if (enc!=enclata1)
 {
  if (enc==HIGH)
  {
    setlata1++;
  }
 }
 }
{    
         int dec=digitalRead(decPin);
         if (dec!=declata1)
         {
  if (dec==HIGH)
  {
    setlata1--;
}
 }
}
  break;

  
delay(1); 
/////////////////////////encrementa e decrementa/////////////////////////////
}
}
}
 

digo esta dando erro no case 1 alguem pode me dizer aparece essa mensagem

exit status 1
case label '1' not within a switch statement

 

Link para o comentário
Compartilhar em outros sites

então deu não apareceu outra mensagem (exit status 1
jump to case label [-fpermissive]

 

 

int dec=digitalRead(decPin);
         if (dec!=declata1)
         {
  if (dec==HIGH)
  {
    setlata1--;
}
 }
}
  break;
  case 2:
  lcd.begin(16,2);
  lcd.setCursor(0,2);
  lcd.print("Lat 2=   ");
  lcd.setCursor(7,2);
  lcd.print(setla

Link para o comentário
Compartilhar em outros sites

switch(conta){
            case 1:
                   lcd.begin(16,2);
                   lcd.setCursor(0,2);
                   lcd.print("Lat 1=   ");
                   lcd.setCursor(7,2);
                   lcd.print(setlata1);
                   delay(2);
                   int enc=digitalRead(setPin);
       {
             if (enc!=setPin)
       {
             if (enc==HIGH)
       {
             conta++;   
       }
       }
       }
            delay(2);
       {
            int enc=digitalRead(incPin);
            if (enc!=enclata1)
       {
            if (enc==HIGH)
       {
            setlata1++;
       }
       }
       }
       {    
            int dec=digitalRead(decPin);
            if (dec!=declata1)
       {
            if (dec==HIGH)
       {
            setlata1--;
       }
       }
       }
       break;
          delay(2);
       case 2:
       { 
               lcd.begin(16,2);
               lcd.setCursor(0,2);
               lcd.print("Lat 2=   ");
               lcd.setCursor(7,2);
               lcd.print(setlata2);
               delay(2);
       }
               int enc=digitalRead(setPin);
       {
               if (enc!=setPin)
       {
               if (enc==HIGH)
       {
               conta++;   
       }
       }
       }
               delay(1);
       {
               int enc=digitalRead(incPin);
               if (enc!=enclata1)
       {
               if (enc==HIGH)
       {
               setlata1++;
       }
       }
       }
       {    
               int dec=digitalRead(decPin);
               if (dec!=declata1)
       {
               if (dec==HIGH)
       {
               setlata1--;
       }
       }
       }
               break;
 
              delay(1); 
/////////////////////////encrementa e decrementa/////////////////////////////

}
}
 

me ajuda pois é um trabalho da faculdade e o tempo é muito curto

 

Link para o comentário
Compartilhar em outros sites

Tive que verificar as '{ }', mas não testei, espero que funcione: 


switch(conta){
        case 1:
        lcd.begin(16,2);
        lcd.setCursor(0,2);
        lcd.print("Lat 1=   ");
        lcd.setCursor(7,2);
        lcd.print(setlata1);
        delay(2);
        {
            int enc=digitalRead(setPin);
            if (enc!=setPin)
            {
                if (enc==HIGH)
                {
                conta++;
                }
            }
       }
        delay(2);
       {
            int enc=digitalRead(incPin);
            if (enc!=enclata1)
            {
                if (enc==HIGH)
                {
                setlata1++;
                }
            }
       }
       {
            int dec=digitalRead(decPin);
            if (dec!=declata1)
            {
                if (dec==HIGH)
                {
                setlata1--;
                }
            }
       }
       delay(2);
       break;

       case 2:
       {
       lcd.begin(16,2);
       lcd.setCursor(0,2);
       lcd.print("Lat 2=   ");
       lcd.setCursor(7,2);
       lcd.print(setlata2);
       delay(2);
       {
            int enc=digitalRead(setPin);
            if (enc!=setPin)
            {
               if (enc==HIGH)
                {
                conta++;
                }
            }
       }
       delay(1);
       {
            int enc=digitalRead(incPin);
            if (enc!=enclata1)
            {
               if (enc==HIGH)
                {
                setlata1++;
                }
            }
       }
       {
            int dec=digitalRead(decPin);
            if (dec!=declata1)
            {
                if (dec==HIGH)
                {
                setlata1--;
                }
            }
        }
        }
        delay(1);
        break;
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!