Ir ao conteúdo

C++ Estou precisando novamente em no auxilio no meu codigo c++


Ir à solução Resolvido por arfneto,

Posts recomendados

Postado

Escreva um programa em C++ que calcula todas as operações aritméticas (+, -, *, /, %) entre dois números inteiros, salvos em duas variáveis locais na função main(), e imprime no console cada resultado.

 

Reescreva o programa do exercício anterior criando uma função para cada operação, que recebe dois números como parâmetros, realiza a operação e imprimi no console o resultado dentro da mesma. Chame cada uma delas dentro da função main(). Obs: das duas maneiras, com e sem função, as operações de divisão ( / ) e de módulo ( % ) devem verificar se o número que irá ser o divisor é zero. Se for, a operação deve exibir a frase “Erro, divisão por zero”.

 

codigo:

 

#include <iostream>

using namespace std;


int soma(int *x, int *y){
    
     int resul= *x += *y;
     return resul;
     
}

int subt(int *x, int *y){
    
     int resultSub= *x -= *y;
     return resultSub; 
     
}

int multi(int *x, int *y){
    
     int resultMulti= *x *= *y;
     return resultMulti;
     
}

int divi(int *x, int *y){
    
     int resultDiv= *x /= *y;
     return resultDiv;
     
}

int modulo(int *x, int *y){
    
     int resultMod= *x % *y;
     return resultMod; 
}

int main(){

int x, y;


cout << "Digite um numero inteiro:"<< endl;
cin >> x;

cout <<"Digite outro numero inteiro:"<< endl;
cin >> y;

int so  = soma(&x,&y);
int sub = subt(&x, &y);
int mul = multi(&x,&y);
int di = divi(&x,&y);
int mod = modulo(&x,&y);

cout << "O resultado da soma = " << so << endl;

cout << "O resultado da subtração = "<< sub << endl;

cout << "O resultado da multiplicação = "<< mul <<endl;


if (y==0){
    
    cout << "Divisão: Erro,divisão por zero "<< endl;
    
    cout << "Módulo: Erro,divisão por zero "<< endl;
    
}else {
    cout << "O resultado da divisão = "<< di << endl;
     cout << "O resultado do modulo = "<< mod << endl;
    
}

return 0;

 

Quando eu vou executar, ele aparece isso 

 

/tmp/1opS9wYIkV.o
Digite um numero inteiro:
10
Digite outro numero inteiro:

0
Floating point exception

  • Solução
Postado

Use o botão code para formatar seu programa. Fica difícil para alguém copiar assim como você fez.

 

Leia os dois valores de uma vez. É mais seguro e melhor para quem usa o programa.

 

Porque usou ponteiros em todo lugar? não é preciso: os argumentos são pequenos, mínimos. E em C++ seria melhor usar referências...

 

 

  • Curtir 1
Postado
2 horas atrás, Pedro Rezende Salvatore disse:

@arfneto Eu usei os ponteiros, por causa do professor. Ele ensino desse jeito. E pensei que tinha que fazer em todos exercicios.

@arfneto Consegui terminar, retirei o rertun 0

Depois vou mostrar um exemplo pequeno

Postado
3 horas atrás, Pedro Rezende Salvatore disse:

retirei o rertun 0

 

Que diferença fez isso?

 

Poste o programa como concluiu.

 

Considere o exemplo a seguir, que mostra

toninho@DSK-2009:~/projects/dsp$ g++ -o clc -Wall -O3 -std=c++17 clc.cpp
toninho@DSK-2009:~/projects/dsp$ ./clc
Entre com os dois valores inteiros: 3 4
Para x = 3 e y = 4:
x + y = 7
x - y = -1
x * y = 12
x / y = 0
x % y = 3
toninho@DSK-2009:~/projects/dsp$ ./clc
Entre com os dois valores inteiros: 3 0
Para x = 3 e y = 0:
x + y = 3
x - y = 3
x * y = 0
Erro, divisao por zero
toninho@DSK-2009:~/projects/dsp$ 

 

Eis o código do exemplo, do jeito normal de escrever

 

#include <iostream>
using namespace std;

// as operacoes
int soma(int&,int&);
int subt(int&,int&);
int multi(int&,int&);
int divi(int&,int&);
int modulo(int&,int&);

int main(void)
{

    int x = 0;
    int y = 0;
    cout << "Entre com os dois valores inteiros: ";
    cin >> x >> y;
    cout << "Para x = " << x << " e y = " << y << ":\n";
    cout << "x + y = " << x + y << endl;
    cout << "x - y = " << x - y << endl;
    cout << "x * y = " << x * y << endl;
    if ( y == 0 )
    {
        cout << "Erro, divisao por zero\n";
        return 0;
    }
    cout << "x / y = " << x / y << endl;
    cout << "x % y = " << x % y << endl;
    return 0;
}

int soma   (int& x, int& y) { return x + y; };
int subt   (int& x, int& y) { return x - y; };
int multi  (int& x, int& y) { return x * y; };
int divi   (int& x, int& y) { return x / y; };
int modulo (int& x, int& y) { return x % y; };

 

Postado

@Pedro Rezende Salvatore     retirar o return não resolve nada ,  e os cálculos estão dando errados porque você foi colocar aquele sinal de igual entre os operadores 

13 horas atrás, Pedro Rezende Salvatore disse:

int divi(int *x, int *y){ int resultDiv= *x /= *y; return resultDiv; }

poderia ser assim

float divi(int *x, int *y)

{

    if(x ==0)

    {

         printf("divisão por zero , impossivel");

         return -1;

}

    float resultDiv= *x  /  *y;

    return resultDiv;

}

por que o resultado da divisão pode dar números com ponto decimal .

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!