Permalänk

Programmering

jag har fastnat i en sista uppgift i programmering c# kan nån snälla hjälpa mig? jag ska hitta felen men jag kommer ingenstans.

using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
int resultat, summa, sum;
Console.WriteLine("Hur många vill du hantera?");
Int32.TryParse(Console.ReadLine(), out resultat);
List<int> intLista = new List<int>();
for (loop = 0; loop < resultat; loop++)
{
Console.WriteLine("Var god skriv in en siffra:");
Int32.TryParse(Console.ReadLine(), out sum);
intLista.Add(sum);
}

if (intLista.Count == 0)
Console.WriteLine("Ingenting har lagts till!");
//Console.ReadLine();
else
{
summa = Medelvärde(intLista);
Console.WriteLine("Medelvärdet är: " + summa);
Console.ReadLine();
}
}

static int Medelvärde(List<int> summaInt)
{
int summa;
foreach (int siffra in summaInt)
summa += siffra;
return summa / summaInt.Count;
}
}

Permalänk
Medlem

Vad får du för felmeddelande eller vad är det som inte fungerar?

Till att börja med är inte "Medelvärde" samma som "medelvärde" så det måste du fixa. Return måste skrivas "return" och ej "Return".

Permalänk
Medlem
Skrivet av Larrxi:

Vad får du för felmeddelande eller vad är det som inte fungerar?

Till att börja med är inte "Medelvärde" samma som "medelvärde" så det måste du fixa. Return måste skrivas "return" och ej "Return".

Det är förmodligen just detta som är uppgiften

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

I den här uppgiften har TS troligen fått koden som visas från läraren.
Koden innehåller medvetet fel som TS skall hitta. Därför är det extra olämpligt just i det här fallet att ge TS svaren direkt. 😊
Detta är en ganska kul övning som testar om eleven lärt sig syntaxregler och andra finesser i C#.
@kallesvenson använd gärna visual studio när du tittar på koden.
VS kommer ge dig en massa ledtrådar i felmeddelanden om vad som är problem i koden.

Visa signatur

Herman

Permalänk
Medlem

Skriv in -1 och se vad som händer också

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Skrivet av talonmas:

Skriv in -1 och se vad som händer också

tack i förväg men var menar du att jag ska skriva -1?

Permalänk
Medlem
Skrivet av kallesvenson:

tack i förväg men var menar du att jag ska skriva -1?

Kör ditt program och skriv in -1 i antal tal som du vill summera.

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Skrivet av Larrxi:

Vad får du för felmeddelande eller vad är det som inte fungerar?

Till att börja med är inte "Medelvärde" samma som "medelvärde" så det måste du fixa. Return måste skrivas "return" och ej "Return".

det är dom 3 saker som inte fungera som det ska.
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
int resultat, summa, sum;
Console.WriteLine("Hur många vill du hantera?");
Int32.TryParse(Console.ReadLine(), out resultat); <--- här finns ett porblem tror jag med console.readline
List<int> intLista = new List<int>();
for (loop = 0; loop < resultat; loop++) <--- The name "loop" does not exist in the current context
{
Console.WriteLine("Var god skriv in en siffra:");
Int32.TryParse(Console.ReadLine(), out sum);
intLista.Add(sum);
}

if (intLista.Count == 0)
Console.WriteLine("Ingenting har lagts till!");
//Console.ReadLine();
else
{
summa = Medelvärde(intLista);
Console.WriteLine("Medelvärdet är: " + summa);
Console.ReadLine();
}
}

static int Medelvärde(List<int> summaInt)
{
int summa;
foreach (int siffra in summaInt)
summa += siffra; <--- Use of unassigned local variable "summa"
return summa /= summaInt.Count;
}
}

Permalänk
Skrivet av talonmas:

Kör ditt program och skriv in -1 i antal tal som du vill summera.

jag kan inte ens köra programet för det blir fel.nåt med loppet och jag försökt massa saker.
for (loop = 0; loop < resultat; loop++) <--- The name "loop" does not exist in the current context

Permalänk
Medlem
Skrivet av kallesvenson:

jag kan inte ens köra programet för det blir fel.nåt med loppet och jag försökt massa saker.
for (loop = 0; loop < resultat; loop++) <--- The name "loop" does not exist in the current context

