Ir ao conteúdo

Posts recomendados

Postado

Boa noite, estou cursando a disciplina de lógica de programação, com linguagem C.

 

Fiz um programa simples com comandos if-else.

 

O problema é o seguinte, defini as condições nos if's e por último deixei um comando no else, só que no fim, o programa sempre acaba executando o comando em else, mesmo sendo a condição verdadeira dentro de algum if. Não sei o que está errado ou faltando. Segue o código.

 

#include <stdio.h>
#include <stdlib.h>
int main() {
	int entrada;
	printf("1.Retirar um livro\n");
	printf("2.Devolver um livro\n");
	printf("3.Renovar a retirada de um livro\n");
	printf("Escolha uma opcao: ");
	scanf("%d",&entrada);
	
	if (entrada==1) {
		printf("Livro retirado com sucesso\n");
	}
	
		if (entrada==2) {
		printf("Livro devolvido com sucesso\n");
	}
	
		if (entrada==3) {
		printf("Livro renovado\n");
	}
	else
	printf("Opcao invalida\n");
	system("pause");
	return 0;
}

No caso, mesmo utilizando o valor 1, por exemplo, o programa escreve a opção a frase "Livro retirado com sucesso", mas também escreve "Opção inválida". O mesmo ocorre nas outras condições.

Postado

O erro se dá porque você está escreveu uma condição após a outra, então o programa testará todas elas e consequentemente retornará um resultado para cara teste. O correto será aninhar os ifs, da seguinte forma:

if(entrada == 1){
	printf("Livro retirado com sucesso\n");
}else if(entrada == 2){
	printf("Livro devolvido com sucesso\n");
}else if(entrada == 3){
	printf("Livro renovado\n");
}else{
	printf("Opcao invalida\n");
}

 

  • Curtir 1
Postado

@Eduardotq16 Olá. Seria interessante em seu código fazer uso do else if ao invés de vários if, dessa forma, somente um bloco é executado. No caso de vários if o fluxo do programa pode cair em uma ou mais condições.

Experimenta isso:

if (entrada == 1) {
    printf("Livro retirado com sucesso\n");
} else if (entrada == 2) {
    printf("Livro devolvido com sucesso\n");
} else if (entrada == 3) {
    printf("Livro renovado\n");
} else
    printf("Opcao invalida\n");

Do modo como está acima, só um dos blocos será executado. Nunca mais de um

 

adicionado 0 minutos depois

@Danie1 Net0 Cara. Foi mais rápido q eu! :atirador:

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