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

Trädvy Permalänk
Medlem
Plats
skell
Registrerad
Okt 2008

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; }

Trädvy Permalänk
Medlem
Plats
London / Göteborg
Registrerad
Jul 2007

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

WS: Bärbar workstation, 2 * Dell U2412M
HTPC: Intel NUC, Canton GLE 496, Yamaha RV-A830, Sanyo PLV-Z700
Server: Intel Xeon E3-1240@3.4 GHz, ESXi, 16GB RAM, 8*2TB RAID-Z2 + SSD-cache
Slösurf: MacBook Air 11,6", Nokia Lumia 925, OnePlus Two
Kamera: Canon EOS 5DII + 1DIII, Canon 100/2.8 Macro, Canon 70-200/2.8L, Canon 24-70/2.8L

Trädvy Permalänk
Medlem
Registrerad
Mar 2013

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? ^^

MSI z170a SLI-Plus - i7 6700K @ 4,6GHz - MSI GTX 770 Gaming 4GB- 32GB HyperX Fury DDR4 2666Mhz - Fractal Design arc midi r2 - Kelvin S36

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Aug 2009
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?

Asus Z97 Pro Gamer | 32gb ram DDR3 2400MHz | i7 4790k | 2 x R9 390
Asrock P67 Extreme4 rev3 | 16gb DDR3 2400MHz | i7 2600K | R9 290
En massa bärbara, servrar, RPi's och andra boxar

Trädvy Permalänk
Medlem
Plats
skell
Registrerad
Okt 2008
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.