Ir ao conteúdo

Posts recomendados

Postado

Tenho que fazer uma calculadora que receba dois números reais e retorne como saída a soma, a subtração, a multiplicação e a divisão entre esses dois números. O programa tem que ter apenas uma função e quatro ponteiros. Só consegui fazer o programa com quatro funções e sem uso de ponteiros.

 

//funcao calculadora
void calculadora (float valor1, float valor2, float* soma){
 
 *soma=valor1+valor2; 
}
 
 
int main()
{
 
 float resultadoSoma;
 //... leitura dos valores
 //chamada da funcao
 calculadora (valor1, valor2, &resultadoSoma);
 
 
}
Como faço o que se pede?
Postado

Você pode fazer assim:

void calculadora(float valor1, float valor2, float *soma, float *sub, float *mult, float *div){	*soma = valor1 + valor2;	*sub = valor1 - valor2;	*mult = valor1 * valor2;	*div = valor1 / valor2;}
  • Curtir 1
Postado

mas retorna as 4 de uma vez ou você tem que escolher? você pode usar um if dentro da função, porém isso não requer 4 ponteiros.

Sim é pra retornar as 4 de uma vez e deve usar 4 ponteiros como  o colega colocou abaixo, mas não consegui fazer.

 

Você pode fazer assim:

void calculadora(float valor1, float valor2, float *soma, float *sub, float *mult, float *div){	*soma = valor1 + valor2;	*sub = valor1 - valor2;	*mult = valor1 * valor2;	*div = valor1 / valor2;}

Não estou conseguindo fazer a relação com esses ponteiros

 

#include<stdio.h>
#include <stdlib.h>
 
 
void calculadora(float valor1, float valor2, float *subtracao, float *soma, float *divisao, float *multiplicacao){
    *subtracao = valor1 - valor2;
    *soma = valor1 + valor2;
    *divisao=valor1/valor2;
    *multiplicacao=valor1*valor2;}
 
 
float main(void){
float valor1,valor2,result_soma,result_subtracao,result_multiplicacao,result_divisao;
printf("**********CALCULADORA DAS QUATRO OPERACOES**********\n\n");
 
printf("Digite o valor1: ");
scanf("%f", &valor1);
printf("Digite o valor2: ");
scanf("%f", &valor2);
 
    result_soma= soma(valor1,valor2);
    printf("\nO RESULTADO DA SOMA E:%.2f\n",soma(valor1,valor2));
 
    result_subtracao= subtracao(valor1,valor2);
    printf("\nO RESULTADO DA SUBTRACAO E:%.2f\n",subtracao(valor1,valor2));
 
    result_multiplicacao= multiplicaco(valor1,valor2);
    printf("\nO RESULTADO DA MULTIPLICACAO:%.2f\n",multiplicaco(valor1,valor2));
 
    result_divisao= divisao(valor1,valor2);
    printf("\nO RESULTADO DA DIVISAO E:%.2f\n",divisao(valor1,valor2));
 
 
return 0;}
  • Curtir 1
Postado

tenho essa calculadora.. talvez te ajude

 

//calculadora básica#include <stdio.h>float soma(float n1, float n2){   return n1+n2;}float subtrai(float n1, float n2){   return n1-n2;}float multiplica(float n1, float n2){   return n1*n2;}float divide(float n1, float n2){   return n1/n2;}void calculadora(float n1, float n2, char op, float * resul){    switch (op){    case '+': *resul = soma(n1,n2);            break;    case '-': *resul = subtrai(n1,n2);            break;    case '*': *resul = multiplica(n1,n2);            break;    case '/': *resul = divide(n1,n2);            break;    }}main(){    float op1, op2, ret;    char opera;    do{      printf("Digite 2 vals e a oper(+,-,*,/)(vals==0 pra sair!)\n");      scanf("%f%f",&op1,&op2);      fflush(stdin);      scanf("%c",&opera);      if(opera=='+' || opera=='-' || opera=='*' || opera=='/'){            calculadora(op1,op2,opera,&ret);            printf("Resultado -> %.1f %c %.1f = %.1f\n",op1,opera,op2,ret);      }else printf("operacao inválida!\n");    }while(op1!=0 && op2!=0);}
  • Curtir 2
