Kan nån ta en titt på min bubbelsort ser mig blind heheh

Permalänk
Medlem

Kan nån ta en titt på min bubbelsort ser mig blind heheh

#include <iostream>
#include <vector>
using namespace std;

class Stad
{
public:
string _stad;
int _temp;
};
void AngeInfoOmStad(vector<Stad>& ListaMedStad, string _stad, int _temp)
{
Stad nyStad;
nyStad._stad = _stad;
nyStad._temp = _temp;

cout << "Ange Stad" << " " << flush;
cin >> nyStad._stad;
cout << "Ange Temperatur" << " " << flush;
cin >> nyStad._temp;
ListaMedStad.push_back(nyStad);
cout << endl;
}
void Bubblesort(vector<Stad>& ListaMedStad, int _temp, string _stad)
{
int lista = ListaMedStad.size();
for (int i = 0; i < lista; i++)
{
int vansterOmSiffra = lista - 1;

for (int j = 0; j < vansterOmSiffra; i++)
{
if (ListaMedStad[j] > ListaMedStad[j + 1])
{
int lista = ListaMedStad[j];
ListaMedStad[j] = ListaMedStad[j + 1];
ListaMedStad[j + 1] = lista;

}
}
}

}

int main()
{
string _stad;
int _temp;
_temp = 0;

vector<Stad> ListaMedStad;

for (int i = 0; i < 4; i++)
{
AngeInfoOmStad(ListaMedStad, _stad, _temp);
}

cout << endl;

for (int i = 0; i < ListaMedStad.size(); i++)
{
cout << ListaMedStad[i]._stad << " " << flush;
cout << ListaMedStad[i]._temp << endl;
}

return(0);
}

Permalänk
Inaktiv

Nej. Använd [code] taggar

Permalänk
Medlem

ska det inte vara
for (int j = 0; j < vansterOmSiffra; j++)

Permalänk
Medlem

hur gör man med code taggar

Permalänk
Moderator
Forumledare
Skrivet av Panatin:

hur gör man med code taggar

Du använder [code] i början och [/code] i slutet av koden

Visa signatur

Forumets regler | Har du synpunkter på hur vi modererar? Kontakta SweClockers/moderatorerna

Jag stavar som en kratta

Gillar lök på discord

Permalänk
Medlem

Får inte det här att kompilera.

Visa signatur

flippy @ Quakenet

Permalänk
Medlem
Skrivet av Panatin:

#include <iostream> #include <vector> using namespace std; class Stad { public: string _stad; int _temp; }; void AngeInfoOmStad(vector < Stad > & ListaMedStad, string _stad, int _temp) { Stad nyStad; nyStad._stad = _stad; nyStad._temp = _temp; cout << "Ange Stad" << " " << flush; cin >> nyStad._stad; cout << "Ange Temperatur" << " " << flush; cin >> nyStad._temp; ListaMedStad.push_back(nyStad); cout << endl; } void Bubblesort(vector < Stad > & ListaMedStad, int _temp, string _stad) { int lista = ListaMedStad.size(); for (int i = 0; i < lista; i++) { int vansterOmSiffra = lista - 1; for (int j = 0; j < vansterOmSiffra; i++) { if (ListaMedStad[j] > ListaMedStad[j + 1]) { int lista = ListaMedStad[j]; ListaMedStad[j] = ListaMedStad[j + 1]; ListaMedStad[j + 1] = lista; } } } } int main() { string _stad; int _temp; _temp = 0; vector < Stad > ListaMedStad; for (int i = 0; i < 4; i++) { AngeInfoOmStad(ListaMedStad, _stad, _temp); } cout << endl; for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << " " << flush; cout << ListaMedStad[i]._temp << endl; } return (0); }

Visa signatur

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

Permalänk

Kompilerar detta? Annars skulle jag börja där. Den inre For loopen kommer dessutom iterera över samma del av listan varje gång. Kolla igenom bubble sort algoritmen och fundera sen på vad din kod gör.

Permalänk
Medlem

Fick ordning på bubblesort (missa _temp i bubblesort)

kan nån ge tips på hur jag kallar på den i main nu det står still och hittar ingen hjälp

#include <iostream> #include <vector> using namespace std; class Stad { public: string _stad; int _temp; }; void AngeInfoOmStad(vector<Stad>& ListaMedStad, string _stad, int _temp) { Stad nyStad; nyStad._stad = _stad; nyStad._temp = _temp; cout << "Ange Stad" << " " << flush; cin >> nyStad._stad; cout << "Ange Temperatur" << " " << flush; cin >> nyStad._temp; ListaMedStad.push_back(nyStad); cout << endl; } void Bubblesort(vector<Stad>& ListaMedStad, int _temp, string _stad) { int lista = ListaMedStad.size(); for (int i = 0; i < lista; i++) { int vansterOmSiffra = lista - 1; for (int j = 0; j < vansterOmSiffra; i++) { if (ListaMedStad[j]._temp > ListaMedStad[j + 1]._temp) { int lista = ListaMedStad[j]._temp; ListaMedStad[j]._temp = ListaMedStad[j + 1]._temp; ListaMedStad[j + 1]._temp = lista; } } } } int main() { string _stad; int _temp; _temp = 0; vector<Stad> ListaMedStad; for (int i = 0; i < 4; i++) { AngeInfoOmStad(ListaMedStad, _stad, _temp); } cout << endl; for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << " " << flush; cout << ListaMedStad[i]._temp << endl; } cout << "Kallaste staden först" << endl; return(0); }

