Witam, dopadło mnie zaliczenie z programowania i muszę napisać książkę telefoniczną na min. 50 abonentów (przekroczenie liczby tej musi zostać zgłoszone). Musi zapisywać i odczytywać z pliku i sortować dowolnym algorytmem sortowania. Wiedzę mam dosyć podstawową i mam kilka problemów:
- Jak ustawić limit abonentów domyślnie (50) i go edytować?
- Jak można posortować takie coś po danym elemencie struktury?
- Jak zrobić żeby program odczytywał i przypisywał z pliku poszczególne elementy abonenta poszczególnym elementom struktur?
Co udało mi się nasmarować:
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<conio.h>
using namespace std;
struct ksiazka
{
int lp;
string imie;
string nazwisko;
string numer;
ksiazka* next;
};
ksiazka* poczatek = NULL;
void dodaj_abonenta()
{
cout << endl;
ksiazka* nowa = new ksiazka;
nowa->next = NULL;
cout << "Lp: \t";
cin >> nowa->lp;
cout << "Podaj imię: \t";
cin >> nowa->imie;
cout << "Nazwisko: \t";
cin >> nowa->nazwisko;
cout << "Numer telefonu \t";
cin >> nowa->numer;
if (poczatek == NULL)
{
poczatek = nowa;
}
else
{
ksiazka* szukaj = poczatek;
while (szukaj->next != NULL)
{
szukaj = szukaj->next;
}
szukaj->next = nowa;
}
cout << endl;
}
void wczytaj()
{
cout << endl;
if (poczatek != NULL)
{
ksiazka* pokaz = poczatek;
while (pokaz->next != NULL)
{
cout << pokaz->imie << " ";
cout << pokaz->nazwisko << " ";
cout << pokaz->numer << " ";
pokaz = pokaz->next;
}
cout << pokaz->imie << " ";
cout << pokaz->nazwisko << " ";
cout << pokaz->numer << "\n\n";
}
}
void sortuj()
{
cout << "1. Po nazwisku" << "\n":
cout << "2. Po imieniu" MM "\n";
char o;
o = _getch();
switch (o)
case '1':
po_nazwisku();
case '2':
po_imieniu();
}
void po_nazwisku()
{
}
void po_imieniu()
{
}
void ustaw_limit()
{
}
int main()
{
setlocale(LC_ALL, "pl_PL");
for (;;)
{
int O;
cout << "Książka telefoniczna" << "\n";
cout << "Menu główne:" << "\n";
cout << "1. Dodaj nowego abonenta" << "\n";
cout << "2. Wczytaj numery na ekran" << "\n";
cout << "3. Sortuj" << "\n";
cout << "4. Ustaw limit abonentów (domyślnie 50)" << "\n";
cout << "5. Wyjdź z programu" << "\n";
O = _getch();
switch (O)
{
case '1':
dodaj_abonenta();
break;
case '2':
wczytaj();
break;
case '3':
sortuj();
break;
case '4':
ustaw_limit();
break;
case '5':
exit(0);
default:
cout << "Wybrano niepoprawną opcję" << "\n";
}
}
system("PAUSE");
}
Napisałem dodawanie i wyświetlanie z pamięci do konsoli, z zapisem do pliku sobie poradzę, gorzej z odczytem, żeby program przekonwertował elementy tekstu z pliku na kolejne elementy struktury.