Postado


Observe os seguintes códigos:

#SOMA 1

#DIV 2

#MULT 3

float result_vt[4];

Calcular_fn(float n1, float n2, float *r);

//Para acessar o resultado

r[MULT]; //acessa a Multiplicação ... e assim vai.

  • Curtir 1
Postado

 

Sim é pra retornar as 4 de uma vez e deve usar 4 ponteiros como  o colega colocou abaixo, mas não consegui fazer.

Não estou conseguindo fazer a relação com esses ponteiros

 

#include<stdio.h>
#include <stdlib.h>
 
 
void calculadora(float valor1, float valor2, float *subtracao, float *soma, float *divisao, float *multiplicacao){
    *subtracao = valor1 - valor2;
    *soma = valor1 + valor2;
    *divisao=valor1/valor2;
    *multiplicacao=valor1*valor2;}
 
 
float main(void){
float valor1,valor2,result_soma,result_subtracao,result_multiplicacao,result_divisao;
printf("**********CALCULADORA DAS QUATRO OPERACOES**********\n\n");
 
printf("Digite o valor1: ");
scanf("%f", &valor1);
printf("Digite o valor2: ");
scanf("%f", &valor2);
 
    result_soma= soma(valor1,valor2);
    printf("\nO RESULTADO DA SOMA E:%.2f\n",soma(valor1,valor2));
 
    result_subtracao= subtracao(valor1,valor2);
    printf("\nO RESULTADO DA SUBTRACAO E:%.2f\n",subtracao(valor1,valor2));
 
    result_multiplicacao= multiplicaco(valor1,valor2);
    printf("\nO RESULTADO DA MULTIPLICACAO:%.2f\n",multiplicaco(valor1,valor2));
 
    result_divisao= divisao(valor1,valor2);
    printf("\nO RESULTADO DA DIVISAO E:%.2f\n",divisao(valor1,valor2));
 
 
return 0;}

 

 

Você não entendeu bem o que são e como funcionam ponteiros...

 

Ponteiros indicam endereço da memória, ou seja, indica o local da memória onde se encontra o primeiro bit de um valor armazenado na memória. O tipo da variável ponteiro (float, int, char, etc) indica o comprimento (número de bits) do valor armazenado na memória, além de identificar como este valor deve ser usado/entendido.

 

Mas toda variável por natureza já possui uma referência indicando o local onde seu valor é armazenado, e em C você pode obter esta referência usando o operador & antes do nome da variável.

 

Se você lembrar bem você já usa isso frequentemente, na função scanf(). Ou seja, quando você faz algo como:

scanf("%f", &variavelfloat);

Você está passando para a função scanf() a referência que indica o local da memória onde é armazenado o valor da variável "variavelfloat". A função scanf() por sua vez armazenará esta referência num ponteiro do tipo float, assim quando a função fizer alterações no local da memória apontado por este ponteiro estará em efeito alterando o valor da variável "variavelfloat".

 

Logo no caso da função postada pelo @Arm Outro o modo correto de usá-la no Main do programa seria este:

float valor1, valor2, soma, subtracao, multiplicacao, divisao;...calculadora(valor1, valor2, &soma, &subtracao, &multiplicacao, &divisao);

Assim, você está passando as referências das variáveis "soma", "subtracao", "multiplicacao" e "divisao" para a função, e estas referências são armazenadas nos respectivos ponteiros declarados na função, e as alterações feitas nos endereços de memória apontados por eles (ou seja as operações realizadas na função) estarão alterando os valores destas variáveis no Main do programa, aí o resultado pode ser obtido usando as variáveis normalmente no Main (do mesmo modo que você sempre fez no caso do scanf() ).

  • Curtir 2
Visitante
Este tópico está impedido de receber novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!