Permalänk
Medlem

@Panatin: Du har _stad och _temp som parametrar till båda dina funktioner, men du använder dem egentligen inte till någonting. I AngeInfoOmStad så använder du dem för att sätta värdena i Stad-objektet du skapar men skriver sen direkt över dem med värdena som användaren matar in, och i Bubblesort använder du dem inte ö.h.t. Så jag rekommenderar att du börjar med att ta bort dessa parametrar eftersom de bara krånglar till det.

Gällande hur du anropar Bubblesort så anropar du den på samma sätt som du redan gör med AngeInfoOmStad.

Det skulle nog vara en bra idé att tänka över dina variabelnamn lite också. Just nu använder du t.ex. lista för två olika variabler, och ingen av dem är en lista. Att hitta på bra variabelnamn kan vara svårt även för erfarna programmerare, men det är viktigt för att göra koden lätt att förstå både för dig själv och andra.

Permalänk
Medlem
Skrivet av Pamudas:

#include <iostream> #include <vector> using namespace std; class Stad { public: string _stad; int _temp; }; void AngeInfoOmStad(vector < Stad > & ListaMedStad, string _stad, int _temp) { Stad nyStad; nyStad._stad = _stad; nyStad._temp = _temp; cout << "Ange Stad" << " " << flush; cin >> nyStad._stad; cout << "Ange Temperatur" << " " << flush; cin >> nyStad._temp; ListaMedStad.push_back(nyStad); cout << endl; } void Bubblesort(vector < Stad > & ListaMedStad, int _temp, string _stad) { int lista = ListaMedStad.size(); for (int i = 0; i < lista; i++) { int vansterOmSiffra = lista - 1; for (int j = 0; j < vansterOmSiffra; i++) { if (ListaMedStad[j] > ListaMedStad[j + 1]) { int lista = ListaMedStad[j]; ListaMedStad[j] = ListaMedStad[j + 1]; ListaMedStad[j + 1] = lista; } } } } int main() { string _stad; int _temp; _temp = 0; vector < Stad > ListaMedStad; for (int i = 0; i < 4; i++) { AngeInfoOmStad(ListaMedStad, _stad, _temp); } cout << endl; for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << " " << flush; cout << ListaMedStad[i]._temp << endl; } return (0); }

for (int j = 0; j < vansterOmSiffra; i++) {

Borde väl vara j++ som redan påpekats ovan?

Permalänk
Medlem
Skrivet av SAFA:

for (int j = 0; j < vansterOmSiffra; i++) {

Borde väl vara j++ som redan påpekats ovan?

Det är inte min kod, jag kopierade endast in så det blev indenterat

Visa signatur

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

Permalänk
Avstängd
Skrivet av Pamudas:

Det är inte min kod, jag kopierade endast in så det blev indenterat

Du hade exakt samma problem i din egen kod.

Permalänk
Medlem
Skrivet av TANDEMCYKELN:

Du hade exakt samma problem i din egen kod.

Läs vad jag skrev istället?

Visa signatur

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

Permalänk
Medlem
Skrivet av perost:

@Panatin: Du har _stad och _temp som parametrar till båda dina funktioner, men du använder dem egentligen inte till någonting. I AngeInfoOmStad så använder du dem för att sätta värdena i Stad-objektet du skapar men skriver sen direkt över dem med värdena som användaren matar in, och i Bubblesort använder du dem inte ö.h.t. Så jag rekommenderar att du börjar med att ta bort dessa parametrar eftersom de bara krånglar till det.

Gällande hur du anropar Bubblesort så anropar du den på samma sätt som du redan gör med AngeInfoOmStad.

Det skulle nog vara en bra idé att tänka över dina variabelnamn lite också. Just nu använder du t.ex. lista för två olika variabler, och ingen av dem är en lista. Att hitta på bra variabelnamn kan vara svårt även för erfarna programmerare, men det är viktigt för att göra koden lätt att förstå både för dig själv och andra.

Har gjort lite ändringar men får inte listan att skrivas ut bubblesorted??? ser du felet???

Kan nån ta en titt på varför min bubblesort lista inte skrivs ut???? tack

#include <iostream> #include <vector> using namespace std; class Stad { public: string _stad; int _temp; }; void AngeInfoOmStad(vector<Stad>& ListaMedStad) { Stad nyStad; nyStad._stad; nyStad._temp; cout << "Ange Stad" << " " << flush; cin >> nyStad._stad; cout << "Ange Temperatur" << " " << flush; cin >> nyStad._temp; ListaMedStad.push_back(nyStad); cout << endl; } void Bubblesort(vector<Stad>& ListaMedStad) { int lista = ListaMedStad.size(); for (int i = 0; i < lista; i++) { int vansterOmSiffra = lista - 1; for (int j = 0; j < vansterOmSiffra; i++) { if (ListaMedStad[j]._temp > ListaMedStad[j + 1]._temp) { int lista = ListaMedStad[j]._temp; ListaMedStad[j]._temp = ListaMedStad[j + 1]._temp; ListaMedStad[j + 1]._temp = lista; } } } } int main() { string _stad; int _temp; _temp = 0; vector<Stad> ListaMedStad; for (int i = 0; i < 4; i++) { AngeInfoOmStad(ListaMedStad); } cout << endl; for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << " " << flush; cout << ListaMedStad[i]._temp << endl; } cout << "Kallaste staden först" << endl; cout << endl; Bubblesort(ListaMedStad); for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << flush; cout << ListaMedStad[i]._temp << endl; } return(0); }

Permalänk
Medlem

Varför känns det här som en skoluppgift...

Visa signatur

Asus B550E-Gaming / Ryzen 5900X stock / Corsair Vengeance 32GB 3600 MHz CL18 /
ASUS TUF 4080 Gaming OC / Samsung 980 PRO 2TB PCI-Ev4 + 2TB WD Black NVME PCI-Ev3 / Corsair RM850x v2 / Acer Predator XB273UGX 1440p 270 Hz G-Sync / Phantek P500A / Arctic Cooling LF II 240mm / Evo 4 / Sennheiser IE 300 / Rode NT1-A
Synology 1621+ 6*16 / 1513+ 5*8 / LG CX 65" / XBox Series X
Ownit > Bahnhof

Permalänk
Hedersmedlem
Skrivet av KroesusSork:

Varför känns det här som en skoluppgift...

För att det är en skoluppgift. Etikett inom forumet är att hjälpa till med ledtrådar, men aldrig ge färdiga lösningar.

Permalänk
Hedersmedlem
Skrivet av Panatin:

Kan nån ta en titt på varför min bubblesort lista inte skrivs ut???? tack

Hej!

Din lista skrivs aldrig ut eftersom du hamnar i en oändlig loop i din Bubblesort-funktion.

Ditt program fastnar helt enkelt i den funktionen och kommer aldrig vidare till att skriva ut listan.

Jag hade kollat lite extra på dina for-loopar inuti Bubblesort-funktionen för att förstå varför den hänger sig.

Tips: Använd en debugger och stega igenom funktionen och håll koll på dina värden för i och j. Har du inte en debugger kan du bara skriva ut värdena på i och j allt eftersom du går igenom steg i loopen för att se vad som händer.

Permalänk
Medlem
Skrivet av Panatin:

Har gjort lite ändringar men får inte listan att skrivas ut bubblesorted??? ser du felet???

Kan nån ta en titt på varför min bubblesort lista inte skrivs ut???? tack

#include <iostream> #include <vector> using namespace std; class Stad { public: string _stad; int _temp; }; void AngeInfoOmStad(vector<Stad>& ListaMedStad) { Stad nyStad; nyStad._stad; nyStad._temp; cout << "Ange Stad" << " " << flush; cin >> nyStad._stad; cout << "Ange Temperatur" << " " << flush; cin >> nyStad._temp; ListaMedStad.push_back(nyStad); cout << endl; } void Bubblesort(vector<Stad>& ListaMedStad) { int lista = ListaMedStad.size(); for (int i = 0; i < lista; i++) { int vansterOmSiffra = lista - 1; for (int j = 0; j < vansterOmSiffra; i++) { if (ListaMedStad[j]._temp > ListaMedStad[j + 1]._temp) { int lista = ListaMedStad[j]._temp; ListaMedStad[j]._temp = ListaMedStad[j + 1]._temp; ListaMedStad[j + 1]._temp = lista; } } } } int main() { string _stad; int _temp; _temp = 0; vector<Stad> ListaMedStad; for (int i = 0; i < 4; i++) { AngeInfoOmStad(ListaMedStad); } cout << endl; for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << " " << flush; cout << ListaMedStad[i]._temp << endl; } cout << "Kallaste staden först" << endl; cout << endl; Bubblesort(ListaMedStad); for (int i = 0; i < ListaMedStad.size(); i++) { cout << ListaMedStad[i]._stad << flush; cout << ListaMedStad[i]._temp << endl; } return(0); }

Gå igenom kommentarerna här igen så förstår du varför det inte fungerar. Det är specifikt en kommentar som upprepats ett par gånger nu som handlar om din inre for-loop i sorteringsfunktionen

Visa signatur

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