Duvida sobre erro em um algoritmo em C

14/10/2018

1

Fiz um programa com o seguinte comando: "Ler nome, sexo e idade. Se sexo for feminino e idade menor que 25, imprime o nome da
pessoa e a palavra “ACEITA”, caso contrario imprimir “NÃO ACEITA”.". Fiz o programa porém quando digito sexo 'feminino' e idade abaixo de 25 ele retorna "Não aceito" ao invés de "Aceito". O que pode tá errado no meu código?

Código:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

int main(){

setlocale(LC_ALL, "Portuguese_Brazil");

char nome[200];
int idade;
char sexo[50];

setbuf(stdin, NULL);

printf("Digite seu nome: ");
gets(nome);

printf("Digite seu sexo: ");
gets(sexo);

printf("Digite sua idade: ");
scanf("%d",&idade);

if(sexo=="feminino" && idade<25){
printf("\\n%s\\n",nome);
printf("Situação: Aceita.\\n");
}else{
printf("\\n%s\\n",nome);
printf("Situação: Não aceita.\\n");
}

return 0;
}

OBS: Não quero apenas outra forma de escrever o programa(mas se quiser pode colocar), quero saber porque esse código está dando errado!
Responder

Posts

Olá boa tarde! Eu dei uma verificada no seu código e percebi que deva ser algo relacionado a comparação de char para char* (to char para charconst), nunca cheguei a lidar com uma situação parecida. Mas segue uma ideia provisória de uma forma para estar utilizando esse programa:
  #include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

int main(){

setlocale(LC_ALL, "Portuguese_Brazil");

char nome[200];
int idade;
int masculino;
int feminino;
int sexo;


setbuf(stdin, NULL);

printf("Digite seu nome: ");
scanf("%s",&nome);

printf("Qual seu sexo?\\n 1- Masculino\\n 2- Feminino\\n  ");
scanf("%d",&sexo);

printf("Digite sua idade: ");
scanf("%d",&idade);

if(sexo==2 && idade <25){
printf("\\n%s\\n",nome);
printf("Situação: Aceita.\\n");
}else{
printf("\\n%s\\n",nome);
printf("Situação: Não aceita.\\n");
}

return 0;
}
Responder