Hjälp med programmeringsuppgift, klasser och sökalgoritmer.

Permalänk

Hjälp med programmeringsuppgift, klasser och sökalgoritmer.

Hej! Har fått i uppgift att skriva ett program som ska använda linjärsökningsalgoritm och bubblesort. Är så nära att vara klar med arbetet, men det känns som mina försök att rätta till programmet ställer till med fler problem. Linjärsökning fungerade tidigare men har fifflat iväg den funktionen

Om nån kan ta sig en titt och peka och förklara vad som blivit fel skulle jag vara jättetacksam!

Errors jag får är:
||=== Build: Debug in dogksj (compiler: GNU GCC Compiler) ===|
D:\programmering\dogksj\main.cpp||In function 'void bubblesort(Person*, int)':|
D:\programmering\dogksj\main.cpp|26|error: 'byt' was not declared in this scope|
D:\programmering\dogksj\main.cpp||In function 'int LinearSearch(Person, int, int)':|
D:\programmering\dogksj\main.cpp|50|error: no match for 'operator[]' in 'minFamilj[i]'|
D:\programmering\dogksj\main.cpp||In function 'int main()':|
D:\programmering\dogksj\main.cpp|75|error: could not convert '(Person*)(& minFamilj)' from 'Person*' to 'Person'|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

#include <iostream> #include <string> using namespace std; const int n=4; class Person { public: string namn; int alder; void SkrivUt() { cout << "" << namn << endl; cout << "" << alder << endl; } }; void bubblesort(Person minFamilj[], int n) { for(int i=0; i<n; i++) { int nrLeft=n-1; for (int j=0; j<nrLeft; j++) { if(minFamilj[j].alder>minFamilj[j+1].alder) { byt(minFamilj[j], minFamilj[j+1]); } } } for (int i=0; i<n; i++) { minFamilj[i].SkrivUt(); } } void byt(Person &p, Person &q) { Person temp; temp.namn = p.namn; temp.alder = p.alder; p.namn = q.namn; p.alder = q.alder; q.namn = temp.namn; q.alder = temp.alder; } int LinearSearch (Person minFamilj, int n, int key) { for (int i=0; i<10; i++) { if (minFamilj[i].alder==key) return i; } return -1; } int main() { Person minFamilj[4]; minFamilj[0].namn = "Janne Karlsson"; minFamilj[0].alder = 37; minFamilj[1].namn = "Jenny Karlsson"; minFamilj[1].alder = 36; minFamilj[2].namn = "Sture Karlsson"; minFamilj[2].alder = 7; minFamilj[3].namn = "Greta Karlsson"; minFamilj[3].alder = 5; bubblesort(minFamilj, n); int index = LinearSearch(minFamilj, n, 5); if(index==-1) { cout<<"Personen hittades inte!"; } else { cout<<"Personen du söker är "<<endl; minFamilj[index].SkrivUt(); } cin.get(); return 0; }

Permalänk
Medlem

Du har inte specat någon header-fil för dina grejjer.
Skapa en fil som heter main.hpp med innehållet:

void bubblesort(Person minFamilj[], int n); void byt(Person &p, Person &q); int LinearSearch (Person minFamilj, int n, int key);

inkludera den i din CPP-fil:

#include "main.hpp"

Anledningen är att du ropar på byt() före du har talat om att byt() faktiskt finns. (så du kan byta ordning på bubblesort och byt så kommer det hoppa igång, men det är "inte riktigt rätt sätt".

/zyber

Visa signatur

Jag är en optimist; det är aldrig så dåligt så att det inte kan bli sämre.

Permalänk

Bubblesort är en av de absolut sämsta sökalgoritmerna när det gäller tidskomplexitet. Den riktiga frågan är varför ni ska lära er den? ^^

Visa signatur

MSI z170a SLI-Plus - i7 6700K @ 4,6GHz - RTX 2060 - 32GB HyperX Fury DDR4 2666Mhz - Fractal Design arc midi r2 - Noctua UH-14S

Permalänk
Medlem
Skrivet av GiletteRazor:

Bubblesort är en av de absolut sämsta sökalgoritmerna när det gäller tidskomplexitet. Den riktiga frågan är varför ni ska lära er den? ^^

För att lära sig från grunden och uppåt så man kan förstå VARFÖR den inte är optimal?

Visa signatur

Huvudriggen är en Gigabyte Aorus Xtreme | 128gb DDR5 6000 | Ryzen 7950X | 3080Ti
Utöver det är det för många datorer, boxar och servar för att lista :P

Permalänk
Skrivet av zyberzero:

Du har inte specat någon header-fil för dina grejjer.
Skapa en fil som heter main.hpp med innehållet:

void bubblesort(Person minFamilj[], int n); void byt(Person &p, Person &q); int LinearSearch (Person minFamilj, int n, int key);

inkludera den i din CPP-fil:

#include "main.hpp"

Anledningen är att du ropar på byt() före du har talat om att byt() faktiskt finns. (så du kan byta ordning på bubblesort och byt så kommer det hoppa igång, men det är "inte riktigt rätt sätt".

/zyber

Tack för hjälpen!

Skrivet av GiletteRazor:

Bubblesort är en av de absolut sämsta sökalgoritmerna när det gäller tidskomplexitet. Den riktiga frågan är varför ni ska lära er den? ^^

Skrivet av inquam:

För att lära sig från grunden och uppåt så man kan förstå VARFÖR den inte är optimal?

Stämmer De skriver samma sak i boken.