Hejsan! Jag är nybörjare i C++ och vill försöka göra en telefonbok eller liknande. Vill att jag ska kunna lägga in namn och telefonnummer. Vill att det sorteras i bokstavsordning, om det är möjligt? Vet inte riktigt hur jag ska börja. All hjälp uppskattas Det beror på vad det är du vill lära dig. Vill du lära dig c++, objektorientering eller att programmera applikationer. Det beror på vad det är du vill lära dig. Vill du lära dig c++, objektorientering eller att programmera applikationer. Jag har fått till det mesta. Jag har gjort en funktion där hela telefonboken visas. Problemet är att det visas i den ordningen dom sparats i... och inte i bokstavsordning. Hur ska ja få till detta?... Vart ska det ligga någonstans i koden? Ska det ligga bland funktionen för att ladda alla posterna? eller vid själva sparandet av poster.. dvs när man lägger till posterna? Säg till om jag ska lägga in koden för "Lägg till post" eller "Ladda alla poster" funktionerna... /Jaffa Enklast är nog om du lägger in sorteringen i den funktion eller metod som laddar in posterna från databasen eller filen även om det är klart att du kan sortera filen varje gång du sparat en ny post också. Enklast är nog om du lägger in sorteringen i den funktion eller metod som laddar in posterna från databasen eller filen även om det är klart att du kan sortera filen varje gång du sparat en ny post också. Enklast är nog om du lägger in sorteringen i den funktion eller metod som laddar in posterna från databasen eller filen även om det är klart att du kan sortera filen varje gång du sparat en ny post också. La till en telefonbok i filarean, du kanske kan lära dig något av den... Observera att den telefonbok som lades i filarean INTE är ett exempel på ett bra C++ program. Det saknar totalt en objektorienterad struktur.Telefonbok
MVH
/JaffaSv: Telefonbok
En telefonbok består ju i princip av en databas att lagra i, ett GUI att "jobba" i och lite kod däremellan.
Ett förslag är att använda ADO för databasen och MFC för GUI:t men inget av dem är ju särskilt objektorienterade och särskilt mycket c++ kod blir det ju inte heller.
Om det är språket c++ och STL du vill lära dig så kan du ju använda cin & cout som användarinterface och t.ex std::vector att lagra telefonnummer i. Lite mer avancerat är ju att använda std::map.
Här är ett kort exempel som du kan utgå ifrån:
struct telefon {
std::string namn, telefon;
};
main() {
std::vector<telefon> telefonbok;
while (true) {
cout << "1. mata in nya namn" << std::endl;
cout << "2. sök efter telefonnummer" << std::endl;
int val;
cin >> val;
if (val == 1) { // mata in ny post
telefon ny;
cout << "ange namn" << std::endl;
cin >> ny.namn;
cout << "ange telefonnummer" << std::endl;
cin >> ny.telefon;
telefonbok.push_back(ny); // lägg till i telefonboken
}
else if (val == 2) { // sök efter namn
std::string namn;
cout << "ange namn att söka efter" << std::endl;
cin >> namn;
// loopa igenom telefonboken och se om namn finns där
for (std::vector<telefon>::const_iterator ii = telefonbok.begin()
ii != telefonbok.end(); ++ii) {
if (ii->namn == namn) {
cout << "Telefonnummer=" << ii->telefon << std::endl;
break;
}
}
}
else
break; // avsluta
} // while
}
Sv: Telefonbok
En telefonbok består ju i princip av en databas att lagra i, ett GUI att "jobba" i och lite kod däremellan.
Ett förslag är att använda ADO för databasen och MFC för GUI:t men inget av dem är ju särskilt objektorienterade och särskilt mycket c++ kod blir det ju inte heller.
Om det är språket c++ och STL du vill lära dig så kan du ju använda cin & cout som användarinterface och t.ex std::vector att lagra telefonnummer i. Lite mer avancerat är ju att använda std::map.
Här är ett kort exempel som du kan utgå ifrån:
struct telefon {
std::string namn, telefon;
};
main() {
std::vector<telefon> telefonbok;
while (true) {
cout << "1. mata in nya namn" << std::endl;
cout << "2. sök efter telefonnummer" << std::endl;
int val;
cin >> val;
if (val == 1) { // mata in ny post
telefon ny;
cout << "ange namn" << std::endl;
cin >> ny.namn;
cout << "ange telefonnummer" << std::endl;
cin >> ny.telefon;
telefonbok.push_back(ny); // lägg till i telefonboken
}
else if (val == 2) { // sök efter namn
std::string namn;
cout << "ange namn att söka efter" << std::endl;
cin >> namn;
// loopa igenom telefonboken och se om namn finns där
for (std::vector<telefon>::const_iterator ii = telefonbok.begin()
ii != telefonbok.end(); ++ii) {
if (ii->namn == namn) {
cout << "Telefonnummer=" << ii->telefon << std::endl;
break;
}
}
}
else
break; // avsluta
} // while
}
Sv: Telefonbok
Sv: Telefonbok
Tipset är att ta en titt på biblioteket algorithm. Där finns det funktioner för sortering (ex. sort()) av objekt lagrade i ett objekt av klassen Vektor. Du kommer dock vara tvungen att skapa en funktion som sköter jämförelsen av två av objekt (dvs, du måste visa vilka av medlemmarna i din klass eller struct som ska jämföras).
Det är enklare än det låter... i princip kommer du att vara tvungen att skapa två funktioner som ser ut ungefär såhär:
<code>
void sortera(vector<LagradPost> poster)
{
sort(poster.begin(), (poster.end(), mindre_an);
}
int mindre_an(LagradPost p1, LagradPost p2)
{
return p1.kontoNr < p2.kontoNr;
}
</code>
Jaja, letade rätt på en gammal kodsnutt från ett av mina program så nu sorterar jag på kontonummer vilket kanske inte är så intressant i en telefonbok :) men du fattar principen.Sv: Telefonbok
Tipset är att ta en titt på biblioteket algorithm. Där finns det funktioner för sortering (ex. sort()) av objekt lagrade i ett objekt av klassen Vektor. Du kommer dock vara tvungen att skapa en funktion som sköter jämförelsen av två av objekt (dvs, du måste visa vilka av medlemmarna i din klass eller struct som ska jämföras).
Det är enklare än det låter... i princip kommer du att vara tvungen att skapa två funktioner som ser ut ungefär såhär:
<code>
void sortera(vector<LagradPost> poster)
{
sort(poster.begin(), (poster.end(), mindre_an);
}
int mindre_an(LagradPost p1, LagradPost p2)
{
return p1.kontoNr < p2.kontoNr;
}
</code>
Jaja, letade rätt på en gammal kodsnutt från ett av mina program så nu sorterar jag på kontonummer vilket kanske inte är så intressant i en telefonbok :) men du fattar principen.Sv: Telefonbok
Tipset är att ta en titt på biblioteket algorithm. Där finns det funktioner för sortering (ex. sort()) av objekt lagrade i ett objekt av klassen Vektor. Du kommer dock vara tvungen att skapa en funktion som sköter jämförelsen av två av objekt (dvs, du måste visa vilka av medlemmarna i din klass eller struct som ska jämföras).
Det är enklare än det låter... i princip kommer du att vara tvungen att skapa två funktioner som ser ut ungefär såhär:
<code>
void sortera(vector<LagradPost> poster)
{
sort(poster.begin(), (poster.end(), mindre_an);
}
int mindre_an(LagradPost p1, LagradPost p2)
{
return p1.kontoNr < p2.kontoNr;
}
</code>
Jaja, letade rätt på en gammal kodsnutt från ett av mina program så nu sorterar jag på kontonummer vilket kanske inte är så intressant i en telefonbok :) men du fattar principen.
Edit: Den första funktionen är naturligtvis inte nödvändig, då du naturligtvis kan anropa sort() direkt.Sv: Telefonbok
Programarkivet:Telefonbok C++
/MickeSv: Telefonbok