Permalänk
Medlem

Pinsamt problem i C#

Hej, har ett problem som jag tycker jag ska kunna klara av själv, men nej, det funkar bara...

Detta är det jag vill ska funka;

int Index1 = 0;
int Index2 = 0;

När Index1 = 2 så ska Index2 = 1;
När Index1 = 4 så ska Index2 = 2;
Och så vidare..

Går ju göra massor med if-satser, men tycker det blir väldigt fult och dåligt.
Hur ska jag göra för att få detta att funka?

Permalänk
Medlem

if (Index1 == 2)
Index2 = 1;
if (Index1 == 4)
Index2 = 2;

Finare kan du inte få det

Aha, du skulle fortsätta!

Om du har det i en forloop eller dylikt är det väl bara att säga att Index = i, och Index2 = i/2

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Medlem

Index2 = Index1 / 2
?

Visa signatur

Chassi: DAN A4 | MB: ASUS VI Impact | GPU: Titan X | CPU: 4770K | RAM: 2x8GB Corsair Vengeance | SSD: Samsung 830 512GB | Skärm: ASUS Swift IPS

Permalänk
Medlem

int Index1 = 2; int Index2 = Index1 / 2; eller... int Index1 = 2; int Index2 = (Index1 == 2 ? 1 : (Index1 == 4 ? 2 : 0));

Permalänk
Medlem

Vill du att index2 ska vara hälften av index1?

int index1 = 4;
int index2 = index1 / 2;

Visa signatur

i7-6700K | MSI Z170A | MSI 1080 8GB | 16GB Kingston HyperX | Intel 600P 256GB | Samsung EVO Basic 840 250GB x2 raid 0 | Corsair RM 750W | 3 x Dell U2414H

Permalänk
Medlem
Skrivet av gn1p:

Vill du att index2 ska vara hälften av index1?

int index1 = 4;
int index2 = index1 / 2;

Tack för hjälpen alla ni!
Ska testa era koder om en stund

Tänkte bara, denna koden som gn1p skrev kommer inte funka tror jag. Jag vill som sagt att om Index1 = 3 så ska Index2 fortfarande stanna på 1, inte blir 1,5. Om Index1 = 4 så ska Index2 = 2.

Förlåt om det blev lite otydligt nu, skriver från min iPhone.

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Lancaith:

Tack för hjälpen alla ni!
Ska testa era koder om en stund

Tänkte bara, denna koden som gn1p skrev kommer inte funka tror jag. Jag vill som sagt att om Index1 = 3 så ska Index2 fortfarande stanna på 1, inte blir 1,5. Om Index1 = 4 så ska Index2 = 2.

Förlåt om det blev lite otydligt nu, skriver från min iPhone.

Skickades från m.sweclockers.com

En int är ett heltal, och kan aldrig vara 1,5. Koden gn1p skrev fungerar, eftersom heltalsdivision (med två intar) slänger bort resten.

Alltså:

0 / 2 = 0
1 / 2 = 0
2 / 2 = 1
3 / 2 = 1
4 / 2 = 2
5 / 2 = 2
6 / 2 = 3

osv

Visa signatur

5950X, 3090

Permalänk
Medlem
Skrivet av Lancaith:

Tack för hjälpen alla ni!
Ska testa era koder om en stund

Tänkte bara, denna koden som gn1p skrev kommer inte funka tror jag. Jag vill som sagt att om Index1 = 3 så ska Index2 fortfarande stanna på 1, inte blir 1,5. Om Index1 = 4 så ska Index2 = 2.

Förlåt om det blev lite otydligt nu, skriver från min iPhone.

Skickades från m.sweclockers.com

Det ska blir som du säger så länge du använder integers, byter du variabeltyp till double kommer datorn "räkna med decimaler". Int-variabeln kör endast heltalsdivition, med funktionen att kunna få ut resten om så önskas (% i c++, kallas modulusoperator ifall det inte funkar på c#)

Visa signatur

| R7 5800X3D @-30 i PBO2 + Noctua NH-U12s | ROG Strix B450-F | 32GB HyperX Fury Black 3200MHz | RTX 3080 TUF OC | Define R4 + Noctua NF-A14 (x2) & NF-S12A + Noctua NA-FC1 | Corsair RM 850X v2 | Samsung 970 Evo Plus 1TB + Crucial MX300 2TB | LG 27GL850

Permalänk
Medlem

Aaah, visste inte att det funkade så!
Trodde man kanske skulle få något slags error om man försökte dela en int till ett tal som inte är ett heltal. Alltid lär man sig något nytt! :')

Skickades från m.sweclockers.com

Permalänk
Medlem

Provade koden nu och det funkade perfekt

Tack allihopa återigen!