Operações com vetores [RESOLVIDO]

1. Operações com vetores [RESOLVIDO]

Jóvio
Jovioluiz

(usa Debian)

Enviado em 14/11/2017 - 16:10h

Boa tarde pessoal.
Estou tentando resolver esse problema em C, mas ele não está imprimindo as respostas. segue o enunciado do problema e o que eu já fiz.
Fazer um programa que, dados dois vetores inteiros de 10 posições, efetue as respectivas operações
aritméticas (soma, subtração, divisão, multiplicação) indicadas por um vetor de 10 posições de
caracteres também fornecido, contendo em cada posição uma das quatro operações aritméticas em
qualquer combinação, armazenando os resultados num vetor de reais (também de 10 posições). Ao
final, exibir os valores armazenados no vetor de resultados.


#include <stdio.h>
#include <string.h>
#define MAX 10

int main(){
int vet1[MAX], vet2[MAX];
float res[MAX]; //vetor de resultados
int i;
char oper[MAX];

for(i=0; i<MAX; i++){
printf("Digite um número: ");
scanf("%d", &vet1[i]);

printf("Digite outro numero: ");
scanf("%d", &vet2[i]);
}
for(i=0; i<MAX; i++){
printf("Digite uma operação: ");
scanf("%s", oper[i]);

switch (oper[i]) {
case '+':
res = vet1[i] + vet2[i];
break;
case '-':
res = vet1[i] - vet2[i];
break;
case '*':
res = vet1[i] * vet2[i];
break;
case '/':
res = vet1[i] / vet2[i];
break;
default:
printf("operação invalida\n");//sempre ta imprimindo
}
printf("%.2f\n", (float)res);//não está imprimindo
}
}



  


2. MELHOR RESPOSTA

Hugo Cerqueira
hrcerq

(usa Fedora)

Enviado em 14/11/2017 - 21:42h

Bom, as falhas que identifiquei nesse código foram as seguintes:

1. Dentro do switch, você está jogando o resultado (float) dentro da variável que é do tipo array, em vez de jogar dentro da posição do array.

Por exemplo, em vez de

res = vet1[i] + vet2[i];


o correto seria

res[i] = vet1[i] + vet2[i];


2. No final, quando deve exibir o resultado, está fazendo uma conversão do vetor para float, que não faz sentido. Na verdade, deveria apresentar a posição "i" do vetor.

A propósito, pra seguir à risca o enunciado, esse último printf teria que estar em outro loop for separado. O resultado só deve ser apresentado depois que o vetor de resultados estiver completamente preenchido.

3. Quando recebe do usuário qual operador deve ser usado, está usando o parâmetro "%s" (para strings) no scanf. Por mero acaso, funciona para este problema específico, mas saiba que quando você preenche a posição do vetor de caracteres, está na verdade incluindo um caractere de nova linha (\n) na posição seguinte, que acaba sendo substituída na próxima iteração. Mas o correto nesse caso seria recebê-lo como char mesmo, isto é, "%c". Lembre-se de incluir um espaço antes do %c, isso garante que a função scanf ignore espaços vazios que causariam bugs no programa.

scanf(" %c", &oper[i]);


4. A função main está sem retorno.

5. Não vi porque incluir o cabeçalho string.h. Ele não é usado em momento algum.

---

Atenciosamente,
Hugo Cerqueira

3. Operações com vetores

Jóvio
Jovioluiz

(usa Debian)

Enviado em 14/11/2017 - 22:16h

Muito obrigado. Agora funcionou. Só me faltou um pouco mais de atenção, mas valeu pela ajuda.


4. Re: Operações com vetores [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Fedora)

Enviado em 14/11/2017 - 22:30h

Jovioluiz escreveu:

Muito obrigado. Agora funcionou. Só me faltou um pouco mais de atenção, mas valeu pela ajuda.


Fico feliz em saber que ajudei. A propósito, agradeceria se marcasse a resposta que te ajudou como "melhor reposta".

---

Atenciosamente,
Hugo Cerqueira






Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts