Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Aislan_Rodrigues

Ordenação e Ponteiros

Recommended Posts

Pessoal, preciso muito de 3 códigos que ordenem uma matriz um utilizando o metodo bolha, um o seleção e um o inserção utilizando ponteiro alguem pode me ajudar?????

 

Muito obrigado.... sou leigo no assunto e preciso entender esse codigo por favor me ajudem....

 

Obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estão todos aqui:

http://pt.wikipedia.org/wiki/Algoritmo_de_...na%C3%A7%C3%A3o

 

Adapte para C e poste as dúvidas e dificuldades.

 

Legal.... mas e sou muitissimo leigo em C...... por isso estou tendo dificuldade.... eu ate tenho meu codigo pronto mas nao to entendendo e nao sei como colocar em ponteiro e se ja esta em ponteiro......

Compartilhar este post


Link para o post
Compartilhar em outros sites

O método bolha:

void metodo_bolha(int *v, const int tamanho)
{
	 int i, j, temp;

	 for(i = 0; i < tamanho - 1; i++)
	 {
		 for(j = 0; j < tamanho - 1; j++)
		 {
			 if( *(v + j) > *( v + j + 1) )
			 {
				 temp = *(v + j);
				 *(v + j) = *(v + j + 1);
				 *(v + j + 1) = temp;
		   }
		}
   }
}

Considerando que um vetor é u ponteiro, você pdoe manipular a variável v, sem criar a variável p. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Para as outras funções, use a mesma lógica

Compartilhar este post


Link para o post
Compartilhar em outros sites

UUUUUUUUUU ......... rapaiz ta clareando um pouco....... tenho que colocar ponteiro em todos os passos??? eh isso??? para criar pelo metodo de selecao uso a mesma logica eh isso????

 

esse exemplo de cima funciona para o selecao???

 

outra coisa to usando aki em casa o Dev C e nao ta rodando o programa..... ele executa muito rapido nem da para ver o resultado..... o que devo fazer???

 

Obrigado pela forca que ta me dando....

Compartilhar este post


Link para o post
Compartilhar em outros sites

UUUUUUUUUU ......... rapaiz ta clareando um pouco....... tenho que colocar ponteiro em todos os passos??? eh isso??? para criar pelo metodo de selecao uso a mesma logica eh isso????

 

esse exemplo de cima funciona para o selecao???

É para funcionar, se você usar a lógica correta de ponteiros. Mas não simplesmente copie e cole; compreenda a lógica.

Caso não saiba manipular ponteiros, veja:

http://www.google.com/search?ie=UTF-8&...mp;q=ponteiro+c

 

 

 

outra coisa to usando aki em casa o Dev C e nao ta rodando o programa..... ele executa muito rapido nem da para ver o resultado..... o que devo fazer???

Uns colocam um getchar(). Outros usam system("pause") (sempre antes do return 0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela forca.... vou tentar entender a logica de ponteiros e utiliza-lo no metodo de selecao..... assim que eu concluir vou postar aki e se voce puder me ajudar a corrigir caso esteja errado eu agradeco muitissimo...... muito obrigado pela aula..... t+++

Compartilhar este post


Link para o post
Compartilhar em outros sites

é tentando que se aprende. :)

Faça o código aí e poste as dúvidas.

 

Beraldo,

 

Aki eu declarei apenas um ponteiro mas nao to usando o mesmo..... certo???

 

 

fiz uns comentarios no codigo conforme fui fazendo...... eh por esse caminho???

Compartilhar este post


Link para o post
Compartilhar em outros sites

A declaração está dcerta.

Como eu disse, um vetor é um ponteiro. Você pode manipular v diretamente. Mas, se quiser, pode criar p também, para sermanipulado.

 

Suponha o vetor v que está sendo passado como parâmetro.

 

v == &v[0]

 

ou seja, a variável v aponta para o endereço de v[0].

 

Isso mostra que um vetor é um ponteiro que aponta para um endereço de memória. Mais precisamente o endereço do primeiro elemento do vetor

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Aí fica fácil entender a manipulação:

 

Sendo p um ponteiro, *p é o valor presente na memória cujo endereço é p.

Logo:

 

