Guest Jefferson Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 Elabore um algoritmo que, dado dois vetores de 10 posições, efetue as quatrooperações aritméticas básicas entre eles, elemento a elemento, e armazene osresultados em outros vetores de 10 posições. Ou seja, para cada operação aritméticaarmazenar o resultado em vetores soma, diferença, multiplicação e divisão. Oselementos de cada vetor deverão ser solicitados para o usuário, ou seja, seus valoresnã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!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Evandro Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Brown -- Postado Junho 6, 2008 Denunciar Share Postado Junho 6, 2008 Fiz sem vetor, segue:#include<stdio.h>#include<stdlib.h>#define tama 10void 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);} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcelo Utikawa da Fonseca Postado Junho 7, 2008 Denunciar Share Postado Junho 7, 2008 (editado) 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 Junho 7, 2008 por Marcelo Utikawa da Fonseca Citar Link para o comentário Compartilhar em outros sites More sharing options...
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
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.