Permalänk
Medlem

C# hjälp

Jag sitter med ett skolarbete som är i stort sett färdigt, men jag tänkte försöka mig på en extrauppgift.

För att få det att se ut som det ska så måste jag få programmet att skriva ut alla tal som är mellan värdet av en int-variabel och värdet av en annan int-variabel eller ett fast värde.

Exempel:

int variableone har värdet 10.
int variabletwo har värdet 20.

Vad jag sen vill göra med detta är att få programmet att skriva ut:

10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20

Alltså, finns det något man kan göra för att få en Console.WriteLine att skriva ut värden mellan två variabler?

Visa signatur

CPU: AMD Ryzen 7 7800X3D CO + 2133 MHz FCLK GPU: Sapphire RX 7900 XT Pulse OC
RAM: Corsair 2x16GB 6000 MT/s CL30 (Hynix) BZ subtimings
MB: ASUS ROG Strix B650E-F Gaming WIFI SSD: Kingston KC3000 2TB PSU: Corsair RM850x

Permalänk
Medlem

Kan du inte bara använda en for-loop som loopar från variabelone till variabeltwo, förutsatt att two > one alltid?

Visa signatur

"A good discussion is like a miniskirt; Short enough to pertain interest and long enough to cover the subject"
何回やっても何回やってもエロゲが終わらない

Permalänk
Hedersmedlem

for (int i=start; i<=end; i++) Console.WriteLine(... hur man nu gör i C# ...);

Det kanske går med nåt inbyggt också, men det känns lite tveksamt.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

For-loop fungerar! Dock så krävs det lite mer för att det ska se ut som jag vill. Exakt såhär vill jag att den ska skriva ut talen:

10 11 12 13 14 15 16 17 18 19 20

Alltså, med ett space emellan varje tal, men på samma rad. Console.Write istället för Console.WriteLine gör ju att de hamnar på samma rad, men då ser det ut såhär:

1011121314151617181920

Finns det kanske någon trim-funktion som tvingar in mellanslag eller något liknande? Tack för hjälpen hittils, pojkar.

Visa signatur

CPU: AMD Ryzen 7 7800X3D CO + 2133 MHz FCLK GPU: Sapphire RX 7900 XT Pulse OC
RAM: Corsair 2x16GB 6000 MT/s CL30 (Hynix) BZ subtimings
MB: ASUS ROG Strix B650E-F Gaming WIFI SSD: Kingston KC3000 2TB PSU: Corsair RM850x

Permalänk
Medlem

Ett alternativ som alltid räknar från det lägsta av 2 tal.

Random random = new Random ( ); int i = random.Next ( 20 ); int j = random.Next ( 20 ); Console.WriteLine ( string.Format ( "i = {0}, j = {1}", i, j ) ); for ( int n = Math.Min ( i, j ); n <= Math.Max ( i, j ); ++n ) { Console.Write ( n + " "); }

Permalänk
Medlem

Jo det där fungerade, men jag vet inte riktigt hur jag ska strukturera det. Det är nämligen så att jag även ska ha lite text och skriva ut några andra variablevärden. Såhär:

Console.Write("text {0} text {1}.", variableone, variabletwo --här ska uppräkningen ske--

Så först lite text med två variabelvärden i sig och sen efteråt så räknar den upp samma variabelvärden och alla tal mellan dem. På samma rad. Ledsen om jag är jobbig.

Visa signatur

CPU: AMD Ryzen 7 7800X3D CO + 2133 MHz FCLK GPU: Sapphire RX 7900 XT Pulse OC
RAM: Corsair 2x16GB 6000 MT/s CL30 (Hynix) BZ subtimings
MB: ASUS ROG Strix B650E-F Gaming WIFI SSD: Kingston KC3000 2TB PSU: Corsair RM850x

Permalänk
Hedersmedlem

Använd Write istället för Writeline så slipper du radbrytningar, om det är där problemet ligger.

Permalänk
Medlem

Byt ut WriteLine mot Write..

static void Main ( string [ ] args ) { Random random = new Random ( ); int i = random.Next ( 20 ); int j = random.Next ( 20 ); Console.Write ( "text = {0}, text = {1}. ", i, j ); for ( int n = Math.Min ( i, j ); n <= Math.Max ( i, j ); ++n ) { Console.Write( n + " " ); } }

Permalänk
Medlem

static void Main(string[] args) { int Start, End; Console.Write("Startvärde: "); Start = int.Parse(Console.ReadLine()); Console.Write("Slutvärde: "); End = int.Parse(Console.ReadLine()); Console.Write("\nTalen mellan {0} och {1} är: ", Start, End); for (int i = Start; i <= End; i++) Console.Write(i + " "); Console.Read(); }

Jag gissar på att det är lättare att förstå det där för dig som är nybörjare, än den som zoomster postade.

Permalänk
Medlem

Det fungerar! Om den ska räkna baklänges (startnumret är större än slutnumret), vilka ändringar behövs då? Har försökt pilla lite, men det går inte så bra. :/

Visa signatur

CPU: AMD Ryzen 7 7800X3D CO + 2133 MHz FCLK GPU: Sapphire RX 7900 XT Pulse OC
RAM: Corsair 2x16GB 6000 MT/s CL30 (Hynix) BZ subtimings
MB: ASUS ROG Strix B650E-F Gaming WIFI SSD: Kingston KC3000 2TB PSU: Corsair RM850x

Permalänk
Hedersmedlem

Byt till:
for (int i = End; i >= Start; --i)

Permalänk
Medlem

Det fungerade utmärkt, tack så jättemycket allihop.

Visa signatur

CPU: AMD Ryzen 7 7800X3D CO + 2133 MHz FCLK GPU: Sapphire RX 7900 XT Pulse OC
RAM: Corsair 2x16GB 6000 MT/s CL30 (Hynix) BZ subtimings
MB: ASUS ROG Strix B650E-F Gaming WIFI SSD: Kingston KC3000 2TB PSU: Corsair RM850x

Permalänk
Medlem

så bra att du får extrapoäng på en skoluppgift som du inte löst själv

vad är det för kul att fuska sig till det ?

Visa signatur

Har varit på detta forum på tok för länge...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av UndCon
så bra att du får extrapoäng på en skoluppgift som du inte löst själv

vad är det för kul att fuska sig till det ?

Det stog ju i första posten så han "varnade" ju oss iaf Sen är det ju frivilligt att hjälpa honom (med att fuska).