Hejka. Czy mogłabym poprosić o małą podpowiedź odnośnie kodu, żeby się nie wysypywał? Nie mam pomysłu, co można napisać, jakie wyrażenie lub funkcję, żeby program po spełnionym, lub niespełnionym ifie powrócił do głównego programu. Próbowałam return i brake, jednak coś chyba mam nie tak. :P
PS. czy taki niekoherentny zapis na dole funkcji jest poprawny? (duża ilość wywołania funkcji push_front)
#include <list>
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
list<int>lista_systemu; //utworzenie listy, która przechowuje liczby całkowite
int funkcja;
void Wyswietl_Dane()
{
system("CLS");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
cout << "SYSTEM ZARZADZANIA OBIEGIEM INFORMACJI: " << endl;
cout <<"-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl;
for(list<int>::iterator w=lista_systemu.begin(); w!=lista_systemu.end(); ++w)
{
cout << *w << " ";
cout << endl;
cout << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
}
}
void push_front()
{
string imie, nazwisko, plec;
int dzien, miesiac, rok_urodzenia, nr_PESEL;
cout << "WSTAWIANIE DANYCH NA POCZATEK LISTY" << endl;
cout << "Podaj plec(Kobieta/Mezczyzna): ";
cin >> plec;
if(plec!="Kobieta" || plec!="Mezczyzna")
{
printf("Niepoprawna plec!");
return;
}
cout << "Podaj imie: ";
cin >> imie;
cout << "Podaj nazwisko: ";
cin >> nazwisko;
cout << "Podaj dzien urodzenia: ";
cin >> dzien;
cout << "Podaj miesiac urodzenia: ";
cin >> miesiac;
cout << "Podaj rok urodzenia: ";
cin >> rok_urodzenia;
cout << "Podaj numer PESEL: ";
cin >> nr_PESEL;
lista_systemu.push_front(plec[10]);
lista_systemu.push_front(imie[30]);
lista_systemu.push_front(nazwisko[30]);
lista_systemu.push_front(dzien);
lista_systemu.push_front(miesiac);
lista_systemu.push_front(rok_urodzenia);
lista_systemu.push_front(nr_PESEL);
}
void push_back()
{
string imie, nazwisko, plec;
int dzien, miesiac, rok_urodzenia, nr_PESEL;
cout << "WSTAWIANIE DANYCH NA KONIEC LISTY" << endl;
cout << "Podaj plec(Kobieta/Mezczyzna): " << endl;
cin >> plec;
if(plec!="Kobieta" || plec!="Mezczyzna")
{
printf("Niepoprawna plec!");
return;
}
cout << "Podaj imie: " << endl;
cin >> imie;
cout << "Podaj nazwisko: " << endl;
cin >> nazwisko;
cout << "Podaj dzien urodzenia: ";
cin >> dzien;
cout << "Podaj miesiac urodzenia: ";
cin >> miesiac;
cout << "Podaj rok urodzenia: ";
cin >> rok_urodzenia;
cout << "Podaj numer PESEL: ";
cin >> nr_PESEL;
lista_systemu.push_front(plec[10]);
lista_systemu.push_front(imie[30]);
lista_systemu.push_front(nazwisko[30]);
lista_systemu.push_front(dzien);
lista_systemu.push_front(miesiac);
lista_systemu.push_front(rok_urodzenia);
lista_systemu.push_front(nr_PESEL);
}
void pop_front()
{
printf("Za chwile nastapi usuniecie osoby, ktora jest na poczatku listy...");
Sleep(3000);
lista_systemu.pop_front();
}
void pop_back()
{
printf("Za chwile nastapi usuniecie osoby, ktora jest na koncu listy...");
Sleep(3000);
lista_systemu.pop_back();
}
void size()
{
cout << "Na liscie jest: " << lista_systemu.size() << "osob.";
Sleep(3000);
}
void max_size()
{
cout << "Maksymalna ilosc osob, ktora mozna przechowac to: " << lista_systemu.max_size();
}
void empty()
{
cout << "Czy lista systemu jest pusta? Sprawdzmy... -------> ";
if(lista_systemu.empty()==1)
{
cout << "Lista w systemie jest pusta.";
}
else cout << "Lista w systemie nie jest pusta.";
Sleep(3000);
}
void remove()
{
int nr_PESEL ;
cout << "Usuwanie pozycji o tym samym PESELU: ";
cin >> nr_PESEL;
Sleep(3000);
}
void sort()
{
cout <<"Za chwile nastapi posortowanie listy wedlug identyfikatora: ";
lista_systemu.sort();
Sleep(3000);
}
void reverse()
{
cout <<"Za chwile nastapi posortowanie listy w odwrotnej kolejnosci: ";
lista_systemu.reverse();
Sleep(3000);
}
void exit()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
cout << "Za chwile nastapi zamkniecie programu! Zapraszamy ponownie.";
Sleep(3500);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);
}
int main()
{
do
{
Wyswietl_Dane();
cout << "MENU GLOWNE LISTY SYSTEMU: " << endl;
cout << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl;
cout << "1. push_front - dodawanie na poczatku listy" << endl;
cout << "2. push_back - dodawanie na koncu listy" << endl;
cout << "3. pop_front - usuwanie na poczatku listy" << endl;
cout << "4. pop_back - usuwanie na koncu listy" << endl;
cout << "5. size - sprawdzenie ilosci elementow na liscie" << endl;
cout << "6. max_size - sprawdzenie maksymalnej ilosci elementow na liscie" << endl;
cout << "7. empty - sprawdzenie, czy lista jest pusta" << endl;
cout << "8. remove - usuniecie osoby o takim samym numerze PESEL" << endl;
cout << "9. sort - sortowanie listy systemu rosnaco" << endl;
cout << "10. reverse - sortowanie listy w odwrotnej kolejnosci" << endl;
cout << "11. exit - wyjscie z programu" << endl;
cout << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl;
cout << "Wybor funkcji: ";
cin >> funkcja;
switch(funkcja)
{
case 1: push_front(); break;
case 2: push_back(); break;
case 3: pop_front(); break;
case 4: pop_back(); break;
case 5: size(); break;
case 6: max_size(); break;
case 7: empty(); break;
case 8: remove(); break;
case 9: sort(); break;
case 10: reverse(); break;
case 11: exit(); break;
default:
cout << "Ups! Cos poszlo nie tak!";
Sleep(3000);
break;
}
}
while(funkcja!=11);
return 0;
}
Program nie pokazuje errorów i warningów, jednak resetuje się jego działanie po wybraniu którejkolwiek z opcji switcha.