Gå til innhold

C#: [Løst]"arrays var løsning"Lage singel loop med navn variabler


Anbefalte innlegg

si vist du feks har 30 variabler

 

feks num1 til num30, så vil det i dette tilfellet bli litt mye code som går igjen om igjen og omigjen. hvordan kan det løses med og lage en loop???

 

dette er bare en enkel fremstillign av prosjektet, men ineholder litt av samme problem stillingen eg stå med i prosjektet eg jobber med.

sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
	static void Main(string[] args)
	{
		int sumX = 0;

		int num1 = 1;
		int num2 = 2;
		int num3 = 3;
		int num4 = 4;

		for (int i = 0; i < 5; i++)
		{
			sumX = sumX + num1;	
		}
		for (int i = 0; i < 5; i++)
		{
			sumX = sumX + num2;
		}
		for (int i = 0; i < 5; i++)
		{
			sumX = sumX + num3;
		}
		for (int i = 0; i < 5; i++)
		{
			sumX = sumX + num4;
		}
		Console.WriteLine(sumX);
		Console.ReadLine();
	}
}
}

 

eneste som endrer seg her er jo variabel navnet i loopen

 

kan det løses på en eller annen måte slik at det går og sette opp kun en loop og i slutten av loopen + på et nummer i navnet på variablen?

 

slik som eg viser her men vet dette eg har skrevet her ikke vil fungere men det beskriver hva eg er ute etter, eller hva eg prøver og oppnå.

 

		static void Main(string[] args)
	{
		int sumX = 0;

		int num1 = 1;
		int num2 = 2;
		int num3 = 3;
		int num4 = 4;
		for (int i = 0; i < 5; i++)
		{
			for (int x = 0; i < 5; i++)
			{
				sumX = sumX + numvar;	
			}
			string numVar = string"num"+1;
		}
		Console.WriteLine(sumX);
		Console.ReadLine();

Endret av sommy
Lenke til kommentar
Videoannonse
Annonse

Jo, du lager en array. Men enkel algebra her viser at alle løkkene du har der er identisk med denne:

for(int i = 0; i < 5; i++)
 SumX += var1 + var2 + var3 + var4;

som igjen er identisk med dette

sumX = 5 *(var1 + var2 + var3 + var4)

 

Men hvis det er et ukjent antall variabler, må du bruke et array eller container:

var SumX = 0;
int[] arr = {1, 4, 7, 9, 11, 12, 33}; // Array initialisering
SumX = arr.Sum() * 5;

 

Hvis du vil gjøre det mer manuelt(altså uten Sum funksjonen)

var SumX = 0;
int[] arr = {1, 4, 7, 9, 11, 12, 33}; // Array initialisering
for(int i = 0; i < arr.Length; i++)
 SumX += arr[i];
SumX *= 5;

Lenke til kommentar

kjempe bra, array er det eg er ute etter. Vet at det ikke var vits og bruke di loopene i eksemplete eg skrev. Men skal bruke looper i programmet eg holder på me så prøvdte bare lage et eksemple som symboliserte det, loopene skal hente data ut fra en MySql db 30 brukere pr dato 60 dager backover i tid, og arrays var akurat det eg var ute etter :) takker..

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
	static void Main(string[] args)
	{
		int[] x;
		x = new int[4];

		x[2] = 15;

		Console.WriteLine(x[0]);
		Console.WriteLine(x[1]);
		Console.WriteLine(x[2]);
		Console.WriteLine(x[3]);

		Console.ReadLine();
	}

Endret av sommy
Lenke til kommentar

testet litt hvordan eg kan bruek arrays.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
 class Program
 {
	static void Main(string[] args)
	{
		string[] farge = new string[4] { "█████Blå█████", "█████Grøn█████", "█████Rød█████", "█████Gul█████" };

		while (true)
		{
			ConsoleKeyInfo key = Console.ReadKey(true);

			int index = (int)key.KeyChar - 48; //hex value of 0 is 30. 30 hex to dec = 48
			if (index >= 0 && index <= 3)
			{
				if (index == 0)
				{
					Console.ForegroundColor = ConsoleColor.Blue;
					Console.WriteLine(farge[index]);
				}
				else if (index == 1)
				{
					Console.ForegroundColor = ConsoleColor.Green;
					Console.WriteLine(farge[index]);
				}
				if (index == 2)
				{
					Console.ForegroundColor = ConsoleColor.Red;
					Console.WriteLine(farge[index]);
				}
				if (index == 3)
				{
					Console.ForegroundColor = ConsoleColor.Yellow;
					Console.WriteLine(farge[index]);
				}
				Console.ResetColor();
			}
		}

		Console.ReadLine();
	}
}
}

Lenke til kommentar

class App
{
 static void Main(string[] args)
 {
ConsoleColor[] colors = {ConsoleColor.Blue, ConsoleColor.Green, ConsoleColor.Red, ConsoleColor.Yellow };
string[] color_name = {"Blå", "Grønn", "Rød", "Gul"};
int index = 0;
if(int.TryParse(Console.ReadLine(), out index) && index >= 0 && index < colors.Length)
{
  Console.ForegroundColor = colors[index];
  Console.WriteLine(color_name[index]);
}
 }
}

:)

 

Husk at det ofte er bedre å bruke container klassene som List<T> og lignende fremfor arrays. Det er enklere og kan være ytelsesmessig bedre, dog det er helt avhengig av hva du gjør.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...