Får inte min Array.BinarySearch att funka de retunerar alltid ett minus värde (negativa värdet på antalet i arrayen +1 ) vilket innebär att han inte hittar något. Kan det vara så att han hittar men det finns fler än en? Om du menar i bokstavsording så nej. Måste Array.BinarySearch vara i bokstavsording? Binärsökning kräver alltid sorterat data. Du kan inte söka i en osorterad text snabbare än O(n) (förutom i en del specialfall som man aldrig bryr sig om). okej då funkar inte Array.BinarySearch i mitt fall. Då varanat värde är på svenska varanat på japanska. Finns det inte något i stil med "Map" i .NET? Eller möjligtvis hashtabell? Låter som att du skulle har någon form av one-to-one relation, typ. ett Dictionary. hashtabell finns men fattar inte hur jag skall använda den? det har ju två argument Key skulle vara det svenska ordet. det är denna filen jag använder Japp skall gå åt båda hållen. Skall gå att lägga in mer språk med tiden. Funka inte med hash då det finns flera ord som är lika. > Funka inte med hash då det finns flera ord som är lika.får inte Array.BinarySearch att funka
getSweWord() retunerar en string array;
newArr får sinna värden från getSweWord() och den innehåller massa poster.
SweWord kommer från en textbox.
När jag debugar så innehåller både newArr och SearchObj värde.Jag har kollat och det som står i textboxen finns med i arrayen så det är inga problem.Så det blir något fel i själva Array.BinarySearch. Någon som ser något fel?
<code>
public string getSweJapWord(string SweWord)
{
object SearchObj = SweWord;
string[] newArr = getSweWord();
int INumber = (Array.BinarySearch(newArr, 0, newArr.Length, SweWord));
int PlatsNummer = (newArr.Length - (INumber*-1));
if (~INumber >= 0)
{
return getSweWord()[(~INumber )];
}
else
{
return getSweWord()[3];
}
}
</code>
Tacksam för svar!Sv: får inte Array.BinarySearch att funka
tex söker jag på "med" så hittar han "med" och "medarbetare" eller är sökningen exact?Sv:får inte Array.BinarySearch att funka
Sv: får inte Array.BinarySearch att funka
Sv:får inte Array.BinarySearch att funka
skulle ju kunna ha två arrayer men hur gör jag då så att jag vet vilket svenskt ord som hör samman med japanska.Sv: får inte Array.BinarySearch att funka
Hade jag skrivit det i c++ hade jag skrivit:
map<string, string> m;
while(...)
m[svenskt_ord] = m[japanskt_ord];
print(m["yxa"]); // ger japanska ordet för "yxa"
Sv: får inte Array.BinarySearch att funka
Problemet jag ser är att ett ord skulle kunna representeras av flera ord, och då skulle nog en one-to-many relation vara bättre. Å andra sidan så skulle nog en hel grupp ord kunna översättas till en hel annan grupp ord, så då skulle en many-to-many-relationen vara vettigast.
One-to-one-relation är enkelt att göra i .net, det finns inbyggt, då är det en hashtable du ska ha i .net 1.*, eller ett dictionary i .net 2/3.
One-to-many är ganska enkelt att göra, man tar då helt enkelt och gör som ovan, fast istället för ett värde så har man en array med värden.
Many-to-many är värre då man kan tänka sig att samma uppslagsord ska vara i flera grupper, och det stödjer inte de dictionarys som finns i .net, då får man börja hitta på något eget, typ:
1) dictionary med ett ord som key
2) Värde är en lista med arrayer med värden
3) Arrayerna kan finnas i flera listor på flera poster i dictionarytSv:får inte Array.BinarySearch att funka
h.Add("Key1", "Value1");
key skulle ju vara nummret på arrayen men det ändras ju när jag kör en sortering på den.
Kan man köra Array.BinarySearch på en tvådimitonell array? I så fall bara sortera på förstadelen av arrayen och då får jag ju fram det japanska ordet. arr[svenska_ord][japanska_ord]Sv: får inte Array.BinarySearch att funka
Value skulle vara det japanska ordet.
Behöver du kunna kolla åt båda hållen kan du ha en motsatt variant.Sv: får inte Array.BinarySearch att funka
http://www.dicts.info/uddl.php?k1=91&k2=108&format=text&create=Create+the+list+of+translations
tar dock bort infotexten innan den kommer in i arrayen sen kör jag en slipt (Tabb) och tar bort mellanslag( som det är just nu,vet att det blir fel).Som ni ser så är varranat ord svensk varrant japanskt.
Sen är det som sagts vissa ord som har olika betydelser.
Tänkte jag skulle slippa att slänga in det i en databas men det kankse är det bästa alternativet.Sv:får inte Array.BinarySearch att funka
Sv:får inte Array.BinarySearch att funka
Sv: får inte Array.BinarySearch att funka
Ta och läs mitt inlägg en gång till, har en lösning på problemet där ;)