Det betyder att "loop" inte existerar eftersom den inte är deklarerad (declared) än. Googla på "C# declare variable" så får du veta mer om det, alternativt kan man också lösa det med en initialisering (initialize) av "loop" på plats.

Om du absolut inte hittar något:

int variable; // declare int variable = 10; // initialize

https://stackhowto.com/difference-between-instantiating-decla...

Dold text
Permalänk
Medlem
Skrivet av kallesvenson:

jag kan inte ens köra programet för det blir fel.nåt med loppet och jag försökt massa saker.
for (loop = 0; loop < resultat; loop++) <--- The name "loop" does not exist in the current context

Precis, variabeln 'loop' existerar inte. Så då måste du skapa den

Kan göras innan loopen, eller så gör man det inne i loopen vid första tilldelningen.

Läs alltid felmeddelandet, om du inte förstår vad det säger så kopiera det och googla på exakta meddelandet. Finns ofta bra o tydliga svar.

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Skrivet av swesen:

Det betyder att "loop" inte existerar eftersom den inte är deklarerad (declared) än. Googla på "C# declare variable" så får du veta mer om det, alternativt kan man också lösa det med en initialisering (initialize) av "loop" på plats.

Om du absolut inte hittar något:

int variable; // declare int variable = 10; // initialize

https://stackhowto.com/difference-between-instantiating-decla...

Dold text

okej tack, jag tror jag fixat den men hur gör jag med:
static int Medelvärde(List<int> summaInt)
{
int summa;
foreach (int siffra in summaInt)
summa += siffra; <--- Use of unassigned local variable "summa"
return summa /= summaInt.Count;
}
}

Permalänk
Skrivet av talonmas:

Precis, variabeln 'loop' existerar inte. Så då måste du skapa den

Kan göras innan loopen, eller så gör man det inne i loopen vid första tilldelningen.

Läs alltid felmeddelandet, om du inte förstår vad det säger så kopiera det och googla på exakta meddelandet. Finns ofta bra o tydliga svar.

känner mig lite dum men jag måste dublekolla är det rätt?
int loop = 0;
for (loop = 0; loop< resultat; loop++)

och sen jag har en annan problem med:
static int Medelvärde(List<int> summaInt)
{
int summa;
foreach (int siffra in summaInt)
summa += siffra; <--- Use of unassigned local variable "summa"
return summa /= summaInt.Count;
}
}

hur lör jag detta ?

Permalänk
Medlem
Skrivet av kallesvenson:

jag kan inte ens köra programet för det blir fel.nåt med loppet och jag försökt massa saker.
for (loop = 0; loop < resultat; loop++) <--- The name "loop" does not exist in the current context

Hela syftet med övningen är ju att du skall rätta alla fel som finns tills du får ett program som kan köras.
Titta på ett fel i taget. Gå tillbaka till allt du lärt dig i kursen och rätta felen.
Alternativt googla, som är en av de viktigaste sakerna en programmerare behöver kunna. 😀
Tänk på att ett fel kan ge följdfel på nästkommande rader i programmet.
Ett exempel är kommentaren "<--- The name "loop" does not exist in the current context"
du lagt till.
En en-raders kommentar börjar alltid med // i C#.
//<--- The name "loop" does not exist in the current context

Visa signatur

Herman

Permalänk
Medlem
Skrivet av kallesvenson:

känner mig lite dum men jag måste dublekolla är det rätt?
int loop = 0;
for (loop = 0; loop< resultat; loop++)

och sen jag har en annan problem med:
static int Medelvärde(List<int> summaInt)
{
int summa;
foreach (int siffra in summaInt)
summa += siffra; <--- Use of unassigned local variable "summa"
return summa /= summaInt.Count;
}
}

hur lör jag detta ?

Om du gör på det sättet så kommer "loop" fortfarande vara i scope och finnas kvar vilket du oftast inte vill i en for loop. Om du istället initializerar "loop" i for loopen såhär:

for (int loop = 0; loop< resultat; loop++)

så kommer "loop" endast vara i scope innanför for loopen.

Angående summa så betyder det att den inte är initialized, och i det läget försöker += (vilket är en förkortning av summa = summa + siffra) så du har något som inte har fått något värde och försöker utföra en beräkning på det.