From d5dfc53dd59572b8db3398784ab2f1bc8637c763 Mon Sep 17 00:00:00 2001
From: Pedro Folloni Pesserl <fpesserl7@gmail.com>
Date: Tue, 15 Nov 2022 22:40:44 -0300
Subject: [PATCH] implement bubble sort (buggy)

---
 tp3/tp3   | Bin 24168 -> 24688 bytes
 tp3/tp3.c |  58 +++++++++++++++++++++++++++++++++++++++---------------
 2 files changed, 42 insertions(+), 16 deletions(-)

diff --git a/tp3/tp3 b/tp3/tp3
index 5ed200ef4059a631b90617d1ae6bf71858e94880..8c908ef36069626952979641e37e84ab8f2e98cf 100755
GIT binary patch
delta 4891
zcmaE{hw;M!#t9ls1>qC5?r}}!W&ne!+>?bE^|%CB!8`^5*3DjwZj78?AY6tolV>uW
z7tuQG!@}&WWmtGbWo5{x=u6w#9eOv{FyG=8P~&1?@aW}T&k3SzO;|Rk3C1uo&0(2*
zM97ROg=O*|p){sI=E*6-s*`_-ao2lvGkA2m{_yB_ec{m^`oN=G$fHxhqucd?M|bEC
zk4}LJv4=nN%l!)V=zJRN(fmfkqqFu#XX%x0*DD?~JPtl!_UJtR!sPG&{~n#LFFcxS
zUoez%?Ety-r3NDd!*SOKAolA}ka;sadPR<cxL~__Wtc$f>KR_RF)=WBbTXqWx#7Wh
z0py_MOCG&ES0VaBUwAN{0=t;0+4TWqx9bCI*DE!PkGno$WME);xq<;?<r9!vsLe0i
z7#JAPO@86Qc)_Dv04!YZ(R_f>qn8KaFvb&L3$B4YCdtCU(0ZW65v&x&`3Mv68qo9a
z|Nmy!CyWr+UTJ>8XzBWZzbE_u|NqUkPZ;=HS^WP0|3A4@*oi6i_vD?zhD=7kC%+Mv
zu2<L(^2H0k-~a!Ef{Ecp?w|kvJ6+#&yT0i>{=x|o;2*j}-*|Mpe&_@{_9jH|2a4c~
zKmY$j1b#qNwZjFV+PMFNBM)j8R29>=f0KPh6qug;nw&49&NTbi<QXDHOya*LpAqTg
zVd7+9fH>;W&&i3RZcJW3C$AKh=9$R>6L<bO`GTkzPZeB1@#p4GqE5^P6F_OnG2Exu
zHd%>*!7<FU^O|F*XXjVP5Xa6xp&q@uAxaDk!9JRQJ(}Neyx9L`bH3z3mPrae^`O)*
z%fP^J<Ng2tpp=#I;s5^tMh1q85C8vXFfuUw`0)R~03!p#!;k;}H!w0VIDh*8e*q%{
z!{JZ={~usvV6gc7|34^^<bVGEpM{Bm;l`K$|23Ex7(%}O|L?)X!0`6#|Nj|G3=HDm
z{{Qb_VqkFn_W%D1CI*K5Z~y<FU}C6eIQH%T{})UQ3{v0!|L0(4VCee(|Gx$^1H<m`
z|Nnb1Gcd6K`2RnHnSnv)$N&Ew%nS@IKmPw;!OXyL;m7~~Czu%+WPbkt|ALu;VZzV<
z|2bF~7+8M&|F6Nqz>xau|9=k_28I*A{{PQlVPLTM{r~?47Et6fFo-}X2F9w%R*GVb
z4<-jHiZia5oT;eJC@^`VqPQf-`~UwNpo&103<Cp04+8^3<m7{j@{F@5KU9=w`u$-t
zlaf-s&&U7&%|U8h`2^aSoO#*uc-T1@7#I{77#KhSm;CYn|4dLWg2}r!Gc!jsf)#;`
zHDP36Sn=uq{~Ba7n2O=@A&d+RET8}XpNS$r0VdDRP{PQ-Q2TlEDkV9l_Ro{Ml%&|U
zFfuSq{X98KNs8?XBLl<y&y!CnNwIxlWMH`VdGaeIDK-%%1_rJ#lev_o*i4uh7^1#R
z)>4*Y3t?hl$o?|fOIeDogo%M+`j^RB%2I4om>3x5e3{&(EXB5kiGktDm&vP?rP!`8
zF)%QE1v9@eF)-+So%~8!icN%>fuRAyG+}07xbk(fmWmWx2r~nN=(ovUDpG7E%nS?>
z-zI0NIC1O&sr~l<|71ZA;msFRGC3wU=vpv!NN?VyJClithh_3cCNUu$1_lNuhW{)K
z44@!oU@#S%Tx%d#{~Hv~pzvVeV4TOuz`)4Ez`(GXfq_9&2rSCL1C3}9kI4#T$VG8W
z1_lOZ4t5771_ovpc2_0_1{MxxMh;m<1_ov(_EZqX$R-b>m{<)M7#LVtSTplV7??R&
zpMea>0_mF}nZv-qP|uVA;>?r=ao9K}f(&M4Q)6UcU>9LzV7S3z$RW?fz`)_pz`(#_
z%$^Ez1xExZ9?dwr85kHiI6xX%%)uN1j*TFvSb#Ya91b95mSBzoha<=UD=<fcBM79-
z8pL5?FyIKAJl9at{~Son0VKxY!O;%lID$C=9C9G7PGC+1M>2@xB4)wFz>vUE1XAWE
zV#mb5kil^W#PI+-v4CUoWN$M`jrSnMzCr;E3=9n%`$6)4{NW4?3{4znAh-E*xG*s=
zG;^$-++!wLZw``=7LR9QV3@&C1LDL;f<kHmM<+;eEZCYA9F-t5<2c<J7#KEiOb5xt
zbLlcLFzn!14bqbUcEAA+e~?TPM*$N9!x0812}TA6R(8o53=9mMlFSSYEZTfr+Kdbg
zY#hc+AaVu+!{mEL5<#FO%*GJ~O4F5KiBu*A25wNSG%ztR@POi7n1OdXNUD>s2SkCR
zhgXQ1fq|_HEW*2tfq{Xo8_Z_sW}Mt-u2#<ticfClRZI*F{4JnF7Rm~W$vL8+=wx63
z=SKzx2F5vB%nS?yWekjw0w5OC!~}tI2F6HH2q#0JBr%tPF_sggmuX@Q0~?0{$X<?1
zObiTyznK^q7`=EvN)@2yg3AF=B4eD>!py)RRF+!8!04q1Qo=MbLI`Y{mpR0=5P?hv
zMsGF<Cx=1s3CK7DuyNakA<hIBJz!^kfSYCjHO&KJngP@_7lHhu6b42^Ua(#D6C*&T
zn?g+w5S|M%+#1RaVGx-IGF6SO0csJr3<L?yv0`Ch5GpccU{sR;c@^a9A|nPyH8lt?
zKv)~3Or0AP0!$M#7zBTV_|jl!b3;ulW#EOlpK(qH$hgV&CSu}XcR`#b4|j)X+vFS*
z36V=6Rp7AV*MzDQnmofqhDoeq@-`F0`Z7iaSYgq_3@I#3#UNJPgccT{q)7e30#a7g
z4_ILVDk~TmCeJq%A1y6tS6WCSmlpe(85kHFxOJEr7}iQnK5OpIn*<Um1B>`bO;)rp
zl#K<6l=FbpfbsypD~O*1R&hgea=wKluL?*c2`rK#IeD*zq3j}%NHScHa5IP>1um5&
zBqwuQdh>1vi3EW~&PYs7w)Ex<0Eu|9l}Jq9ZmA?Y2gE}Z7{W#%z6)5rzr^HkmU>Lg
z5|h=eteGx}PfoV7<tzZntFtAEPhM%I%)1f9lLxEj6Q6w3N||>#NJI?m#_eL0Ijxm>
ztwACJV3A(2$(Gj2ywxBPPOwP4*yK!WWnPe{8Ck*Rn2K$lX)VGyd5?{(m=G%iGlvzo
zHMb?Vr!bQQ1B0*$12f;`dp3$3)14$4g&7z`C%?9lW)z#;U?aX+&UPmw`*Kh{%<y*d
zMTcpVOYGk(wXiaJvuc&Ia(`xJTYH_AaV@Kj6DvQ59V;t`7b{mOE9b(=Rt{42Vhl_y
z%(kqYAd16=RRBzTvGRdv8&(MrWyQ+Gz{JAn#md&s%2CS7841$PT*9gn$;!cD!zyXR
z%E3{>%6^Si(VLZ(!-iGNhLx40gq7<$t26@>3zIu5$PPv?R%VbXX{;Q5tenhT^FYqC
zDW9C<;3&?thn0I7E9dE3tV|q!tgIZutZW>j9NwGvIS4T_nTl<`<S5L<Qj(fmF!_md
zK6_?fS!z*9>gFJqAB?QU<%tEwlRe#>#PW+$Qu7jv;>%J?@{8h&5|cCY^Ad9=ce#Ds
zT;txt$kZV{naR_Q(P6Wvr#%xBkLu(u?|F>#Cu{o1Yc@zjN<V0Cm_dn=fkB8tfC0VY
zu$)}zBhKgzB4rYwYS7DkP)A|1p{FntgW=?bKH{FB>JnrYtc2BqSjEr<)sJ4+Erg1f
zNI(=uKq!WFlNo)*J-0$-<DuoX9#mEaB+ewr&;j)cRG48eNSr}{ff;I=4^-kH$PbKn
z!Q{uu6Me-Q|AN@8GE58%LX$T#2}|lTF)#=)NHQ=uK(#<Ao5>%2#U;H#>KFtV5Oowp
zI%Tq=pLl8^s6J;9f;9X=%^ip&1E>uG3XAPf*Mpi;AgL~>X-VQB9s@%GgkqQq6&HZ|
z3RJm+q?UrjL9U#<!B3*z6vSf?U~muw$uThKLnwxwP;m)Khycv*hoIuUP*=cW<P21t
z59*2#h&BdL-7LT$#UOwd689kL>lx6SL60F43}?^+{WVnl2Gl_%Pz%06#Z%D4|3St5
zq2{PU)w6?IFAM?<-QX5JHv<E#dnP~mqQAJLB~;o+3Zgy{LNT~cW(*K#31((s0HseO
zhFqw+wP@<fq2iaI;a~{WUp+Z7K%7+;<fzFTnM5{E3{YgmmFqSJYQXd9jlc`co0o?^
zWM*>Zn%ots#|2BI9nzBzMYb`1nd}**FX*5Mu?9w8*xVUq&&2qA^2r!;&L$g(q|Ri{
zSaYs*_7L7|*2!M6W}Kd`5bnvzow4Se5}puV!sL^&=A0El5Z?63oN?w{{9zDY6yxMm
Gp>hDFVH0rx

delta 3941
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

diff --git a/tp3/tp3.c b/tp3/tp3.c
index 434343a..b9b2a1a 100644
--- a/tp3/tp3.c
+++ b/tp3/tp3.c
@@ -23,23 +23,50 @@ void imprimir_vetor_racional(racional **vet, int tam) {
 }
 
 /* retorna um vetor de tam ponteiros para numeros racionais validos gerados aleatoriamente */
-/* retorna NULL em caso de falha                                                           */
+/* retorna NULL em caso de falha */
 racional **aleatorio_vetor_racional(int tam) {
 	racional **vet;
 	if ( !(vet = malloc(tam * sizeof(racional*))) )
 		return NULL;
 	int i;
-	for (i = 0; i < tam; i++) {
+	for (i = 0; i < tam; i++)
 		*(vet + i) = sortear_r();
-	}
 	return vet;
 }
 
+/* inverte dois ponteiros para racional */
+void inverte(racional *r1, racional *r2) {
+	racional temp = *r1;
+	*r1 = *r2;
+	*r2 = temp;
+}
+
 /* retorna um vetor de tam ponteiros para numeros racionais que apontam em ordem crescente para os 
- * racionais apontados pelo vetor recebido no parametro. Defina outras funcoes para te ajudar caso
- * ache necessario */
+ * racionais apontados pelo vetor recebido no parametro. */
+/* essa funcao eh uma implementacao do bubble sort */
 racional **ordenar_vetor_racional(racional **vet, int tam) {
-	
+	racional **ord;
+	if ( !(ord = malloc(tam * sizeof(racional*))) )
+		return NULL;
+
+	int i;
+	for (i = 0; i < tam; i++) {
+		*(ord + i) = criar_r();
+		*(ord + i) = *(vet + i);
+	}
+
+	int swaps = 1;
+	while (swaps) {
+		swaps = 0;
+		for (i = 0; i < tam-1; i++) {
+			if (menor_r(*(ord + i+1), *(ord + i))) {
+				inverte(*(ord + i+1), *(ord + i));
+				swaps++;
+			}
+		}
+	}
+
+	return ord;
 }
 
 /* libera a memoria alocada em um vetor vet de tam ponteiros para numeros racionais */
@@ -55,33 +82,32 @@ racional **liberar_vetor_racional(racional **vet, int tam) {
 }
 
 int main() {
+	/* inicializa semente randomica */
+	srand(0);
+
     racional **v, **w;
     /* v e w são vetores de ponteiros para racionais (racional *)
        alternativamente poderia ser declarado como racional *v[] */
     
     int tam;
-
-    /* inicializa semente randomica                            */
-    /* depois pode trocar para, por exemplo, srand (time (0)); */
-    srand(0);
-
     /* ler o tamanho do vetor de racionais */
     tam = ler_tamanho();
 
     /* aloca v com tam ponteiros para racional */
     v = aleatorio_vetor_racional(tam);
-    /*  lembre-se que a funcao acima retorna NULL em caso de falha */
+    /* a funcao acima retorna NULL em caso de falha */
 
     /* chama a funcao para ordenar o vetor */
     w = ordenar_vetor_racional(v, tam); 
-    /*  lembre-se que a funcao acima retorna 0 em caso de falha */
+    /* a funcao acima retorna NULL em caso de falha */
 
     /* imprime o vetor ordenado */
-    imprimir_vetor_racional(v, tam);
+	imprimir_vetor_racional(v, tam);
+    imprimir_vetor_racional(w, tam);
 
-    /* libera toda memoria alocada dinamicamente        */
-    /* nao esqueca de testar com valgrind para conferir */
+    /* libera toda memoria alocada dinamicamente */
 	v = liberar_vetor_racional(v, tam);
+	w = liberar_vetor_racional(w, tam);
 
     return 0;
 }
-- 
GitLab