Título: pasar codigo de c a visual basic 6
Publicado por: fenix129 en 14 Noviembre 2011, 18:58 pm
Hola amigos, necesito su ayuda para pasar este codigo de c del metodo quine macluskey que me encontre en la red pasarlo a visual basic, yo ya echo un avance pero como no tengo muchos conocimientos de la programacion en visual creo que tiene errores. asi que espero me puedan decir que tiene mal para hacer que funcione gracias y se agradecen sus respuestas. codigo en c: #include<stdio.h> #include<iostream.h> #include<conio.h> #include<math.h>
long M[50][9],q,e,pm,x,n,v,r,c,i,j,k,vc,c1=0,VM[50]; long temp,ch,MN[50][9],t=0,M1[70][9],w=0,M2[70][9]; long w2=0,M3[70][9],w3=0,con=0,w4=0,M4[70][9],M5[70][9],w5=0;
void marco (int x1,int y1,int x2,int y2);
int main() { clrscr(); textcolor(YELLOW);
marco (23,3,52,5); gotoxy(26,4); cout<<"Metodo de Quine-McClusky";
marco (8,6,72,14); gotoxy(24,8); cout<<"Digite el numero de variables.."; cin>>v; gotoxy(24,10); cout<<"Cuantos valores ingresara.."; cin>>n; clrscr();
for(i=0;i<n;i++) { clrscr(); marco (23,3,52,5); gotoxy(26,4); cout<<"Metodo de Quine-McClusky"; marco (8,6,72,14); gotoxy(20,10); cout<<"Digite el valor.."; cin>>x; vc=(v-1); c1=0;
for(j=0;j<v;j++) { c=fmod(x,2); r=x/2; x=r; M[i][vc]=c; vc=vc-1;
if(c==1) c1+=1; } if(c1==0 || c1!=0) {VM[i]=c1; }
}
for(i=0;i<n-1;i++) { for(k=i+1;k<n;k++) { //ordena la matriz por cantidad de 1 if(VM[k]<VM[i]) { temp=VM[i]; VM[i]=VM[k]; VM[k]=temp; for(j=0;j<v;j++) { temp=M[i][j]; M[i][j]=M[k][j]; M[k][j]=temp; } } } }
clrscr(); for(i=0;i<n;i++) { for(k=i+1;k<n;k++) {ch=0; for(j=0;j<v;j++) { if(M[i][j]!=M[k][j]) { ch+=1; pm=j; } } if(ch==1) { M[i][8]=5; //marca de los valores que cambian M[k][8]=5;
for(j=0;j<v;j++) { M1[w][j]=M[k][j]; M1[w][pm]=5; //asigancion en nueva matriz } w+=1; } } }
for(i=0;i<n;i++) { if(M[i][8]!=5) { for(j=0;j<v;j++) { //guarda valores que no cambian de los n entrantes MN[t][j]=M[i][j]; } t+=1; } }
//------------------------------------
for(i=0;i<w;i++) { for(k=i+1;k<w;k++) {ch=0; for(j=0;j<v;j++) { if(M1[i][j]!=M1[k][j]) { ch+=1; pm=j; } } if(ch==1) { M1[i][8]=5; //marca de los valores que cambian M1[k][8]=5;
for(j=0;j<v;j++) { M2[w2][j]=M1[k][j]; M2[w2][pm]=5; //asigna a matriz 2 } w2+=1; } } }
for(i=0;i<w;i++) { if(M1[i][8]!=5) { for(j=0;j<v;j++) { MN[t][j]=M1[i][j]; //guarda los que no cambian de m1 } t+=1; } } //---------------------------
for(i=0;i<w2;i++) { for(k=i+1;k<w2;k++) {ch=0; for(j=0;j<v;j++) { if(M2[i][j]!=M2[k][j]) ch=1; } if(ch==0) {pm=k; con=con+1; // for(q=k;q<w2;q++) //mando los repetidos al fondo { //y restrinjo las filas de la matriz for(j=0;j<v;j++) { temp=M2[q][j]; M2[q][j]=M2[q+1][j]; M2[q+1][j]=temp; } } //
}
} }
//-------------------------------------------------
for(i=0;i<w2-con;i++) { for(k=i+1;k<w2-con;k++) {ch=0; for(j=0;j<v;j++) { if(M2[i][j]!=M2[k][j]) { ch+=1; pm=j; } } if(ch==1) { M2[i][8]=5; //marca de los valores que cambian M2[k][8]=5;
for(j=0;j<v;j++) { M3[w3][j]=M2[k][j]; M3[w3][pm]=5; //asigna a matriz 3 } w3+=1; } } }
for(i=0;i<w2-con;i++) { if(M2[i][8]!=5) { for(j=0;j<v;j++) { MN[t][j]=M2[i][j]; //guarda los que no cambian de M2 } t+=1; } }
///-------------------------------------------------------
con=0; for(i=0;i<w3;i++) { for(k=i+1;k<w3-con;k++) {ch=0; for(j=0;j<v;j++) { if(M3[i][j]!=M3[k][j]) ch=1; } if(ch==0) {pm=k; con=con+1; // for(q=k;q<w3;q++) //mando los repetidos al fondo { //y restrinjo las filas de la matriz for(j=0;j<v;j++) { temp=M3[q][j]; M3[q][j]=M3[q+1][j]; M3[q+1][j]=temp; } } //
k=k-1;
}
} }
for(i=0;i<w3-con;i++) { for(k=i+1;k<w3-con;k++) {ch=0; for(j=0;j<v;j++) { if(M3[i][j]!=M3[k][j]) { ch+=1; pm=j; } } if(ch==1) { M3[i][8]=5; //marca de los valores que cambian M3[k][8]=5;
for(j=0;j<v;j++) { M4[w4][j]=M3[k][j]; M4[w4][pm]=5; //asigna a matriz 4 } w4+=1; } } }
for(i=0;i<w3-con;i++) { if(M3[i][8]!=5) { for(j=0;j<v;j++) { MN[t][j]=M3[i][j]; //guarda los que no cambian de M3 } t+=1; } } //------------------------------------------ con=0; for(i=0;i<w4;i++) { for(k=i+1;k<w4-con;k++) {ch=0; for(j=0;j<v;j++) { if(M4[i][j]!=M4[k][j]) ch=1; } if(ch==0) {pm=k; con=con+1; // for(q=k;q<w4;q++) //mando los repetidos al fondo { //y restrinjo las filas de la matriz for(j=0;j<v;j++) { temp=M4[q][j]; M4[q][j]=M4[q+1][j]; M4[q+1][j]=temp; } } //
k=k-1;
}
} }
for(i=0;i<w4-con;i++) { for(k=i+1;k<w4-con;k++) {ch=0; for(j=0;j<v;j++) { if(M4[i][j]!=M4[k][j]) { ch+=1; pm=j; } } if(ch==1) { M4[i][8]=5; //marca de los valores que cambian M4[k][8]=5;
for(j=0;j<v;j++) { M5[w5][j]=M4[k][j]; M5[w5][pm]=5; //asigna a matriz 4 } w5+=1; } } }
for(i=0;i<w4-con;i++) { if(M4[i][8]!=5) { for(j=0;j<v;j++) { MN[t][j]=M4[i][j]; //guarda los que no cambian de M4 } t+=1; } }
//---------------------------------------------- clrscr(); marco (18,9,59,12); gotoxy(20,10); cout<<"Las letras minusculas son la negacion"; gotoxy(20,11); cout<<"y las mayusculas las no negadas"; getch();
clrscr(); marco (6,2,70,25); for(i=0;i<t;i++) { for(j=0;j<v;j++) {
if(j==0) { if(MN[i][j]==0) { if(i<22) { gotoxy(20+j,3+i); cout<<"a"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"a"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"a"; } } if(MN[i][j]==1) { if(i<22) { gotoxy(20+j,3+i); cout<<"A"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"A"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"A"; } }
}
if(j==1) {if(MN[i][j]==0) { if(i<22) { gotoxy(20+j,3+i); cout<<"b"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"b"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"b"; } } if(MN[i][j]==1) { if(i<22) { gotoxy(20+j,3+i); cout<<"B"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"B"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"B"; } }
} if(j==2) {if(MN[i][j]==0) { if(i<22) { gotoxy(20+j,3+i); cout<<"c"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"c"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"c"; } } if(MN[i][j]==1) { if(i<22) { gotoxy(20+j,3+i); cout<<"C"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"C"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"C"; } }
} if(j==3) {if(MN[i][j]==0) { if(i<22) { gotoxy(20+j,3+i); cout<<"d"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"d"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"d"; } } if(MN[i][j]==1) { if(i<22) { gotoxy(20+j,3+i); cout<<"D"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"D"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"D"; } }
} if(j==4) {if(MN[i][j]==0) { if(i<22) { gotoxy(20+j,3+i); cout<<"e"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"e"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"e"; } } if(MN[i][j]==1) { if(i<22) { gotoxy(20+j,3+i); cout<<"E"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"E"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"E"; } }
} if(j==5) {if(MN[i][j]==0) { if(i<22) { gotoxy(20+j,3+i); cout<<"f"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"f"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"f"; } } if(MN[i][j]==1) { if(i<22) { gotoxy(20+j,3+i); cout<<"F"; } if(i>=22&& i<44) {gotoxy(28+j,i-19); cout<<"F"; }
if(i>=44) {gotoxy(36+j,i-41); cout<<"F"; } }
}
} }
getch();
}
Esto es lo que he realizado yo en visual: Dim M(50, 9), q, e, pm, x, n, v, r, c, i, j, k, vc, c1, VM(50) As Long Dim temp, ch, MN(50, 9), t, M1(70, 9), w, M2(70, 9) As Long Dim w2, M3(70, 9), w3, con, w4, M4(70, 9), M5(70, 9), w5 As Long
Private Sub Command1_Click() c1 = 0 t = 0 w = 0 w2 = 0 w3 = 0 w4 = 0 w5 = 0 con = 0 Do v = InputBox("Cuantas variables quieres: ", "Numeros a repetir", 0) 'Capturar los numeros n = InputBox("Cuantos elementos va a tener: ", "Numeros a repetir", 0) 'Capturar los numeros
If Trim$(n) = "" Then Exit Sub ' si presionamos cancelar salir Loop Until IsNumeric(n) ' repetir el ciclo mientras lo que se ingresa no sea un numero
For i = 1 To n ' de 1 a n x = InputBox("Digite el valor..", "Valor " & i & " de " & n, 0) 'Capturar los numeros Show Print "valor (" & i & "):" & x ' si lo quieres mostrar en el Form MsgBox "El valor de x es: " & x ' si lo quieres mostrar en un mensaje vc = (v - 1) c1 = 0
For j = 1 To v c = x Mod 2 r = x / 2 x = r M(i, vc) = c vc = vc - 1 If c = 1 Then c1 = c1 + 1 End If If c1 = 0 Then VM(i) = c1 End If Next Next
For i = 1 To n - 1
For k = i + 1 To k < n '//ordena la matriz por cantidad de 1 If VM(k) < VM(i) Then temp = VM(i) VM(i) = VM(k) VM(k) = temp For j = 0 To j < v temp = M(i, j) M(i, j) = M(k, j) M(k, j) = temp Next End If Next Next For i = 0 To i < n
For k = i + 1 To k < n ch = 0 For j = 0 To j < v
If M(i, j) <> M(k, j) Then ch = ch + 1 pm = j End If Next If ch = 1 Then M(i, 8) = 5 '//marca de los valores que cambian M(k, 8) = 5
For j = 0 To j < v M1(w, j) = M(k, j) M1(w, pm) = 5 '//asigancion en nueva matriz Next w = w + 1 End If Next Next
For i = 0 To i < n If M(i, 8) <> 5 Then For j = 0 To j < v '//guarda valores que no cambian de los n entrantes MN(t, j) = M(i, j) Next t = t + 1 End If Next
For i = 0 To i < w
For k = i + 1 To k < w ch = 0 For j = 0 To j < v
If M1(i, j) <> M1(k, j) Then ch = ch + 1 pm = j End If Next If ch = 1 Then M1(i, 8) = 5 '//marca de los valores que cambian M1(k, 8) = 5
For j = 0 To j < v
M2(w2, j) = M1(k, j) M2(w2, pm) = 5 '//asigna a matriz 2 Next w2 = w2 + 1 End If Next Next
For i = 0 To i < w If M1(i, 8) <> 5 Then For j = 0 To j < v MN(t, j) = M1(i, j) '//guarda los que no cambian de m1 Next t = t + 1 End If Next
For i = 0 To i < w2
For k = i + 1 To k < w2 ch = 0 For j = 0 To j < v If M2(i, j) <> M2(k, j) Then ch = 1 End If Next If ch = 0 Then pm = k con = con + 1 For q = k To q < w2 '//mando los repetidos al fondo '//y restrinjo las filas de la matriz For j = 0 To j < v temp = M2(q, j) M2(q, j) = M2(q + 1, j) M2(q + 1, j) = temp Next Next End If Next Next
For i = 0 To i < w2 - con
For k = i + 1 To k < w2 - con ch = 0 For j = 0 To j < v If M2(i, j) <> M2(k, j) Then ch = ch + 1 pm = j End If Next If ch = 1 Then M2(i, 8) = 5 '//marca de los valores que cambian M2(k, 8) = 5
For j = 0 To j < v
M3(w3, j) = M2(k, j) M3(w3, pm) = 5 '//asigna a matriz 3 Next w3 = w3 + 1 End If Next Next
For i = 0 To i < w2 - con
If M2(i, 8) <> 5 Then For j = 0 To j < v MN(t, j) = M2(i, j) '//guarda los que no cambian de M2 Next t = t + 1 End If Next
con = 0 For i = 0 To i < w3
For k = i + 1 To k < w3 - con ch = 0 For j = 0 To j < v If M3(i, j) <> M3(k, j) Then ch = 1 End If Next If ch = 0 Then pm = k con = con + 1 For q = k To q < w3 '//mando los repetidos al fondo '//y restrinjo las filas de la matriz For j = 0 To j < v temp = M3(q, j) M3(q, j) = M3(q + 1, j) M3(q + 1, j) = temp Next Next End If
k = k - 1 Next Next
For i = 0 To i < w3 - con
For k = i + 1 To k < w3 - con ch = 0 For j = 0 To j < v If M3(i, j) <> M3(k, j) Then ch = ch + 1 pm = j End If Next If ch = 1 Then M3(i, 8) = 5 '//marca de los valores que cambian M3(k, 8) = 5
For j = 0 To j < v M4(w4, j) = M3(k, j) M4(w4, pm) = 5 '//asigna a matriz 4 Next w4 = w4 + 1 End If Next Next
For i = 0 To i < w3 - con
If M3(i, 8) <> 5 Then For j = 0 To j < v MN(t, j) = M3(i, j) '//guarda los que no cambian de M3 Next t = t + 1 End If Next
con = 0 For i = 0 To i < w4
For k = i + 1 To k < w4 - con ch = 0 For j = 0 To j < v If M4(i, j) <> M4(k, j) Then ch = 1 End If Next If ch = 0 Then pm = k con = con + 1 For q = k To q < w4 '//mando los repetidos al fondo '//y restrinjo las filas de la matriz For j = 0 To j < v temp = M4(q, j) M4(q, j) = M4(q + 1, j) M4(q + 1, j) = temp Next Next k = k - 1
End If
Next Next
For i = 0 To i < w4 - con
For k = i + 1 To k < w4 - con ch = 0 For j = 0 To j < v If M4(i, j) <> M4(k, j) Then ch = ch + 1 pm = j End If Next If ch = 1 Then M4(i, 8) = 5 '//marca de los valores que cambian M4(k, 8) = 5
For j = 0 To j < v M5(w5, j) = M4(k, j) M5(w5, pm) = 5 '//asigna a matriz 4 Next w5 = w5 + 1 End If Next Next
For i = 0 To i < w4 - con
If M4(i, 8) <> 5 Then For j = 0 To j < v MN(t, j) = M4(i, j) '//guarda los que no cambian de M4 Next t = t + 1 End If Next
'cout<<"Las letras minusculas son la negacion"; 'cout<<"y las mayusculas las no negadas";
For i = 0 To i < t For j = 0 To j < v If j = 0 Then If MN(i, j) = 0 Then If i < 22 Then Text1.Text = "A" MsgBox "A'" 'cout<<"a"; End If If i >= 22 & i < 44 Then Text1.Text = "A'" 'cout<<"a"; End If
If i >= 44 Then Text1.Text = "A'" 'cout<<"a"; End If End If If MN(i, j) = 1 Then If i < 22 Then Text1.Text = "A" 'cout<<"A"; End If If i >= 22 & i < 44 Then Text1.Text = "A" 'cout<<"A"; End If
If i >= 44 Then Text1.Text = "A" 'cout<<"A"; End If End If
End If
If j = 1 Then If MN(i, j) = 0 Then If i < 22 Then Text1.Text = "B'" 'cout<<"b"; End If If i >= 22 & i < 44 Then Text1.Text = "B'" 'cout<<"b"; End If
If i >= 44 Then Text1.Text = "B'" 'cout<<"b"; End If End If If MN(i, j) = 1 Then If i < 22 Then Text1.Text = "B" 'cout<<"B"; End If If i >= 22 & i < 44 Then Text1.Text = "B" 'cout<<"B"; End If
If i >= 44 Then Text1.Text = "B" 'cout<<"B"; End If End If
If j = 2 Then If MN(i, j) = 0 Then If i < 22 Then Text1.Text = "C'" 'cout<<"c"; End If If i >= 22 & i < 44 Then Show Print Text1.Text = "c'" 'cout<<"c"; End If
If i >= 44 Then Text1.Text = "C'" 'cout<<"c"; End If End If If MN(i, j) = 1 Then If i < 22 Then Text1.Text = "C" 'cout<<"C"; End If If i >= 22 & i < 44 Then Text1.Text = "C" 'cout<<"C"; End If
If i >= 44 Then Text1.Text = "C" 'cout<<"C"; End If End If
End If End If Next Next End Sub
Espero y me puedan ayudar.
Título: Re: pasar codigo de c a visual basic 6
Publicado por: 79137913 en 14 Noviembre 2011, 19:15 pm
HOLA!!!
Jajaja...
LEE LAS REGLAS (http://foro.elhacker.net/programacion_visual_basic/reglas_del_foro_iexclleed_todos-t93618.0.html)
NO SE HACEN TAREAS
REPORTADO
GRACIAS POR LEER!!!
Título: Re: pasar codigo de c a visual basic 6
Publicado por: RyogiShiki en 14 Noviembre 2011, 19:36 pm
No quiero ser yo el que un día de estos tenga que mantener un código como ese, de seguro que me disparo en un pie. va en contra de todo lo que se conoce como Clean Code. Extremadamente tedioso de leer y traducir.
Título: Re: pasar codigo de c a visual basic 6
Publicado por: BlackZeroX en 15 Noviembre 2011, 04:50 am
No quiero ser yo el que un día de estos tenga que mantener un código como ese, de seguro que me disparo en un pie. va en contra de todo lo que se conoce como Clean Code. Extremadamente tedioso de leer y traducir.
jla realidad es que te tocaran peores... este esta limpio y lo entiendo bien... hay quienes hasta aRTE hacen con el codigo y no me refiero a que se entiende a la perfeccion NOOO si que haces dibujitos de eso... veras hasta concurso hay (literalmente). Dulces Lunas!¡.
Título: Re: pasar codigo de c a visual basic 6
Publicado por: seba123neo en 15 Noviembre 2011, 05:06 am
de seguro que me disparo en un pie.
yo en la cabeza ;D
|