sommy Skrevet 11. september 2009 Del Skrevet 11. september 2009 (endret) 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 12. september 2009 av sommy Lenke til kommentar
GeirGrusom Skrevet 11. september 2009 Del Skrevet 11. september 2009 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
sommy Skrevet 12. september 2009 Forfatter Del Skrevet 12. september 2009 (endret) 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 12. september 2009 av sommy Lenke til kommentar
sommy Skrevet 12. september 2009 Forfatter Del Skrevet 12. september 2009 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
GeirGrusom Skrevet 12. september 2009 Del Skrevet 12. september 2009 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå