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

(Resolvido) Vetor "zera" ao ir para uma função


EMSO.EXE

Pergunta

Estou já algum tempo tentando fazer esse programa funcionar só que agora quando tentor enviar os vetores para a função e realizar os calculos, os mesmos zeram...

...alguém pode me apotnar o erro ou um modo mais simples de fazer isso, pois acredito que esse que fiz não é melhor jeito... Obrigado!

main()
{
int num[32767], qtde, cont, res1, res2, res3, res4;


printf("\n Digite a quantidade de números: ");
scanf("%d",&qtde);

cont=0;

while (cont < qtde){
  cont=++cont;
  printf("\n Digite o n£mero: ");
  scanf("%d",&num[cont]);
}

cont=0;
res1=res2=res3=0;
res4=1;

while (cont < qtde){
  cont=++cont;
  operacao_int(num[cont], res1, res2, res3, res4);
}

return;
}

operacao_int(num, cont, res1, res2, res3, res4)
int num[32767], cont;
{
res1 = num[cont] + res1;
res2 = num[cont] - res2;
res3 = num[cont] * res3;
res4 = num[cont] / res4;

return;
}

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Por que suas funções não tem tipo?

No C toda função precisa de um tipo (void, int, char, etc).

Na sua chamada da função operacao_int, você tá passando um parametro a menos:

operacao_int(num[cont], res1, res2, res3, res4);

E agora eu vi isso também:

operacao_int(num, cont, res1, res2, res3, res4)

int num[32767], cont;

{

...

}

Isso não tá fazendo muito sentido...

Link para o comentário
Compartilhar em outros sites

  • 0

Só uma pequena correção no que o Mnemonic falou:

Por que suas funções não tem tipo?

No C toda função precisa de um tipo (void, int, char, etc).

Quando o tipo não é especificado explicitamente ele é considerado int.

Mas o Mnemonic tem razão, esse código aí está estranho. Ele chega mesmo a compilar ?

Link para o comentário
Compartilhar em outros sites

  • 0
Só uma pequena correção no que o Mnemonic falou:
Por que suas funções não tem tipo?

No C toda função precisa de um tipo (void, int, char, etc).

Quando o tipo não é especificado explicitamente ele é considerado int.

Mas o Mnemonic tem razão, esse código aí está estranho. Ele chega mesmo a compilar ?

Então ele compila, mas nas função ele não faz o que eu pretendo, que é receber os N valores armazenados na função é efetuar as operações, este é o 2º código que tento fazer isso, o "original" é este abaixo, que não executa as operações do 2º NUM com NUM anterior, referente a declarar tipo para a função sou novato na linguagem e até o momento só aprendi sobre funções sem declarar tipo, porém percebi nas buscas na internet esses detalhes que diferem do que aprendi...

Estou usando o TURBO C 3...

main()
{
int num, qtde, total, res1, res2, res3, res4;

printf("\n Digite a quantidade de números: ");
scanf("%d",&qtde);

total = 0;

while (total < qtde)
  {
  if (total == 0){
    res1 = 0;
    res2 = 0;
    res3 = 0;
    res4 = 1;
    }
  total=++total;
  printf("\n Digite o n£mero: ");
  scanf("%d",&num);
  operacao_int(num, res1, res2, res3, res4);
  numl = num;
  numu = num;
  numf = num;
  numd = num;
  } 

}

operacao_int(num, res1, res2, res3, res4)
{
res1 = num + res1;
res2 = num - res2;
res3 = num * res3;
res4 = num / res4;
printf("\n INT Adi‡Æo: %d",res1);
printf("\n INT Subtra‡Æo: %d",res2);
printf("\n INT Multiplica‡Æo: %d",res3);
printf("\n INT DivisÆo: %d",res4);
printf("\n ------------------------------------");
}

Editado por EMSO.EXE
Link para o comentário
Compartilhar em outros sites

  • 0

Estou postando o enunciado do exercicio, no momento estou apenas tentando com INT, alguém poderia me auxiliar a resolver isto?

1 - Escreva uma funcao para as operacoes aritmeticas com N valores que são

passados como parametros para estas funcoes e retorne os resultados

como int, long, unsigned, float e double.

Link para o comentário
Compartilhar em outros sites

  • 0

Simples. Algo assim;

int operacao(int a,int b){
printf("Soma: %d",a+b);
printf("Subtracao: %d",a-b);
printf("Multiplicacao: %d",a*b);
printf("Divisao: %d",a/b);
}

