Inlämning om 6 timmar -- C++ (HAR FASTNAT)!!
Hej kära forumare!
Jag har fastnat i min C++ inlämningsuppgift efter att endast ha läst C++ i fyra veckor..
Jag är sååå nära att få det att funka men nu sväljer jag min stolthet och ber om Er hjälp!
Har redan gjort tre steg av uppgiften men sista steget lyder följande;
Gör ett huvudprogram (main) för att testa din klass och dina funktioner. Deklarera en vektor familj med fyra personer:
Person familj[4];
som fylls med innehåll – namn och ålder på fyra personer. Välj själv om detta görs direkt i koden eller om värdena matas in av användaren när programmet körs. Programmet ska sedan sortera vektorn familj och skriva ut familje-medlemmarna i åldersordning med den yngsta först. Till sist ska funktionen linsok anropas och söka efter om någon familjemedlem har en viss ålder. (Även här får du själv välja om denna ålder är bestämd i koden eller matas in av användaren)
Uppgift 3.4 – Frivillig. Betygsskala: A-F
Komplettera ditt program med en funktion för binär sökning som söker efter ålder i en personvektor. Funktionen skall ha en rekursiv algoritm, dvs. den skall anropa sig själv.
Jag har rört till det i min kod efter att ha kämpat hela natten i frustration... Felet är att listan som ska vara "sorterad" inte sorteras enligt ålder.. Och nu har jag till och med lyckas röra till så att jag får output "Personen hittas inte" vilket är åt skogen..
#include <iostream>
#include <string>
using namespace std;
class person // KLASS PERSON
{
public:
string namn;
int alder;
void print()
{
cout << namn <<", "<< alder << " \x8Fr" << endl; // TALAR OM VAD SOM SKA SKRIVAS UT
}
void setInfo(string _namn, int _alder) // INFO SOM KRÄVS
{
namn = _namn;
alder = _alder;
}
};
int linsok(person p[], int n, int a)
{
for (int i = 0; i < n; i++) // ITERERAR OCH FÖRSÖKER HITTA ANVÄNDAREN
{
if (p[i].alder == a)
{
return i;
}
}
return -1;
};
void bubblesort(person p[], int n)
{
int i = 0;
for ( i = 0; i < n; i++) // ITERERAR OCH SÖKER IGENOM HELA LISTAN, ELEMENT FÖR ELEMENT
{
int nrLeft = n - i;
for (int j = 0; j < nrLeft; j++)
{
if (p[j].alder > p[j+1].alder)
{
}
}
}
}
int main() {
//START AV PROGRAM MED OSORTERAD SAMT SORTERAD LISTA AV FAMILJEN
cout << "*** OSORTERAD LISTA ***" << endl << endl; //
person familjenAsk[4];
familjenAsk[0].setInfo("Ritwa", 45);
familjenAsk[0].print();
familjenAsk[1].setInfo("Peter", 52);
familjenAsk[1].print();
familjenAsk[2].setInfo("Sandra", 19);
familjenAsk[2].print();
familjenAsk[3].setInfo("Johan", 26);
familjenAsk[3].print();
cout << endl << "*** SORTERAD LISTA ***" << endl << endl;
bubblesort(familjenAsk, 4); // ANROP FÖR ATT SORTERING SKA SKE I LISTAN
for (int x = 0; x < 4; x++)
cout << familjenAsk[x].namn << ", " << familjenAsk[x].alder << " \x8Fr" << endl;
int index = linsok(familjenAsk, 4, 5);
if (index == -1)
cout << "\nPersonen du letar efter hittas ej!" << endl;// SKRIVS UT OM PERSONEN INTE HITTAS
else
cout << endl << familjenAsk[5].namn << " befinner sig p\x86 plats " << index << " i listan"; // SKRIVS UT OM PERSONEN HITTAS
cin.get();
return 0;
}
Jag får ut följande output;
Skulle någon kunna ge mig en spark i röven så jag hinner skicka in min uppgift?
Tack på förhand!