pasar codigo de c a visual basic 6

Iniciado por fenix129, 14 Noviembre 2011, 18:58 PM

0 Miembros y 1 Visitante están viendo este tema.

fenix129

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.

79137913

HOLA!!!

Jajaja...

LEE LAS REGLAS

NO SE HACEN TAREAS

REPORTADO

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

RyogiShiki

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.


BlackZeroX

Cita de: 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.

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!¡.
The Dark Shadow is my passion.

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson