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

Programa simples


G4BRI33L

Pergunta

Estou tentando fazer com que o programa realize a soma das variáveis apenas se os números inteiros forem iguais ou maiores que zero. Segue o trecho que escrevi:

#include <iostream>

using namespace std;

int condicional(int a, int b, int x){
    x=0
    if(a||b<x){
        cout << "Falha no sistema";
    }
    return cout;
}

int main() {

    int a;
    int b;
    int soma;

    cout << "Enter number\n";
    cin >> a;

    condicional(a);

    cout << "Enter number\n";
    cin >> b;

    soma = a + b;
    cout << "Igual a " << soma;

}

Olhando agora, me pergunto se a função return pode enviar códigos de saída também, além de variáveis. O que mais esta função pode retornar?

EDITADO: erros gramaticais e tag errada para o código

Editado por G4BRI33L
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O problema é aqui:

int condicional(int a, int b, int x){
    x=0
    if(a||b<x){
        cout << "Falha no sistema";
    }
    return cout;
}
e nessa linha, o modo de chamar a função:
condicional(a);
Primeiramente, seu código não funciona. A função condicional necessita de 3 argumentos e é chamada apenas com 1 argumento, qual o problema de testar no próprio código main. Segundo: if(a || b<x) é equivalente a if(a) || if(b<x), onde o correto seria:
if(a > 0 && b > 0) ou if(a<=0 || b<=0)
Terceiro: return cout, cout é palavra reservada, caso use using namespace std. Seu código inteiro fica:
int main()
{
cout << "Insira um numero: ";
cin >> a;
cout << "Insira um outro numero: ";
cin >> b;
if(a > 0 && b > 0) cout << "Erro" << endl;
else cout << "A soma vale" << a+b << endl;

return 0;
}
Sobre sua pergunta, sim, uma função pode retornar um código. Em programas grandes todas as funções retornam códigos e as mudanças/retorno de valores em variáveis é feito por referência, como por exemplo:
unsigned int teste(int valor1,int valor2, int& valor_retorno);

Pode ver que o retorno é um unsigned int, onde geralmente

0 é OK, execução sem erros e qualquer outro valor representa um erro

diferente.

Vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Muito bom, amigo!!

mas você inverteu a condicional:

if(a > 0 && b > 0) cout << "Erro" << endl;
para somar apenas os números inteiros maiores do que zero tem que ficar assim:
if(a < 0 && b < 0) cout << "Erro" << endl;
Mudei um pouco a sua ideia para melhorar o resultado, ao invés de somar apenas se os números forem inteiros positivos, imprimir o resultado apenas se este for maior que zero.
int main()
{
    int a;
    int b;
cout << "Insira um numero: ";
cin >> a;
cout << "Insira um outro numero: ";
cin >> b;
if(a+b<0) cout << "Erro" << endl;
else cout << "A soma vale" << a+b << endl;

return 0;
}

Se eu utilizasse o signed ou unsigned int mudaria alguma coisa?

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