Hitta matchningar i 2 Arrys C#

Permalänk

Hitta matchningar i 2 Arrys C#

Hej. har letat en del men hittar inte något bra svar.
Hur hittar men matchning i två arrays med loopning och utan metoder?
på ett sätt så de hittade resultaten skrivs ut.

Permalänk
Medlem
Skrivet av NoobBiscotti:

Hej. har letat en del men hittar inte något bra svar.
Hur hittar men matchning i två arrays med loopning och utan metoder?
på ett sätt så de hittade resultaten skrivs ut.

Du går igenom ena arrayen med en loop, och för varje iteration av den loopen så itererar du över den andra arrayen.
Se det som en tabell där du har rader och kolumner:

Tabellen har kolumnerna X och raderna Y.
För varje rad Y vill du gå igenom alla dina kolumner X.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Medlem

vad innebär utan metoder?

jag har ingen erfarenhet av c#, men lär mig C just nu...

Visa signatur

Ge mig en kaka till kaffet.

Permalänk
Medlem
Skrivet av Deerhall:

vad innebär utan metoder?

jag har ingen erfarenhet av c#, men lär mig C just nu...

Antagligen att du inte får använda dig av några hjälpfunktioner som finns i C# T.ex. List.Contains()/LinQ m.m.
En egen algoritm helt enkelt.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk

Jo jag är väldigt ny på detta jag med.
Men jag får liksom inte till det titta igenom så. jag vet inte om det är för att värdena inte är sorterade eller något annat.

här är iaf min kod
https://pastebin.com/ptCdzaiW

Permalänk
Medlem
Skrivet av NoobBiscotti:

Jo jag är väldigt ny på detta jag med.
Men jag får liksom inte till det titta igenom så. jag vet inte om det är för att värdena inte är sorterade eller något annat.

här är iaf min kod
https://pastebin.com/ptCdzaiW

Vilket index är det du använder för att hämta ett värde i VekTor? Om vi tar din kod:

for (int i = 0; i < VekTor.Length; i++) { for (int j = 0; j < VekTor.Length; j++) { if (VekTor[j] == SlumpVek[j]) { VinstTal = true; } } }

Du går dessutom igenom samma array 2 gånger. Du vill såklart gå igenom VekTor sedan vill du gå igenom SlumpVek (eller tvärtom, spelar ingen roll).
Tänk på vilken index-variabel du använder när du sedan hämtar värdet från dina arrayer. Det är viktigt att du håller isär dessa två! Just nu använder du samma index för både VekTor och SlumpVek, detta gör att du alltid kommer kolla samma index med varandra (VekTor[2] jämförs bara med SlumpVek[2]).

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Medlem
Skrivet av NoobBiscotti:

Jo jag är väldigt ny på detta jag med.
Men jag får liksom inte till det titta igenom så. jag vet inte om det är för att värdena inte är sorterade eller något annat.

här är iaf min kod
https://pastebin.com/ptCdzaiW

Jag hann inte läsa din kod innan jag skrivit en själv i C, kanske kan det hjälpa?
Tänk på att jag inte har mycket erfarenhet och skippade att göra dynamisk array osv.
https://pastebin.com/y59axrMU

----------------------

Det @Pamudas säger stämmer nog, du använder variabeln j på båda när du jämför VekTor och SlumpVek.

Visa signatur

Ge mig en kaka till kaffet.

Permalänk

Snabbt skummat så gissar jag att rad 117 är ett problem: if (VekTor[j] == SlumpVek[j])
Där kollar du bara om parallela indicies har samma värde. Det du vill kolla är var enskilt element i ena arrayen mot alla andra element i den andra.

Testa byt ut j mot i på VekTor, så: if (VekTor[i] == SlumpVek[j])
Borde inte spela någon roll om du använder samma array för size/length för båda loopar i det här fallet då båda alltid har storlek 10 vad jag kan se, men du borde antagligen ändra det för att vara tydlig och så att det inte går sönder om arrayerna av någon anledning inte skulle matcha i storlek pga av någon potentiell framtida ändring.

Permalänk
Medlem

Skulle värdena vara sorterade skulle du kunna använda binärsökning istället för sekventiell sökning, det är mycket snabbare (spelar ingen roll med 10 värden). På rad 14 skapar du en ny Random för varje tal, får du ok tal av det eller blir alla samma?

Slå ihop villkoren SpelarVal<=0 och SpelarVal>25, de är ett intervall-villkor och borde stå i samma if-sats.

if (VekTor[j] == SlumpVek[j]) har j på båda platser, antar att en ska vara i. Namnge gärna variablerna efter vad de har för syfte, VekTor talar bara om typen, inte vad den har för syfte.

falskInput är ett oklart namn och den verkar användas lite här och där, är inte säker på att du använder den konsekvent. Jag tror det är lättare att resonera kring variabler om man inte har extra negationer och skulle rekommendera ex. inputÄrGiltig (oftast brukar man inte använda svenska för variabler men det är upp till din lärare).

Visa signatur

RAID is not a backup

Permalänk

Tusen tack för alla hjälpsamma svar!
Går en Hermods distans ut bildning och detta har varit mer hjälpsamt än skolan haha

jo random talen slår ut olika men kan bli dubbel av ett värde ibland.

får väl hoppas att detta funkar

Permalänk

Tusen Tack igen! nu funkar det!
måste bara hitta det sett så den skriver ut alla rätt svar man har för nu skriver den bara ut ett

Permalänk
Medlem
Skrivet av NoobBiscotti:

Tusen Tack igen! nu funkar det!
måste bara hitta det sett så den skriver ut alla rätt svar man har för nu skriver den bara ut ett

Tänk om det fanns en datastruktur som håller flera värden

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem
Skrivet av noMad17:

Tänk om det fanns en datastruktur som håller flera värden

Oj, går det? Tänker du till exempel ett USB-minne?

Visa signatur

i5-7600k . GTX 1080 . 16 GB

Permalänk

haha joo blir väl att göra en till array

Permalänk
Medlem
Skrivet av NoobBiscotti:

jo random talen slår ut olika men kan bli dubbel av ett värde ibland.

Orsaken till det är för att Random är en PRNG (Pseudo Random Number Generator) som använder en algoritm för att räkna fram tal som ser slumpmässiga ut. Varje nytt tal räknas fram baserat på det föregående talet, och för det första talet används ofta datorns klocka.

Om du skapar en ny instans av Random för varje slumptal du vill generera så börjar du om från början på algoritmen hela tiden, och gör man det snabbt nog så hinner klockan inte ändras och man får då samma slumptal flera gånger på raken. Det tänkta sättet att använda Random är därför att bara skapa en instans och använda den för att generera alla slumptal.

Permalänk

Ahaa. och hur gör man för att komma undan det?

Permalänk
Medlem
Skrivet av NoobBiscotti:

Ahaa. och hur gör man för att komma undan det?

Du kan använda dig av srand så kommer du undan det.

srand(time(NULL)); (detta behöver du bara skriva en gång)
int r = rand();

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem
Skrivet av NoobBiscotti:

Ahaa. och hur gör man för att komma undan det?

Skapa din Random innan loopen istället för i den så får du bara en och använder samma varje gång loopen körs.

Visa signatur

RAID is not a backup