Não é muito diferente da lógica do que você tinha feito, mas no seu código havia vários erros de sintaxe.

Se for pra fazer o código em C pode ficar assim mesmo, se for em C++ recomendo o uso de templates.

Obs.:

Ao postar evite o uso de tag's quote desnecessárias.

Link para o comentário
Compartilhar em outros sites

  • 0

Então o código é em C e tentei com o sugerido acima mas ocorre o mesmo problema... vou tentar mostrar o que acontece... 1º informo o programa quantos números eu quero que sejam utilizados na operações ex.: 3, então me é solicitado os números um de cada vez ex.: 2, 3, 5, utilizando como exemplo a operação soma deveria me retornar 10 que é 2+0=2+3=5+5=10, porém o que recebo é 5 que é 2+0=2, 3+0=3 e 5+0=5, este é problema que tentei fazer nos dois códigos :wacko: acima e que não estou tendo sorte.

Agradeço a ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, obrigado pela ajuda... acredito que agora consegui resolver 90% do script, o problema é para as operações aritméticas com long int, double, float, resultam e resultados muito estranhos como respectivamente 0, 2.000000, 1.000000.

Será que está certo o meio como converto int para double? num_double = num_int;

main()
{
int num, qtde, total, res1, res2, res3, res4;

.....

double numd, res1d, res2d, res3d, res4d;

printf("\n Digite a quantidade de n£meros: ");
scanf("%d",&qtde);

 for(total = 0; total < qtde; ++total){
  if (total == 0){
    res1 = res1l = res1u = res1f = res1d = 0;
    res2 = res2l = res2u = res2f = res2d = 0;
    res3 = res3l = res3u = res3f = res3d = 0;
    res4 = res4l = res4u = res4f = res4d = 1;
  }
  printf(" Digite o n£mero: ");
  scanf("%d",&num);

.....

  numd = num;         // <------------------ Será que está certo o meio como converto int para double? 

.....

  res1 = op_int_soma(num, res1); 

.....

  res1d = op_double_soma(numd, res1d); 
  res2d = op_double_sub(numd, res2d); 
  res3d = op_double_mult(numd, res3d);
  res4d = op_double_div(numd, res4d);

    printf("\n DOUBLE Adi‡Æo: %lf",res1d);
    printf("\n DOUBLE Subtra‡Æo: %lf",res2d);
    printf("\n DOUBLE Multiplica‡Æo: %lf",res3d);
    printf("\n DOUBLE DivisÆo: %lf",res4d);

}

op_int_soma(num, res1)
int num, res1;
{
  res1 = num + res1;
}

....

op_double_soma(numd, res1d)
double numd, res1d;
{
  res1d = numd + res1d;
}

op_double_sub(numd, res2d)
double numd, res2d;
{
  res2d = numd - res2d;
}

op_double_mult(numd, res3d)
double numd, res3d;
{
  res3d = numd * res3d;
}

op_double_div(numd, res4d)
double numd, res4d;
{
  res4d = numd / res4d;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Vê se esse código serve pra você companheiro.

void FuncaoOperacao(double m[], int N)
{
     double temp1, temp2, temp3, temp4;

     temp1=temp2=temp3=temp4 = m[0];
     
     for(int i=1; i<N; i++)
     {
         temp1 = temp1 + m[i];
         temp2 = temp2 - m[i];
         temp3 = temp3 * m[i];
         temp4 = temp4 / m[i];
     }
     
     // Imprime os valores em cada formato
     printf("\n\nSoma = %d, %li, %f, %lf\n",(int)temp1,(long)temp1,(float)temp1, temp1);
     printf("Subtracao = %d, %li, %f, %lf\n",(int)temp2,(long)temp2,(float)temp2, temp2);
     printf("Multiplicacao = %d, %li, %f, %lf\n",(int)temp3,(long)temp3,(float)temp3, temp3);
     printf("Divisao = %d, %li, %f, %lf\n",(int)temp4,(long)temp4,(float)temp4, temp4);
}

main()
{
      int N;
      double m[100];
      
      printf("Digite a quantidade de numeros: ");
      scanf("%d", &N);
      
      for(int i=0; i<N; i++)  // Entra com os números
      {
         printf("Numero %d: ",i+1);
         scanf("%lf", &m[i]);
      }
      
      FuncaoOperacao(m, N);
}

Abraço.

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...