Enkel sortering
Hej.
Håller på med ett program som låter användaren mata in temperatur för 4 städer och sedan ska programmet sortera (bubblesort) så att den kallaste staden hamnar överst. (Man ska även kunna söka efter en viss temperatur och finns den ska programmet berätta vilken indexposition den finns på men det har jag löst.)
Här är min kod:
class Program
{
static int linsok(Stad[] städer, int söktemp)
{
for (int i = 0; i < städer.Length; i++)
{
if (städer[i].temp == söktemp)
{
return i;
}
}
return -1;
}
public static void Bubblesort(Stad[] städer)
{
int sorttemp;
for (int i = 0; i < städer.Length - 1; i++)
{
for (int j = 0; j < städer.Length - (1 + i); j++)
{
if (städer[j].temp > städer[j + 1].temp)
{
sorttemp = städer[j + 1].temp;
städer[j + 1].temp = städer[j].temp;
städer[j].temp = sorttemp;
}
}
}
}
static void Main(string[] args)
{
Stad[] städer = new Stad[4];
Console.Write("Hej! Fyll i temperatur för Stockholm: ");
städer[0] = new Stad("Stockholm", Convert.ToInt32(Console.ReadLine()));
Console.Write("Fyll i temperatur för Göteborg: ");
städer[1] = new Stad("Göteborg", Convert.ToInt32(Console.ReadLine()));
Console.Write("Fyll i temperatur för Malmö: ");
städer[2] = new Stad("Malmö", Convert.ToInt32(Console.ReadLine()));
Console.Write("Fyll i temperatur för Umeå: ");
städer[3] = new Stad("Umeå", Convert.ToInt32(Console.ReadLine()));
int söktemp;
Console.Write("Vilken temperatur vill du söka efter? ");
söktemp = Convert.ToInt32(Console.ReadLine());
int index = linsok(städer, söktemp);
if (index < 0)
{
Console.WriteLine("Temperaturen hittades inte");
}
else
{
Console.WriteLine("Temperaturen hitas i index " + index);
}
Bubblesort(städer);
for (int i = 0; i < städer.Length; i++)
{
städer[i].skrivUt();
}
}
}
}
Mitt problem är att få namnet på städerna att hänga med temperaturen när jag ska printa ut dem i ordning.
Nu har jag en for loop för det men den är helt värdelös. Någon som har något tips? :)
Metoden BubbleSort
sorterar endast städernas temperaturer utan att sortera deras namn. Kan lösas genom att sortera hela stad-objekten. Min skrivbordskod (har inte testat den):
Stad sortStad = new Stad("", 0);
if (städer[j].temp > städer[j + 1].temp)
{
sortStad = städer[j + 1];
städer[j + 1] = städer[j];
städer[j] = sortStad;
}
Lindehaven skrev:Metoden
BubbleSort
sorterar endast städernas temperaturer utan att sortera deras namn. Kan lösas genom att sortera hela stad-objekten. Min skrivbordskod (har inte testat den):Stad sortStad = new Stad("", 0); if (städer[j].temp > städer[j + 1].temp) { sortStad = städer[j + 1]; städer[j + 1] = städer[j]; städer[j] = sortStad; }
Jajamän. Det där funka bra det. Tusen tusen tack som vanligt för bra hjälp Lindehaven!! :)
Håller på med samma uppgift.
Hur har du löst att om användaren skriver in fel temp så ska meddelande komma?
Gokka skrev:Håller på med samma uppgift.
Hur har du löst att om användaren skriver in fel temp så ska meddelande komma?
Det står väl ingenstans i uppgiften att man ska göra det?
elmo111 skrev:Gokka skrev:Håller på med samma uppgift.
Hur har du löst att om användaren skriver in fel temp så ska meddelande komma?
Det står väl ingenstans i uppgiften att man ska göra det?
I den allmänna beskrivningen för mig står det så här:
Kontrollera att de inmatade temperaturvärden befinner sig inom intervallet
temperatur >= -60 && temperatur <= 60
Men osäker om man måste göra så =)
Ja okej, såg de precis. Hade missat det.
Antar att man ska göra något liknande?
if (städer [i] >= -60 || temperatur <= 60)
print fel temperatur har angivits
Vet inte riktigt, gissar bara lite grann nu...
elmo111 skrev:Ja okej, såg de precis. Hade missat det.
Antar att man ska göra något liknande?if (städer [i] >= -60 || temperatur <= 60)
print fel temperatur har angivitsVet inte riktigt, gissar bara lite grann nu...
Ja något sånt ser vettigt ut.
En annan fråga. Jag får ingen utskrift fråpn städer[i].skrivUt();
Antar att jag missar något i min class men ser inte .
Har du lagt till något speciellt i class för utskrift?
Gokka skrev:elmo111 skrev:Ja okej, såg de precis. Hade missat det.
Antar att man ska göra något liknande?if (städer [i] >= -60 || temperatur <= 60)
print fel temperatur har angivitsVet inte riktigt, gissar bara lite grann nu...
Ja något sånt ser vettigt ut.
En annan fråga. Jag får ingen utskrift fråpn städer[i].skrivUt();
Antar att jag missar något i min class men ser inte .
Har du lagt till något speciellt i class för utskrift?
Japp. Gör en funktion i din class. Public void skrivUt();
{
skriv det du vill den ska skriva ut här
}
elmo111 skrev:Lindehaven skrev:Metoden
BubbleSort
sorterar endast städernas temperaturer utan att sortera deras namn. Kan lösas genom att sortera hela stad-objekten. Min skrivbordskod (har inte testat den):Stad sortStad = new Stad("", 0); if (städer[j].temp > städer[j + 1].temp) { sortStad = städer[j + 1]; städer[j + 1] = städer[j]; städer[j] = sortStad; }
Jajamän. Det där funka bra det. Tusen tusen tack som vanligt för bra hjälp Lindehaven!! :)
Jag får inte till det med att skriva ut stadens namn och temperatur, blir bara staden. Har kollat på det du gjort men får inte ordning på det.
Har du skrivit in något i class Stad eller bara ändrat i metoden bubbelsort?
Tillägg: 26 dec 2021 00:15
Löste det :) huvudet har inte riktigt varit med så hade missat att skriva in rätt vad som skulle printas ut :)
Håller också på med denna fast i c++ och får inte till sorteringen.. kan någon hjälpa mig att översätta detta till c++ :)
Sen en fråga till! lägger ni det inte i olika filer eller fattade jag fel om att man skulle göra de?
elmo111 skrev:Ja okej, såg de precis. Hade missat det.
Antar att man ska göra något liknande?if (städer [i] >= -60 || temperatur <= 60)
print fel temperatur har angivitsVet inte riktigt, gissar bara lite grann nu...
Har du löst med kontroll av temperatur?