Exercicio de ED

9 views
Skip to first unread message

Itay

unread,
May 1, 2011, 7:40:44 PM5/1/11
to etecpg 2ª semestre 2010
Gente..estou tendo problemas com isso..to tentando, na ultuma
tentativa meu pc travou \o/

vo por o codigo aqui e der me ajudem!

#include <conio.h>
#include <iostream.h>
void main (void)
{
clrscr();
int vetor[9],vetor2[9], somar, contador;

for(contador = 0; contador<=9; contador++){
cout << "Digite a " << contador + 1 <<" posicao: ";
cin >> vetor[contador];
}

for(contador = 9; contador >-1; contador--){
cout << "A " << contador + 1 << " posicao: " << vetor[contador] <<
endl;

}
PROBLEMA É COMO CALCULAR..EU SEI QUE PRESICO COLOCAR UM AUX..MAS NAO
CONSIGO SAI DAI =\





getch();
}

Joao de Souza

unread,
May 2, 2011, 2:06:36 PM5/2/11
to etecpg-2-se...@googlegroups.com
Itay, creio que, alem do vetor[total] vc deve declarar cada posicao dele, ex:

int vetor[4]; // vetor de 4 posicoes

vetor[0]; // declarando a posicao 0 do vetor de 4 posicoes e assim por diante.
vetor[1];
vetor[2];
vetor[3];



Pra calcular, use uma formula dentro do contador:

calculo = calculo + vetor na posicao atual 
ou
calculo += vetor na posicao atual


Uma coisa, apesar de nao estar presente no dia, creio que essa nao foi a proposta do exercicio. Do modo que esta fazendo, vc esta tentando receber valores em um vetor de 10 posicoes, soma-los e exibi-los em ordem inversa e a soma, o que, na interface, seria a mesma coisa. Mas creio que foi pedido que se copiasse cada valor de cada posicao do vetor, para um segundo vetor em ordem inversa, alem de soma-los:
vetor1[0] = 5;
vetor2[9] = vetor1[0];
vetor2[9] = 5;

lembrando que essa é a logica, nao a formula.

O Marcos me lembrou de uma coisa muito importante, que praticamente solucionou meu problema, LEI DA SUBTRACAO.
Sao 10 posicoes no total, se um comeca do zero++, o outro deve fazer o caminho inverso, porem nao conseguia usar 9--, ai que entra a lei da subtracao, em vez de usar 9--, da pra usar-se 9- a posicao atual do vetor.

vetor2[maior posicao do vetor2 - posicao atual vetor1]


Espero ter ajudado, porque acho que me enrolei um pouco pra explicar.

Joao de Souza


RAQUEL super star

unread,
May 2, 2011, 2:13:06 PM5/2/11
to etecpg-2-se...@googlegroups.com
oi



Date: Mon, 2 May 2011 11:06:36 -0700
From: etec...@gmail.com
To: etecpg-2-se...@googlegroups.com
Subject: Re: Exercicio de ED
--
Você recebeu esta mensagem porque está inscrito no Grupo "etecpg 2ª
semestre 2010" nos Grupos do Google.
 
Visite este grupo em:
http://groups.google.com/group/etecpg-2-semestre-2010?hl=pt?hl=pt-BR

Marcos Costa

unread,
May 2, 2011, 6:36:16 PM5/2/11
to etecpg 2ª semestre 2010

salve galera
Bom itay, vamos lá pra tentar uma explicação bem simples.
antes alguns detalhes:

--seu vetor vai de 0 ate 8, ou seja, tem 9 posicções e não 10

--seu dois for vão dar pau porque não tem posição nove do jeito que
você declarou, você precisa mudar pra dez posições


vamos a esplicação:
implemente dois vetores de 10 posições e peça para o usuário digitar
as posiçõs (for(i = 0; i<10...

Agora vamos passar por outro invertido:
faça outro for, identico ao de cima (exceto os comandos é claro).
existe duas formas de fazer isso, uma mais simples e outra mais
complicada. Vou apenas complementar a simples, que é a que o joão flw.

Em uma determinada sequência, como esse vetor que é uma sequência de
10 posições, a tem como seu absoluto(contrária) a t-a, caso o primeiro
n seja o 0, e t-a+1, caso o primeiro n seja o 1. Onde a é a posição e
t é o maior posição da sequência.

vamos ao exemplo do vetor:
vetor começa no 0, então a fórmula é abs(a) = t-a
ou seja,
abs(0) = 9-0 = 9,
abs(1) = 9-1 = 8,
abs(2) = 9-2 = 7

utilizando essa lógica no for, você consegue passa-lo invertido.

Vamos a soma:
ainda dentro desse mesmo for, você diz que soma = soma + vetor1[i],
desta maneira você não vai perder nenhum valor enquanto soma. Um
detalhe importante é atribuir o valor de soma como 0 antes de entrar
neste for, se não vai ter sujeira de memória e ai já viu.

Bom, tá ai minha ajuda, espero que tenha sido útil Itay e é bom ve-lo
por aqui :D

Marcos Costa

unread,
May 2, 2011, 6:40:44 PM5/2/11
to etecpg 2ª semestre 2010
Outro detalhe, o João está certo

a proposta do exercício é receber números num vetor, popular o outro
vetor na ordem invertida e efetuar a soma, tanto faz o vetor somado,
já que os números são os mesmos :D

Não esqueça de exibir a soma, e acho que seria interessante exibir o
segundo vetor tb, pra provar que a inversão foi feita.

Joao de Souza

unread,
May 2, 2011, 8:17:44 PM5/2/11
to etecpg-2-se...@googlegroups.com
Marcos, nao seria mais simples utilizar apenas um for? Fiz aqui e funcionou, ele recebe o valor de cada posicao do vetor 1, joga o mesmo valor pra posicao invertida do vetor 2, utilizando sua dica, e ja faz a soma do vetor 2. 
Criei outro for apenas para imprimir os numeros do segundo vetor. Depois, imprimi a soma fora dos for.

Com isso ficou um codigo bem limpo.

Mudando de assunto, alguem sabe me dizer porque nao consigo fazer com que meu MAIN seja void?

#include <conio.h>
#include <iostream.h>
int main (void)
{
getch();
return 0;
}

fui obrigado a criar um retorno pois nao funfa como VOID jeito maneira, se alguem souber o porque...

Vlw!!!


Marcos Costa

unread,
May 2, 2011, 11:26:22 PM5/2/11
to etecpg 2ª semestre 2010
Opa João

Sim, seria mais produtivo e eficaz fazer tudo num for só, até mesmo a
exibição inversa e deixar só a exibição da soma fora do for, como eu
fiz.

Mas pra entender melhor o que está acontecendo, antes de se aprimorar
o código, é bom você fazer as coisas por partes. por isso dei a dica
pro itay fazer mais de um for, saca?

Sobre seu método void main, você deve estar usando o Dev-C++. O
compilador dele não aceita um main do tipo void, não me pergunte
porque, mas não aceita. Quaquer coisa busca na net ou perguntar pro
professor deposi.

Abrçs.
Reply all
Reply to author
Forward
0 new messages