ALGORITMO BUBBLE SORT [RESOLVIDO]

1. ALGORITMO BUBBLE SORT [RESOLVIDO]

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 05/06/2013 - 20:51h

Pessoal, estou fazendo um trabalho de faculdade e estou tendo que ordenar um vetor [ matriz ]

Estou utilizando o DEV C++ (é eu sei, eu uso (ru)windows, mas já instalei o CENTOS em outra minha máquina aqui para tentar simular um servidor) e embora eu não encontre erros de programação o programa não ordena a matriz. Pode ser tanto do menor para o maior quanto ao contrario. Fiz o mesmo código, em pseudo codigo, simplesmente copiando as palavras do código por mim feito transformando em portugues e rodou! Ordenou certinho, já passei tres dias tentando fazer essa ordenação e agora recorro a vocês.

Eis o código em C

#include <stdio.h>
#include <stdlib.h>

int matriza[2];
int matrizb[3];
int matrizc[5];
int y;
int x;
int aux;
int ordem;
main()
{

y=1;
while(y<=2) {
printf("Digite um valor na linha %d da matriz A: ",y);
scanf("%d",&matriza[y]);
y++;
}
y=1;
while(y<=3) {
printf("Digite um valor na linha %d da matriz B: ",y);
scanf("%d",&matrizb[y]);
y++;
}

for(y=1;y<=2;y++) {

matrizc[y] = matriza[y];
}
for(y=1;y<=3;y++) {
matrizc[y+2] = matrizb[y];
}

for(y=1;y<=5;y++) {
printf("O valor da matriz C na linha %d eh %d\n",y,matrizc[y]);

}

for(y=1;y<=5;y++)
{
for(x=1;x<=4;x++) {
if(matrizc[x]<matrizc[x+1]) {

aux = matrizc[x+1];
matrizc[x+1] = matrizc[x];
matrizc[x] = aux;

}
}

}



for(y=1;y<=5;y++) {

printf("O valor da matriz C na linha %d eh: %d\n",y,matrizc[x]);

}

system("PAUSE");
return 0;
}


--------------------------------------------------------------

Agora eis o pseudo-código

algoritmo "semnome"
// Função :
// Autor :
// Data : 05/06/2013
// Seção de Declarações
var
x: inteiro
y: inteiro
aux: inteiro
matrizc: vetor[1..4] de inteiro
inicio
// Seção de Comandos

para y de 1 ate=4 faca

escreva("Entre com um valor:")
leia(matrizc[y])

fimpara
para y de 1 ate=4 faca
para x de 1 ate=3 faca
se(matrizc[x]>matrizc[x+1]) entao
aux <- matrizc[x+1]
matrizc[x+1] <- matrizc[x]
matrizc[x] <- aux
fimse
fimpara
fimpara

para y de 1 ate=4 faca
escreval("O valor na matriz C e",matrizc[y])
fimpara


fimalgoritmo


--------------------------------------

Poderiam me ajudar por favor....é que é um pouco urgente.


  


2. MELHOR RESPOSTA

Guilherme
guipsp

(usa Ubuntu)

Enviado em 06/06/2013 - 12:06h

O em c vetor inicia em 0?. Quando você declara matriza[2] fica {0,1}, não?

Iniciando em zero ele ordenou aqui corretamente nos dois testes que fiz, veja:


#include <stdio.h>
#include <stdlib.h>

int matriza[2];
int matrizb[3];
int matrizc[5];
int y;
int x;
int aux;
int ordem;
main()
{

y=0;
while(y<2) {
printf("Digite um valor na linha %d da matriz A: ",y);
scanf("%d",&matriza[y]);
y++;
}
y=0;
while(y<3) {
printf("Digite um valor na linha %d da matriz B: ",y);
scanf("%d",&matrizb[y]);
y++;
}

for(y=0;y<2;y++) {
//1 e 2
matrizc[y] = matriza[y];
}
//1,2 e 3
//1,2
//3,4,5
for(y=0;y<3;y++) {
matrizc[y+2] = matrizb[y];
}

for(y=0;y<5;y++) {
printf("O valor da matriz C na linha %d eh %d\n",y,matrizc[y]);

}

for(y=0;y<5;y++)
{
for(x=0;x<4;x++) {
if(matrizc[x]<matrizc[x+1]) {
aux = matrizc[x+1];//5
matrizc[x+1] = matrizc[x];//3
matrizc[x] = aux;//5
}
}

}



for(y=0;y<5;y++) {

printf("O valor da matriz C na linha %d eh: %d\n",y,matrizc[y]);

}

system("PAUSE");
return 0;
}


3. Re: ALGORITMO BUBBLE SORT [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 06/06/2013 - 08:41h

Veja algo sobre: qsort.

PS: este site precisa de reparos, perdi comentários ... sendo breve para não xingar ;)



4. OOK

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 06/06/2013 - 23:26h

Valeu pela ajuda, coloquei iniciando em zero e deu certo aqui também, eu estava colocando em um para não aparecer "Digite o valor da linha 0" achei que colocando um ia dar na mesma.

Mas tive uma ideia, na hora de colocar os numeros das linhas eu vou somar um, deem uma olhada:



#include <stdio.h>
#include <stdlib.h>

int matriza[2];
int matrizb[3];
int matrizc[5];
int y;
int x;
int aux;
int ordem;
main()
{

y=0;
while(y<2) {
printf("Digite um valor na linha %d da matriz A: ",y+1);
scanf("%d",&matriza[y]);
y++;
}
y=0;
while(y<3) {
printf("Digite um valor na linha %d da matriz B: ",y+1);
scanf("%d",&matrizb[y]);
y++;
}

for(y=0;y<2;y++) {
//1 e 2
matrizc[y] = matriza[y];
}
//1,2 e 3
//1,2
//3,4,5
for(y=0;y<3;y++) {
matrizc[y+2] = matrizb[y];
}

for(y=0;y<5;y++) {
printf("O valor da matriz C na linha %d eh %d\n",y+1,matrizc[y]);

}

for(y=0;y<5;y++)
{
for(x=0;x<4;x++) {
if(matrizc[x]<matrizc[x+1]) {
aux = matrizc[x+1];//5
matrizc[x+1] = matrizc[x];//3
matrizc[x] = aux;//5
}
}

}



for(y=0;y<5;y++) {

printf("O valor da matriz C na linha %d eh: %d\n",y+1,matrizc[y]);

}

system("PAUSE");
return 0;
}


Ok? Valeu galera!!.

Eu tenho outra dúvida mas vou abrir outro tópico. Deem um help lá!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts