Hjälp med program i C# - Hitta största tal i vektor

Trädvy Permalänk
Medlem
Registrerad
Maj 2017

Hjälp med program i C# - Hitta största tal i vektor

Hej!

Vill skapa ett program enligt följande instruktioner:

Programmet ska fråga användaren efter 20 heltal.
Frågorna ska ställas i en loop.
Talen ska sparas undan i en vektor.
Loopa sen genom vektorn för att hitta det största talet.
Skriv därefter ut det största talet.

(Du behöver bara skriva Main-metoden och eventuella metoder du anropar)

DETTA ÄR VAD JAG KOMMIT FRAM TILL:

int[] tal = new int[20];

for (int i = 0; i < 20; i++)
{
Console.WriteLine("Skriv ett nummer: ");
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);

nr = nr + tal[i];
}

int largest = tal.Max();

foreach (int value in tal)
{
if (value > largest) largest = value;
}
Console.WriteLine(tal);
Console.ReadLine();

-------------------------------------------

Den första loopen funkar men lyckas inte få fram det högsta talet. Någon som vill rätta koden så det funkar?

Trädvy Permalänk
Medlem
Registrerad
Dec 2015
Skrivet av sunshine01:

Den första loopen funkar men lyckas inte få fram det högsta talet. Någon som vill rätta koden så det funkar?

Den första loopen fungerar inte. Förslagsvis använder du debuggern för att lista ut varför.

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2010
Skrivet av sunshine01:

Hej!

Vill skapa ett program enligt följande instruktioner:

Programmet ska fråga användaren efter 20 heltal.
Frågorna ska ställas i en loop.
Talen ska sparas undan i en vektor.
Loopa sen genom vektorn för att hitta det största talet.
Skriv därefter ut det största talet.

(Du behöver bara skriva Main-metoden och eventuella metoder du anropar)

DETTA ÄR VAD JAG KOMMIT FRAM TILL:

int[] tal = new int[20];

for (int i = 0; i < 20; i++)
{
Console.WriteLine("Skriv ett nummer: ");
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);

nr = nr + tal[i];
}

int largest = tal.Max();

foreach (int value in tal)
{
if (value > largest) largest = value;
}
Console.WriteLine(tal);
Console.ReadLine();

-------------------------------------------

Den första loopen funkar men lyckas inte få fram det högsta talet. Någon som vill rätta koden så det funkar?

Den första for-loopen funkar men vad du gör inne i den funkar däremot inte. Den andra foreach är helt onödig då du redan hittar maxvärdet i tal.Max(), när du väl får in värdena i tal vill säga.

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003
Skrivet av sunshine01:

Hej!

Vill skapa ett program enligt följande instruktioner:

Programmet ska fråga användaren efter 20 heltal.
Frågorna ska ställas i en loop.
Talen ska sparas undan i en vektor.
Loopa sen genom vektorn för att hitta det största talet.
Skriv därefter ut det största talet.

(Du behöver bara skriva Main-metoden och eventuella metoder du anropar)

DETTA ÄR VAD JAG KOMMIT FRAM TILL:

int[] tal = new int[20];

for (int i = 0; i < 20; i++)
{
Console.WriteLine("Skriv ett nummer: ");
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);

nr = nr + tal[i];
}

int largest = tal.Max();

foreach (int value in tal)
{
if (value > largest) largest = value;
}
Console.WriteLine(tal);
Console.ReadLine();

-------------------------------------------

Den första loopen funkar men lyckas inte få fram det högsta talet. Någon som vill rätta koden så det funkar?

int[] tal = new int[20]; for (int i = 0; i < 20; i++) { Console.WriteLine("Skriv ett nummer: "); string strNr = Console.ReadLine(); int nr = Convert.ToInt32(strNr); nr = nr + tal[i]; } int largest = tal.Max(); foreach (int value in tal) { if (value > largest) largest = value; } Console.WriteLine(tal); Console.ReadLine();

Det enda du behöver göra är att fundera på vad den sista raden i första loopen gör och vad den ska göra:
"nr = nr + tal[i];" ????

Vad du gör sen är lite märkligt...

