When I execute the commands in the Switch Case, does it quit instead of returning to the Menu?

-2
int main(){
    int tensao, corrente, resistencia, potencia, tempo, cargaeletrica, trabalho, i;

    printf("\nPara calculo de Tensao(resistencia*corrente) digite 1\n\nPara calculo de Potencia(tensao*corrente) digite 2\n\nPara calculo de Corrente(carga eletrica/tempo) digite 3\n\nPara calculo de Tensao de outra Maneira(trabalho/carga eletrica) digite 4\n\nPara calculo de Potencia de Outra Maneira(resistencia*corrente^2) digite 5\n\nPara calculo de Potencia de Outra Maneira(tensao^2/resistencia) digite 6\n\nDigite 7 para sair do Menu!\n\n");
    scanf("%d", &i);

    switch (i){
    case 1:
        printf("Determine o valor de Corrente: ");
        scanf("%d", &corrente);
        printf("Determine o valor de Resistencia: ");
        scanf("%d", &resistencia);
        tensao = resistencia*corrente;
        printf("Valor da Tensao: %d", tensao);
    break;

    case 2:
        printf("Determine o valor de Tensao: ");
        scanf("%d", &tensao);
        printf("Determine o valor de Corrente: ");
        scanf("%d", &corrente);
        potencia = tensao*corrente;
        printf("Valor da Potencia: %d", potencia);
    break;

    case 3:
        printf("Determine o valor de Carga Eletrica: ");
        scanf("%d", &cargaeletrica);
        printf("Determine o valor de Tempo: ");
        scanf("%d", &tempo);
        corrente = cargaeletrica/tempo;
        printf("Valor da Corrente: %d", corrente);
    break;

    case 4:
        printf("Determine o valor de Trabalho: ");
        scanf("%d", &trabalho);
        printf("Determine o valor de Carga Eletrica: ");
        scanf("%d", &cargaeletrica);
        tensao = trabalho/cargaeletrica;
        printf("Valor da Tensao: %d", tensao);
    break;

    case 5:
        printf("Determine o valor de Resistencia: ");
        scanf("%d", &resistencia);
        printf("Determine o valor de Corrente: ");
        scanf("%d", &corrente);
        potencia = resistencia*pow(corrente,2);
        printf("Valor da Potencia: %d", potencia);
    break;

    case 6:
        printf("Determine o valor de Tensao: ");
        scanf("%d", &tensao);
        printf("Determine o valor de Resistencia: ");
        scanf("%d", &resistencia);
        potencia = pow(tensao,2)/resistencia;
        printf("Valor da Potencia: %d", potencia);
    break;

    default:
        printf("Valor Invalido!");

    case 7:
        break;
    }
return 0;
}
    
asked by anonymous 22.08.2018 / 16:12

2 answers

1

To prevent the program from ending, one of the alternatives is to use the while repeat structure with a condition that refers to the while(i != 7) exit option. To prevent the prompt from being filled with information at each loop, the system("cls") function can be used to clear the screen at each loop, creating a more pleasant effect.

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

