Jump to content
Fórum Script Brasil
  • 0

Programa simples


G4BRI33L

Question

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

Edited by G4BRI33L
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...