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

Exercicio


Guest Jefferson

Pergunta

Guest Jefferson

Elabore um algoritmo que, dado dois vetores de 10 posições, efetue as quatro

operações aritméticas básicas entre eles, elemento a elemento, e armazene os

resultados em outros vetores de 10 posições. Ou seja, para cada operação aritmética

armazenar o resultado em vetores soma, diferença, multiplicação e divisão. Os

elementos de cada vetor deverão ser solicitados para o usuário, ou seja, seus valores

não são fixos e, portanto, os vetores resultantes deverão receber o resultado da soma,

diferença, multiplicação e divisão de quaisquer valores reais (float) de entrada.

Por favor me ajudem pois não estou conseguindo desenvolver!!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Mas quem sabe tu posta o código que tu tem aí, daí podemos tirar as tuas duvidas, a não ser que tu queira ganhar ele pronto, mas acho que ninguém gosta de resolver o exercício dos outros, então posta o que tu tem que agente vai te dando dicas de como continuar

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Brown --

Fiz sem vetor, segue:

#include<stdio.h>

#include<stdlib.h>

#define tama 10

void soma(float val1, float val2);

void sub(float val1,float val2);

void mult(float val1,float val2);

void divi(float val1,float val2);

int menu(int num);

int nulo(int n,int n1);

main()

{

int val1,val2,i,res,nr,res1;

for(i=1;i<=tama;i++)

{

res=menu(nr);

if(res==1)

{

printf("\nDigite Primeiro numero \n");

scanf("%d",&val1);

printf("Digite Segundo numero \n");

scanf("%d",&val2);

}

else if(res==2)

{

soma(val1,val2);

}

else if(res==3)

{

sub(val1,val2);

}

else if(res==4)

{

mult(val1,val2);

}

else if(res==5)

{

res1=nulo(val1,val2);

if(res1==1)

{

divi(val1,val2);

}

else

{

printf("Denominador Nulo\n");

}

}

}

system("pause");

}

int menu(int num)

{

printf("\n[1] - Entrada de dados\n");

printf("[2] - Adicao\n");

printf("[3] - Subtracao\n");

printf("[4] - Multiplicacao\n");

printf("[5] - Divisao\n");

printf("\n\nEscolha uma das operacoes\n");

scanf("%d", &num);

return num;

}

int nulo(int n,int n1)

{

if(n1==0)

return 0;

else

return 1;

}

void soma(float val1,float val2)

{

printf("%.2f\n",val1+val2);

}

void sub(float val1,float val2)

{

printf("%.2f\n",val1-val2);

}

void mult(float val1,float val2)

{

printf("%.2f\n",val1*val2);

}

void divi(float val1, float val2)

{

printf("%.2f\n",val1/val2);

}

Link para o comentário
Compartilhar em outros sites

  • 0

Alguns comentários sobre o seu código:

1) Sempre que você precisar checar vários resultados para uma mesma variável, utilize o comando switch. O código fica muito mais claro e a execução mais rápida.

2) Ao utilizar define dê preferência por declarar com as letras em maiúsculo. Não há erro se não for desta forma mas o código fica muito mais fácil de interpretar.

3) A função nulo recebe dois argumentos mas apenas 1 é utilizado. Outra coisa: a comparação de nulo é muito simples, não há a necessidade de criar uma função para isso.

4) O ideal é comparar se o divisor é nulo dentro da função de divisão pois esta checagem sempre precisa ser feita.

5) Você não precisa passar um argumento para a função menu apenas para criar a variável. Crie a variável num dentro da função menu.

6) As funções das operações recebem um float mas as variáveis que você passa são int.

7) O loop ia até 10 mas não tinha relação com os vetores, fazendo apenas com que o menu fosse exibido por 10 vezes.

Seguem as modificações com os vetores:

#include<stdio.h>
#include<stdlib.h>
#define TAMANHO 10

void exibe_result(char operacao[], float *res);

void soma(float *val1, float *val2, float *res);
void sub (float *val1, float *val2, float *res);
void mult(float *val1, float *val2, float *res);
void divi(float *val1, float *val2, float *res);

int menu();

main()
{
  int i;
  float val1[TAMANHO], val2[TAMANHO];
  float res_soma[TAMANHO], res_sub[TAMANHO], res_mult[TAMANHO], res_divi[TAMANHO];

  for(i=0; i<TAMANHO; i++) {
    val1[i] = 0;
    val2[i] = 0;
  }

  while(1) {
    switch(menu()) {
      case 1:
        for(i=0; i<TAMANHO; i++) {
          printf("\nDigite Primeiro numero da posicao %d\n", i+1);
          scanf("%f", val1+i);

          printf("Digite Segundo numero da posicao %d\n", i+1);
          scanf("%f", val2+i);
        }

        break;

      case 2:
        soma(val1, val2, res_soma);
        exibe_result("Soma", res_soma);
        break;

      case 3:
        sub(val1, val2, res_sub);
        exibe_result("Subtracao", res_sub);
        break;

      case 4:
        mult(val1, val2, res_mult);
        exibe_result("Multiplicacao", res_mult);
        break;

      case 5:
        divi(val1,val2, res_divi);
        exibe_result("Divisao", res_divi);
        break;

      case 6:
        exit(0);
        break;

      default:
        printf("Opcao invalida!\n");
    }
  }

  system("pause");
}

int menu()
{
  int num;

  printf("\n[1] - Entrada de dados\n");
  printf("[2] - Adicao\n");
  printf("[3] - Subtracao\n");
  printf("[4] - Multiplicacao\n");
  printf("[5] - Divisao\n");
  printf("[6] - Sair\n");
  printf("\n\nEscolha uma das opcoes\n");

  scanf("%d", &num);
  return num;
}

void exibe_result(char operacao[], float *res)
{
  int i;
  printf("Resultados da operacao %s:\n\n", operacao);
  for(i=0; i<TAMANHO; i++) {
    printf("Posicao %d: %.03f\n", i+1, res[i]);
  }
}

void soma(float *val1, float *val2, float *res)
{
  int i;
  for(i=0; i<TAMANHO; i++) {
    res[i] = val1[i] + val2[i];
  }
}

void sub(float *val1, float *val2, float *res)
{
  int i;
  for(i=0; i<TAMANHO; i++) {
    res[i] = val1[i] - val2[i];
  }
}

void mult(float *val1, float *val2, float *res)
{
  int i;
  for(i=0; i<TAMANHO; i++) {
    res[i] = val1[i] * val2[i];
  }
}

void divi(float *val1, float *val2, float *res)
{
  int i;
  for(i=0; i<TAMANHO; i++) {
    if(val2[i])
      res[i] = val1[i] / val2[i];
    else
      res[i] = 0;
  }
}

Editado por Marcelo Utikawa da Fonseca
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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...