Denna rad får du inte använda, även om den löser problemet väldigt snabbt. Enligt uppgift så ska du iterera värdena och hämta ut det största på så vis.
"int largest = tal.Max();"

Sätt largest till -1 så fungerar din andra loop.

Console.WriteLine(tal); kan du ju inte göra då "tal" är en array. Varför skriver du ut något annat än "largest" när det är just specifikt det största/largest talet du ska skriva ut.

ηλί, ηλί, λαμά σαβαχθανί!?

Trädvy Permalänk
Medlem
Registrerad
Maj 2017

Uppdaterat kod - får fortfarande inte fram största talet

@Leedow:

Tack så mycket för feedback.

Har ändrat lite i koden nu. Tagit bort metoden Max(). Satt largest till -1 (om det är korrekt?).
Undrar ifall: tal[i] = nr; är ett korrekt sätt att spara 'nr' till tal-vektorn?

Undrar också vad som återstår att ändra då jag fortfarande inte lyckas få fram det största talet. Tar tacksamt emot lite vägledning.

int[] tal = new int[20];

for (int i = 0; i < 20; i++)
{
Console.WriteLine("Skriv ett nummer: ");
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);

tal[i] = nr;

}
int largest = 0;
for (int i = 0; i < tal.Length -1; i++)

{
if (i > largest)
largest = i;
}
Console.WriteLine("Det största talet är: ", largest);
Console.ReadKey();

Trädvy Permalänk
Medlem
Registrerad
Nov 2006

Denna del gör nog inte det du har tänkt.. Vill du verkligen jämföra räknaren eller så kanske positionen i en array där du sparat alla talen är bättre?

if (i > largest)
largest = i;

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003
Skrivet av sunshine01:

@Leedow:

Tack så mycket för feedback.

Har ändrat lite i koden nu. Tagit bort metoden Max(). Satt largest till -1 (om det är korrekt?).
Undrar ifall: tal[i] = nr; är ett korrekt sätt att spara 'nr' till tal-vektorn?

Undrar också vad som återstår att ändra då jag fortfarande inte lyckas få fram det största talet. Tar tacksamt emot lite vägledning.

int[] tal = new int[20];

for (int i = 0; i < 20; i++)
{
Console.WriteLine("Skriv ett nummer: ");
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);

tal[i] = nr;

}
int largest = 0;
for (int i = 0; i < tal.Length -1; i++)

{
if (i > largest)
largest = i;
}
Console.WriteLine("Det största talet är: ", largest);
Console.ReadKey();

Snyggt! Ja, det är helt rätt tänkt. Om vi ska vara petiga... Säg att användaren matar in negativa tal. Då måste väl även det fungera. Det kommer inte fungera om du har satt largest till -1 eller 0. Detta eftersom värdet -1000 skulle rent teoretiskt kunna vara det största talet.

Som @Kiane skriver så är det inte värdet av index i den indexerade loopen som är av intresse utan den indexerade loopens index relativt till arrayen "tal".

ηλί, ηλί, λαμά σαβαχθανί!?

Trädvy Permalänk
Medlem
Registrerad
Maj 2017

@Leedow:
@Kiane:

Är det så här ni menar:

if (tal[i] > largest)
largest = tal[i];

Funkar fortfarande inte... C# är helt nytt för mig

Trädvy Permalänk
Medlem
Registrerad
Nov 2006
Skrivet av sunshine01:

@Leedow:
@Kiane:

Är det så här ni menar:

if (tal[i] > largest)
largest = tal[i];

Funkar fortfarande inte... C# är helt nytt för mig

Kan du beskriva vad det är som inte funkar? Vad är input, vad får du för resultat och vad förväntade du dig för resultat?

Edit: Du har fel i utskriften.. Ska vara:
Console.WriteLine("Det största talet är: {0}", largest);

Sedan har du gjort ett fel i sista loopen som gör att den aldrig kollar sista inmatningen i listan.

Lycka till!

Trädvy Permalänk
Medlem
Registrerad
Maj 2017

@Kiane:

Fick det att funka!

if (largest < tal[i])
largest = tal[i];

Console.WriteLine("Det största talet är: " + largest);

Tack så mycket för all hjälp!