Ir para conteúdo
Fórum Script Brasil
  • 0

Menu com funções


Johnnyje21

Pergunta

Boa tarde pessoal , preciso fazer um menu com algumas opções . O usuário irá digitar dois números e de acordo com esses valores ele irá escolher uma opção para executar na tela . Até a parte de criação do menu e realizar as chamadas das funções foi tudo bem , porém quando peço pra executar uma opção ele retorna um valor errado . Por exemplo se o usuário digitar 3 e 4 como números de entrada e pedir para somar os dois números , o programa exibe o resultado de 42. Acho que eu estou fazendo alguma confusão na hora de passar as informações digitadas pelo usuário... Se alguém puder me dar uma luz, agradeço.

 

#include<stdlib.h>
#include<stdio.h>
#include<locale.h>
int menu(int opcao);
int soma(int a, int b);
int ordem(int maior, int menor);
int num_M(int maior, int menor);
int main()
{
    int n1,n2;
    int opcao=0;
    int chama=0;
    setlocale(LC_ALL,"Portuguese");
    printf("\n Digite um número : ");
    scanf("%i",&n1);
    printf("\n Digite um número : ");
    scanf("%i",&n2);
    chama = menu(opcao);
}

int menu(int opcao)
{
    int maior,menor;
    int n1,n2;
    int result;
    printf("\n-------MENU--------");
    printf("\n 0-SAIR");
    printf("\n 1-Somar dois números");
    printf("\n 2-Exibir o maior número");
    printf("\n 3-Exibir números em ordem decrescente");
    printf("\n Digite uma opção : ");
    scanf("%i",&opcao);
    if(opcao == 1)
    {
      result = soma(n1,n2);
    }
    if(opcao == 2)
    {
     ordem(maior,menor);
    }
    if(opcao == 3)
    {
     num_M( maior,  menor);
    }
}
int soma( int a, int b)
{
    int result ;
    result = a + b;
    printf("\n A soma dos números é : %i",result);
        
}
int ordem(int maior,int menor)
{
    int n1,n2;
    if(n1>n2)
    {
        maior = n1;
        menor = n2;
    }
    else
    {
        maior = n2;
        menor = n1;
    }
    printf("\n O maior número é : %i",maior);
}
int num_M(int maior, int menor)
{
    int n1,n2;
    if(n1>n2)
    {
        maior = n1;
        menor = n2;
    }
    else
    {
        maior = n2;
        menor = n1;
    }
    printf("\n A ordem dos números é : %i\n %i\n",maior,menor);
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá, o que ocorre no seu código é que você não está respeitando o escopo das variáveis.

Você está utilizando uma variável externa à uma função achando que as alterações que uma função faz em outra variável com o mesmo nome surtirá efeito em todo o código, mas isso não vai ocorrer pois cada função tem seu escopo delimitado.

Sua lógica está correta, então observe o código abaixo, pois nele fiz essas alterações.

#include<stdlib.h>
#include<stdio.h>
#include<locale.h>
int menu(int opcao, int n1, int n2);
int soma(int a, int b);
int ordem(int *maior, int *menor, int n1, int n2);
int num_M(int *maior, int *menor, int n1, int n2);
int main()
{
    int n1,n2;
    int opcao=0;
    int chama=0;
    setlocale(LC_ALL,"Portuguese");
    printf("\n Digite um número : ");
    scanf("%i",&n1);
    printf("\n Digite um número : ");
    scanf("%i",&n2);
    chama = menu(opcao, n1, n2);
}

int menu(int opcao, int n1, int n2)
{
    int maior,menor;
    //int n1,n2;
    int result;
    printf("\n-------MENU--------");
    printf("\n 0-SAIR");
    printf("\n 1-Somar dois números");
    printf("\n 2-Exibir o maior número");
    printf("\n 3-Exibir números em ordem decrescente");
    printf("\n Digite uma opção : ");
    scanf("%i",&opcao);
    if(opcao == 1)
    {
      result = soma(n1,n2);
    }
    if(opcao == 2)
    {
     ordem(&maior,&menor, n1, n2);
    }
    if(opcao == 3)
    {
     num_M( &maior,  &menor, n1, n2);
    }
}
int soma( int a, int b)
{
    int result ;
    result = a + b;
    printf("\n A soma dos números é : %i",result);
        
}
int ordem(int *maior,int *menor, int n1, int n2)
{
    //int n1,n2;
    if(n1>n2)
    {
        *maior = n1;
        *menor = n2;
    }
    else
    {
        *maior = n2;
        *menor = n1;
    }
    printf("\n O maior número é : %i",*maior);
}

int num_M(int *maior, int *menor, int n1, int n2)
{
   // int n1,n2;
    if(n1>n2)
    {
        *maior = n1;
        *menor = n2;
    }
    else
    {
        *maior = n2;
        *menor = n1;
    }
    printf("\n A ordem dos números é : %i\n %i\n",*maior,*menor);
}

até mais.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...