Logo Hardware.com.br
lucaslopesalima
lucaslopesal... Novo Membro Registrado
3 Mensagens 0 Curtidas

Como retornar o programa pro início em C

#1 Por lucaslopesal... 25/02/2021 - 01:54
Boa noite pessoal, estou desenvolvendo uma calculadora em C, sendo que queria saber como que eu faço pra retonar pra pergunta do primeiro valor, caso a entrada seja inválida, pra que o programa simplesmente não se encerre.

Segue o código:
[code=c]#include

int main() {

float v1 = 0;
float v2 = 0;
float operador = 0;

printf("Digite o primeiro valor\n");

scanf("%f", &v1);

printf("Selecione um numero correspondente a operacao desejada: Soma = 0, Subtracao = 1 , Multiplicacao = 2 ou Divisao = 3\n");

scanf("%f", &operador);

printf("Digite o segundo valor\n");

scanf(" %f", &v2);

if(operador == 0 ){

printf("Resultado = %f\n",v1+v2);}

else if(operador == 1){

printf("Resultado = %f\n",v1-v2);}

else if(operador == 2){

printf("Resultado = %f\n",v1*v2);}

else if(operador == 3){

printf("Resultado = %.2f\n",v1/v2);}


return 0;
}[/code]

Nesse caso, quando o usuário digita um número menos que 0 ou maior que 5 no segundo "printf", o programa simplesmente encerra, eu gostaria que ele dissesse que o número escolhido é inválido e voltasse a perguntar.

Desde já, grato!
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
25/02/2021 - 02:29
Pode criar uma variável de controle (flag) para "sinalizar, identificar e controlar" o comportamento do programa.
Daí utilize essa variável para controlar um loop (While, For, etc.)

Deste modo, o programa somente irá "sair" do loop caso a "flag" tiver sinalizado que a entrada era válida. Caso contrário o programa ficará reiniciando continuamente até que o usuário desista de errar.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
andremachado
andremachado Super Zumbi Registrado
3.4K Mensagens 2K Curtidas
#3 Por andremachado
25/02/2021 - 12:27
Seguindo a dica do @esquiloesperto e dando sugestões:
- operador não precisa ser float pode muito bem ser int;
- depois da variável operador, crie uma variável int op_invalido = 1;
- Envolva o resto do código que já escreveu num loop while verificando se op_invalido é igual a 1.
- em cada if coloque op_invalido = 0.
- se possível, troque os ifs por switch...case.
56 6F 63 EA 20 E9 20 6D 75 69 74 6F 20 63 75 72 69 6F 73 6F 2E 2E 2E
----------------------------------------
Acer Aspire E5-471-30DG (Casa)
Samsung Book 550XDA-K07 (Trabalho)
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal