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