int main(){

int tensao; 
int corrente;
int resistencia; 
int potencia; 
int tempo; 
int cargaeletrica; 
int trabalho; 
int i = 0;


while(i != 7){

    system("cls");
    printf("\nPara calculo de Tensao(resistencia*corrente) digite 1\n\nPara calculo de Potencia(tensao*corrente) digite 2"
           "\n\nPara calculo de Corrente(carga eletrica/tempo) digite 3"
           "\n\nPara calculo de Tensao de outra Maneira(trabalho/carga eletrica) digite 4"
           "\n\nPara calculo de Potencia de Outra Maneira(resistencia*corrente^2) digite 5"
           "\n\nPara calculo de Potencia de Outra Maneira(tensao^2/resistencia) digite 6"
           "\n\nDigite 7 para sair do Menu!\n\n"
           "Opcao desejada:");
    scanf("%d", &i);

    switch (i){
        case 1:
            printf("Determine o valor de Corrente: ");
            scanf("%d", &corrente);
            printf("Determine o valor de Resistencia: ");
            scanf("%d", &resistencia);
            tensao = resistencia*corrente;
            printf("Valor da Tensao: %d\n", tensao);
            system("PAUSE");
            break;

        case 2:
            printf("Determine o valor de Tensao: ");
            scanf("%d", &tensao);
            printf("Determine o valor de Corrente: ");
            scanf("%d", &corrente);
            potencia = tensao*corrente;
            printf("Valor da Potencia: %d\n", potencia);
            system("PAUSE");
            break;

        case 3:
            printf("Determine o valor de Carga Eletrica: ");
            scanf("%d", &cargaeletrica);
            printf("Determine o valor de Tempo: ");
            scanf("%d", &tempo);
            corrente = cargaeletrica/tempo;
            printf("Valor da Corrente: %d\n", corrente);
            system("PAUSE");
            break;

        case 4:
            printf("Determine o valor de Trabalho: ");
            scanf("%d", &trabalho);
            printf("Determine o valor de Carga Eletrica: ");
            scanf("%d", &cargaeletrica);
            tensao = trabalho/cargaeletrica;
            printf("Valor da Tensao: %d\n", tensao);
            system("PAUSE");
            break;

        case 5:
            printf("Determine o valor de Resistencia: ");
            scanf("%d", &resistencia);
            printf("Determine o valor de Corrente: ");
            scanf("%d", &corrente);
            potencia = resistencia*pow(corrente,2);
            printf("Valor da Potencia: %d\n", potencia);
            system("PAUSE");
            break;

        case 6:
            printf("Determine o valor de Tensao: ");
            scanf("%d", &tensao);
            printf("Determine o valor de Resistencia: ");
            scanf("%d", &resistencia);
            potencia = pow(tensao,2)/resistencia;
            printf("Valor da Potencia: %d\n", potencia);
            system("PAUSE");
            break;

        case 7:
            break;

        default:
            printf("Valor Invalido!\n");
            system("PAUSE");

      }

 }
 return 0;
}
    
26.08.2018 / 17:24
-2

To go back to the menu would require a cycle or even use the goto >, when using a cycle had to put out of switch and only when you press button 7 is that it leaves this cycle. The break causes it to quit all switch{} and so ends the program.

I'm referring to the break

p>

As for example:

/*(...)*/
while(1)
{
  printf("\nPara calculo de Tensao(resistencia*corrente) digite 1\n\nPara calculo de Potencia(tensao*corrente) digite 2\n\nPara calculo de Corrente(carga eletrica/tempo) digite 3\n\nPara calculo de Tensao de outra Maneira(trabalho/carga eletrica) digite 4\n\nPara calculo de Potencia de Outra Maneira(resistencia*corrente^2) digite 5\n\nPara calculo de Potencia de Outra Maneira(tensao^2/resistencia) digite 6\n\nDigite 7 para sair do Menu!\n\n");
  scanf("%d", &i);
  switch(i){
  /*(...)*/
   case 7:
    break;
   default:
    printf("Valor Invalido!");
    break;
  }
if(i==7)
  break;
//limpar tela
}

To make it look better, it should clean, you can use a lot of functions to do this clean, I refer to StackOverflowEN .

Using the function goto

 int main(){
  /*(...)*/
 ciclo:
  //limpar tela
  printf("\nPara calculo de Tensao(resistencia*corrente) digite 1\n\nPara calculo de Potencia(tensao*corrente) digite 2\n\nPara calculo de Corrente(carga eletrica/tempo) digite 3\n\nPara calculo de Tensao de outra Maneira(trabalho/carga eletrica) digite 4\n\nPara calculo de Potencia de Outra Maneira(resistencia*corrente^2) digite 5\n\nPara calculo de Potencia de Outra Maneira(tensao^2/resistencia) digite 6\n\nDigite 7 para sair do Menu!\n\n");
  scanf("%d", &i);
  switch(i){
  /*(...)*/
   case 7:
    goto fim;
   default:
    printf("Valor Invalido!");
    break;
  }
goto ciclo;

fim:
return 0;
}

How to use C switch

    
22.08.2018 / 16:21