|
[ 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 ...
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|