*(p + 2) corresponde ao valor cujo endereço é o valor de p somado a duas unidades do tipo do ponteiro (nesse caso, p + 2*sizeof(int) ). Como o ponteiro foi declarado como int*, não é necessário usar sizeof(), basta fazer a adição. Se fosse um ponteiro genérico (void*), aí seria necessário usar sizeof().

Compartilhar este post


Link para o post
Compartilhar em outros sites

A declaração está dcerta.

Como eu disse, um vetor é um ponteiro. Você pode manipular v diretamente. Mas, se quiser, pode criar p também, para sermanipulado.

 

Suponha o vetor v que está sendo passado como parâmetro.

 

v == &v[0]

 

ou seja, a variável v aponta para o endereço de v[0].

 

Isso mostra que um vetor é um ponteiro que aponta para um endereço de memória. Mais precisamente o endereço do primeiro elemento do vetor

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Aí fica fácil entender a manipulação:

 

Sendo p um ponteiro, *p é o valor presente na memória cujo endereço é p.

Logo:

 

*(p + 2) corresponde ao valor cujo endereço é o valor de p somado a duas unidades do tipo do ponteiro (nesse caso, p + 2*sizeof(int) ). Como o ponteiro foi declarado como int*, não é necessário usar sizeof(), basta fazer a adição. Se fosse um ponteiro genérico (void*), aí seria necessário usar sizeof().

hummmmm entendi entaum ao invez de usar o p posso mudar tudo para o v tal como foi feito no bolha que você me passou.... sempre pensando em como desejo somar meus ponteiros usando ou nao o sizeof.... legal.... vou continuar a mexer aki... valeo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

A declaração está dcerta.

Como eu disse, um vetor é um ponteiro. Você pode manipular v diretamente. Mas, se quiser, pode criar p também, para sermanipulado.

 

Suponha o vetor v que está sendo passado como parâmetro.

 

v == &v[0]

 

ou seja, a variável v aponta para o endereço de v[0].

 

Isso mostra que um vetor é um ponteiro que aponta para um endereço de memória. Mais precisamente o endereço do primeiro elemento do vetor

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Aí fica fácil entender a manipulação:

 

Sendo p um ponteiro, *p é o valor presente na memória cujo endereço é p.

Logo:

 

*(p + 2) corresponde ao valor cujo endereço é o valor de p somado a duas unidades do tipo do ponteiro (nesse caso, p + 2*sizeof(int) ). Como o ponteiro foi declarado como int*, não é necessário usar sizeof(), basta fazer a adição. Se fosse um ponteiro genérico (void*), aí seria necessário usar sizeof().

hummmmm entendi entaum ao invez de usar o p posso mudar tudo para o v tal como foi feito no bolha que você me passou.... sempre pensando em como desejo somar meus ponteiros usando ou nao o sizeof.... legal.... vou continuar a mexer aki... valeo....

 

Desculpa estar apagando os codigos mas vou abrir o jogo com você..... sou estudante do 3º semestre da faculdade de ciencia da computacao...... fiquei de DP do 2º semestre em C pois o professor nao ensinava direito... passava uma lousa de codigo para que nunca tinha visto aquilo era um palco dos horrores.... explicava de qq jeito e depois dava exercicios.. qdo a gente ia perguntar algo para tirar duvida, ele dizia q era para gente se virar.... peguei raiva dessa materia e nao participei mais da aula principalmente depois q fui reclamar com a coordenacao e eles disseram que era para falar com o professor e que eles nao podiam fazer nada..... foi revoltante..... acontece que agora nesse semestre estou tendo outra vez linguagem C, aprendi alguma coisa mas nao o suficiente, pois nao tive a base do comeco..... o professor foi super bacana comigo me ajudou bastante mas nao foi suficiente e agora tenho que entregar esse trabalho hoje e nao to conseguindo sair do lugar com o metodo de selecao..... soh consigui chegar ate onde ja te mostrei.... ta muito dificil para mim..... mas seja o que Deus quiser.... vamos com o que tenho mesmo e vou torcer para que de certo.... to precisando de no minimo 7,5 e espero que consiga...

 

Muito obrigado pela forca...

 

Quanto a estar apagando os codigos, eh por medida de seguranca pois meus colegas de classe estao desesperados atras de codigos na net para poder entregar.... por isso estou apagando para nao copiarem o que ja fiz........

 

valeo brother.... t++++

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.