10 svar
332 visningar
tjejkod är nöjd med hjälpen
tjejkod 6
Postad: 6 mar 2023 20:49

Hur skriver jag en For-loop?

Hej!

Jag försöker skriva ett program där användaren ska välja hur många tal som ska skrivas in och sedan ska talen summeras. 

Jag har provat på alla möjliga sätt i två dagar nu men jag har fastnat totalt!

Vad är det jag missar?

Varför loopar det inte?

Summan blir antingen bara "0" eller så blir det siffran som jag skrev in.

Här är koden jag har än så länge:

 

static void Main(string[] args)
{

 

Console.WriteLine("Hur många tal vill du skriva in?");
Int32.TryParse(Console.ReadLine(), out int antal);

List<int> sifferlista = new List<int>();

int summa = 0;


for (int i = 0; i < 0; i++)
{
Console.WriteLine(sifferlista[i]);

}

Console.WriteLine("Skriv in ett tal:");
Int32.TryParse(Console.ReadLine(), out int result);
sifferlista.Add(result);

 

foreach (int nummer in sifferlista)
{
summa += nummer;

}
Console.WriteLine("Summan av alla tal blir: " + summa);
Console.ReadLine();

 

Finns det någon där ute som kan hjälpa mig att få polletten att trilla ner?

 

Tack!

CurtJ 1159
Postad: 6 mar 2023 21:36

for (int i = 0; i < 0; i++) innebär att i initieras med  värdet 0 och sen exekverar forloopen så länge som villkoret i<0 int är uppfyllt och det är inte uppfyllt initialt så därför exekverar inte den koden. 

Laguna Online 28701
Postad: 6 mar 2023 21:41

Vad skulle den första loopen skriva ut? Det finns ju ingenting i sifferlista ännu.

tjejkod 6
Postad: 7 mar 2023 05:53

”I det här programmet ska användaren först få skriva in ett tal. Det här talet ska användas för att avgöra hur många tal användaren vill spara. När vi har sparat så många tal ska vi summera alla talen. Så det här är stegen programmet ska följa, i ordning;

 


Användaren väljer hur många tal de vill spara
Användaren får skriva in så många tal som de har valt.
Vi summerar alla inskrivna tal.
Vi presenterar summan.”

tjejkod 6
Postad: 7 mar 2023 05:55
CurtJ skrev:

for (int i = 0; i < 0; i++) innebär att i initieras med  värdet 0 och sen exekverar forloopen så länge som villkoret i<0 int är uppfyllt och det är inte uppfyllt initialt så därför exekverar inte den koden. 

Okej, så vad behöver jag göra?

tjejkod 6
Postad: 7 mar 2023 05:56
Laguna skrev:

Vad skulle den första loopen skriva ut? Det finns ju ingenting i sifferlista ännu.

Aha, vad är det jag ska skriva där?

Laguna Online 28701
Postad: 7 mar 2023 07:05

1. Användaren väljer hur många tal de vill spara
2. Användaren får skriva in så många tal som de har valt.
3. Vi summerar alla inskrivna tal.
4. Vi presenterar summan.”

1 gör du. 3 gör du och 4 också. Men 2 ska du göra lika många gånger som variabeln antal anger, så du behöver en loop. Just nu läser du alltid bara in ett tal.

CurtJ 1159
Postad: 7 mar 2023 12:04
tjejkod skrev:
CurtJ skrev:

for (int i = 0; i < 0; i++) innebär att i initieras med  värdet 0 och sen exekverar forloopen så länge som villkoret i<0 int är uppfyllt och det är inte uppfyllt initialt så därför exekverar inte den koden. 

Okej, så vad behöver jag göra?

Du ska läsa vad Laguna skriver längst ner (#7) och försöka själv så hjälper vi  dig. Det är inte meningsfullt om vi skriver koden åt dig du du inte lär dig något av det. Det är egen erfarenhet du lär dig av. 

Som svar på grundfrågan (din titel) så skriver du en for-loop som jag antyder ovan. De tre elementen som åtskiljs av semikolon är som följer

första elementet initierar en loop-variabel (i i det här fallet) 

andra elementet är ett villkor som anger att loopen ska exekvera ett varv till så länge villkoret är sant

tredje elementet är kod som exekveras varje loop och det används i regel för att räkna upp loopvariabeln som här 

ex: 

for (int i = 0; i < 5; i++) {

...kod

}

innebär att koden mellan måsvingarna exekveras 5 gånger. Första varvet är i=0 och villkoret (i<5) är sant. Nästa varv har i räknats upp med 1 (i++) och då är i=1 och villkoret är fortfarande uppfyllt. Det pågår tills i är uppräknat till 5 och då villkoret inte är uppfyllt längre så slutar loopen att exekvera och exekveringen fortsätter efter avslutande måsvinge. 

tjejkod 6
Postad: 7 mar 2023 15:12
Laguna skrev:

1. Användaren väljer hur många tal de vill spara
2. Användaren får skriva in så många tal som de har valt.
3. Vi summerar alla inskrivna tal.
4. Vi presenterar summan.”

1 gör du. 3 gör du och 4 också. Men 2 ska du göra lika många gånger som variabeln antal anger, så du behöver en loop. Just nu läser du alltid bara in ett tal.

Okej tack!

Jag har NÄSTAN löst det. 

Men nu när jag skrev in siffran 3 tex, så fick jag endast skriva in 2 tal sedan summerade programmet det.

Så här ser min kod ut nu:

 

static void Main(string[] args)
{
Console.WriteLine("Hur många tal vill du skriva in?");
Int32.TryParse(Console.ReadLine(), out int antal);
List<int> sifferLista = new List<int>();
for (int i = 0; i <2; i++)
{
Console.WriteLine("Skriv in ett tal:");
Int32.TryParse(Console.ReadLine(), out int result);
sifferLista.Add(result);
}
int summa = 0;
foreach (int nummer in sifferLista)
{ summa += nummer;

}
Console.WriteLine("Summan av alla tal blir:" + summa);
Console.ReadLine();

Ture 9895 – Livehjälpare
Postad: 7 mar 2023 15:37

for (int i = 0; i <2; i++)

Du måste tala om för programmet hur många varv det ska snurra runt.

Det ska det vara beroende på vad användaren matar in för värde.

Just nu går det alltid bara två ggr oberoende av vad användaren skriver in. (för i = 0 och 1) 

tjejkod 6
Postad: 7 mar 2023 15:51

Tack! Nu kom jag äntligen på det :) Vilken skön känsla. 

Svara Avbryt
Close