Jump to content

Uma pequena ajuda em funções


Recommended Posts

Posted (edited)
/*faça com que receba na funcao main() 2 valores inteiro. Escreva
uma funcao para cada operacoes aritmeticas e passe como parametro os 2
valores recebidos na funcao main(). Retorne os resultados usando o comando
return e imprima-os no video na funcao main().*/

float divi(a,b);
main()
{

    int a,b,c;
    float d;

    printf("Digite o 1o numero:");
    scanf("%d", &a);
    printf("\nDigite o 2o numero:");
    scanf("%d", &b);
    c=somar(a,b);
    printf("\n Soma:%d",c);
    c=sub(a,b);
    printf("\nSubtrair: %d",c);
    c=mult(a,b);
    printf("\nMultiplicar: %d",c);
    d=divi(a,b);
    printf("\nDividir: %f",d);
}

int somar(a,b)
{
    int c=a+b;
    return(c);
}

int sub(a,b)
{
    int c=a-b;
    return(c);
}

int mult(a,b)
{
    int c=a*b;
    return(c);
}

float divi(a,b)
{
    float d=(float)a/(float)b;
    return(d);
}

/*Até ai tudo bem, mas não sei Reescrever esse codigo para receber via teclado n
valores. Os n valores nao sao definidos previamente, sei que usa um while(1) { Comandos}, o que deve ser feito
é receber um numero, receber outro e ai realizará as 4 operações instantaneamente, receber outro numero e realizará de forma
acumulada e assim vai indo*/
Edited by pwseo
syntax highlight
Posted (edited)

Eu começava por um algoritmo básico textual antes de começar logo com código:

1º - Receber 2 valores pela linha de comandos (se não sabes fazer, pesquisa no Google que deve aparecer)

2º - Verificar que realmente foram enviados 2 valores pela linha de comandos. Se não foram enviados 2 valores, termina o programa e informa o user que deve inserir 2 valores!

3º - Escrever as funções para cada operação aritmética e devolver o resultado da operação de volta para a função main.

4º - Apresentar os resultados devolvidos à função main na consola.

2 hours ago, Hugo1337 said:

/*Até ai tudo bem, mas não sei Reescrever esse codigo para receber via teclado n valores. Os n valores nao sao definidos previamente, sei que usa um while(1) { Comandos}, o que deve ser feito é receber um numero, receber outro e ai realizará as 4 operações instantaneamente, receber outro numero e realizará de forma acumulada e assim vai indo*/

O enunciado não pede 'n' valores... Pede apenas 2.  Aqui, até eu posso dizer: não compliques!

Edited by PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted

Vocês dois não entenderam... o código que fiz é o exercicio 1 corrigido, agora devo fazer com que o programa peça n valores(Que nao sao definidos previamente), e nao sei como fazer isso.

Posted
8 minutes ago, Hugo1337 said:

Vocês dois não entenderam... o código que fiz é o exercicio 1 corrigido, agora devo fazer com que o programa peça n valores(Que nao sao definidos previamente), e nao sei como fazer isso.

Mas o código, que tu dizes corrigido, não reflecte o que foi pedido no enunciado apresentado. Esse código não recebe dois valores na função main!

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted
1 hour ago, Hugo1337 said:

Vocês dois não entenderam... o código que fiz é o exercicio 1 corrigido, agora devo fazer com que o programa peça n valores(Que nao sao definidos previamente), e nao sei como fazer isso.

o problema não e que não tenhamos percrbido. O problema e que o problema não foi apresentado de forma clara e suficiente para ser respondido

IRC : sim, é algo que ainda existe >> #p@p
Posted
1 hora atrás, Hugo1337 disse:

Vocês dois não entenderam... o código que fiz é o exercicio 1 corrigido, agora devo fazer com que o programa peça n valores(Que nao sao definidos previamente), e nao sei como fazer isso.

Reformula a tua questão. Já reparaste que colocaste a tua questão no final de um excerto de código? Isso é um sinal de alarme para ninguém pegar na tua dúvida. Eu próprio só vi que tinhas lá algo no final do código porque li o que foi dito pelo @HappyHippyHippo.

Posto isto... o que tentaste até agora?

Posted

Mas uma vez que o OP disse que já tinha a solução para a parte de cima do enunciado, fica aqui a minha sugestão:

#include <stdio.h>
#include <stdlib.h>

int OperSoma(int pvalor1, int pvalor2);
int OperSubtrai(int pvalor1, int pvalor2);
int OperMultiplica(int pvalor1, int pvalor2);
float OperDivide(int pvalor1, int pvalor2);

int main(int argc, char** argv){

   if(argc < 2){
      printf("Tem que inserir dois valores!\n");
      printf("Usage: %s <valor1> <valor2>\n", argv[0]);
      exit(-1);
   }

   int valor1 = atoi(argv[1]);
   int valor2 = atoi(argv[2]);

   printf("Resultado da Soma: %d\n", OperSoma(valor1, valor2));
   printf("Resultado da Subtracção: %d\n", OperSubtrai(valor1, valor2));
   printf("Resultado da Multiplicação: %d\n", OperMultiplica(valor1, valor2));
   if(valor2)
      printf("Resultado da Soma: %.2f\n", OperDivide(valor1, valor2));
   else
      printf("Não pode dividir por zero!\n");

   return 0;
}


/*
**Funções que executam as operações pretendidas
*/
int OperSoma(int pvalor1, int pvalor2){
   return pvalor1 + pvalor2;
}

int OperSubtrai(int pvalor1, int pvalor2){
   return pvalor1 - pvalor2;
}

int OperMultiplica(int pvalor1, int pvalor2){
   return pvalor1 * pvalor2;
}

float OperDivide(int pvalor1, int pvalor2){
   return 1.0 * pvalor1 / pvalor2;
}

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Posted

Eu interpreto o problema de outra forma, PsyScorpion. Acho que o que ele quer é que depois de fazer as operações com os 2 primeiros argumentos, continuar a ler mais valores e a fazer as operações tendo como operandos o valor anteriormente calculado e o novo valor lido.

Qualquer coisa como:

int soma =0;
int operando;

scanf("%d",&operando);

soma = operando;

while (1)
{
	scanf("%d",&operando);
	soma = somar(soma,operando)
}

Está aqui a ideia básica, para uma operação. De qualquer forma, quando existe mais do que uma interpretação, é sinal que não expuseste o problema claramente, e uma correcta formulação da dúvida é meio caminho andado para se ter uma resposta útil.

Posted

@Flinger, pois, talvez. Eu pelo que li do enunciado onde diz "faça com que receba na funcao main() 2 valores inteiro." eu vejo que deve receber os parâmetros pela linha de commandos. A única forma que eu conheço de a função main receber parâmetros é pelo argc/argv... Por isso dei aquela sugestão! Mas se calhar estás certo, @Flinger. O OP também nunca mis disse nada por isso, já se deve ter desenrascado!

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.