[ mladenmp @ 03.10.2008. 15:30 ] @
Odavno Vam nisam trazio pomoc ali evo mene opet.
Dakle, imam neke funkcije iz C-a koje treba da ubacim u program koji pisem u VB.NET-u (ne pitajte me zasto nisam uzeo C#)
taj program treba da mi racuna neke kombinacije, e sad sve to savrseno radi u C-u, ali u .NET-u ne.
mozda sam pogrijesio u prevodu, pa ako neko moze da prevede ove funkcije, neka pomogne.

Code:

void combinations(int a[], int n, int k,float*x,float kv,float f){
    int i = 1, cnt = 1,prom,kk;
    int last[DUZINA];float rjesenje;

    for (i=1;i<=k; a[i] = i, last[i] = n-k+i, i++);
    
    while(!equalArrays(a,last,k)) {
        cnt++;
    
        rjesenje=rjesenje+printArray(a,k,x,kvota,fix);        
        nextCombination(a,n,k);
    }

    rjesenje=rjesenje+printArray(last,k,x,kv,f);
    printf("\n\n rjesnje je: %5.2f ",rjesenje);
}

druga funkcija
Code:

int equalArrays(int a[], int b[], int n){
    int i = 1, eq=1;
    while (eq && (i<=n)){
        eq = eq && (a[i]==b[i]);
        i++;
    };
    return eq;
}
[ Igor Gajic @ 03.10.2008. 16:44 ] @

Resenje za drugi:


Code:


bool equalArrays(int[] a, int[] b, int n)
        {
            int i = 0;
            bool eq = true;
            while (eq && (i < n))
            {
                eq = eq && (a[i] == b[i]);
                i++;
            };
            return eq;
        }



Pitanje: Koliko iskustva imas u C, kada ti indexiranje niza krece od 1 ?!?
[ mladenmp @ 03.10.2008. 22:44 ] @
Citat:
Igor Gajic: Resenje za drugi:


Code:


bool equalArrays(int[] a, int[] b, int n)
        {
            int i = 0;
            bool eq = true;
            while (eq && (i < n))
            {
                eq = eq && (a[i] == b[i]);
                i++;
            };
            return eq;
        }



Pitanje: Koliko iskustva imas u C, kada ti indexiranje niza krece od 1 ?!?


Prvo hvala za trud ali ovo ne moze da prodje u VB.NET-u
drugo nemam bas puno iskustva sa C-om ali moj program savrseno radi u C-u.
Indexiranje pocinje sa 1 zato sto je nulti element niza 0 prvi 1 i tako dalje. to tako i treba.
ova funkcija kod mene izgleda ovako:
Code:

Public Function equalArrays(ByVal a() As Integer, ByVal b() As Integer, ByVal n As Integer) As Integer
        Dim i As Integer
        i = 1
        Dim eq As Integer
        eq = 1
        While (eq And (i <= n))
            eq = eq And (a(i) = b(i))
            i = i + 1

        End While

        Return eq
    End Function

mene samo interesuje da li ovo && iz C-a odgovara mom AND iz VB-a
ili treba nesto drugo.
Pomoc bi mi bas trebala.
[ Eurora3D Team @ 04.10.2008. 01:57 ] @
Jeste && je logicko i , sto je u VB-u And
Kad kopiras iz c koda kopiraj i stil koda ... bez nepotrebnih promenljivih i sl.
Code:

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n(3), m(3) As Integer
        n(0) = 0 : m(0) = 0
        n(1) = 1 : m(1) = 1
        n(2) = 2 : m(2) = 2
        Debug.Print(equalArrays(n, m, 2))
    End Sub
    Public Function equalArrays(ByVal a() As Integer, ByVal b() As Integer, ByVal n As Integer) As Integer
        Dim i As Integer = 1
        While ((a(i) = b(i)) And (i <= n))
            i = i + 1
        End While
        If i = n + 1 Then Return 1 ' tacno
        Return 0
    End Function
End Class
[ mmix @ 04.10.2008. 10:36 ] @
I & i && su logicke operacije, samo sto je && short-circuited i radi logicku optimizaciju dok & to ne radi (uvek evaluira obe strane). & je ujedno i btiwise operator ako operandi nisu boolean.

Tako da su ekvivaletne VB.NET oepracije

Code:
C#   VB.NET

&    And
&&   AndAlso
|    Or
||   OrElse



[ Eurora3D Team @ 04.10.2008. 20:20 ] @
Pitao je za && u C - u ... ne u C#
[ mmix @ 04.10.2008. 23:40 ] @
U pravu si, mislio sam da odgovara Igoru za C# kod. Zabuna.
[ Eurora3D Team @ 05.10.2008. 10:47 ] @
Citat:
mmix: U pravu si, mislio sam da odgovara Igoru za C# kod. Zabuna.

Sad kad si mu objasnio za c# zna kako ide && u sva tri jezika :) ... tako da je odgovor kompletan
[ mladenmp @ 05.10.2008. 15:51 ] @
Ok. ljudi ukapirao sam za to cuveno &&. Funkcija equalArray je tacna.
Ali sta je sa prvom funkcijom kako nju da prevedem?
Evo mog koda u VB.NET-u kako sam ja preveo. samo recite jeli tacno ili nije.
Ako nije dodajte sta treba.
Code:

Public Function combinations(ByVal a() As Integer, ByVal n As Integer, ByVal k As Integer, ByVal x()...
... As Double, ByVal kv As Double, ByVal f As Double) As Double
        Dim i As Integer
        i = 1
        Dim cnt As Integer
        cnt = 1
        Dim last(16) As Integer
        Dim rjesenje As Double
        For i = 0 To k
            a(i) = i
            last(i) = n - k + i

        Next
        i += 1
        Dim kom As Integer
        kom = 0
        While (Not equalArrays(a, last, k)) And (kom < brkomb - 1)
            rjesenje = rjesenje + printArray(a, k, x, kv, f)
            kom = kom + 1
            nextCombination(a, n, k)
        End While
        rjesenje = rjesenje + printArray(last, k, x, kv, f)
        Return rjesenje
    End Function

da ne dodje do zabune ovo kom je promjenljiva koju sam morao da stavim da bi mi program izlazio iz petlje
bez njega se konstantno vrti u while.
[ Eurora3D Team @ 05.10.2008. 23:29 ] @
Ovde imas pozive za jos neke funkcije koje nisi iskopirao ovde ...
Na prvi pogled osim ovog kom u while petlji VB kod se razlikuje od c koda zato sto u VB-u u for petlji i pocinje od 0 a u c-u od 1 i to daje razlicite vednosti u nizu last ...