• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program - C++

Object Storage Arubacloud
0 głosów
752 wizyt
pytanie zadane 3 stycznia 2019 w C i C++ przez gorgonkowa Obywatel (1,810 p.)
edycja 3 stycznia 2019 przez gorgonkowa

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.

komentarz 3 stycznia 2019 przez MikDal Mądrala (5,660 p.)
Jeżeli program Ci się wysypuje, to czy pozostawia po sobie jakiś komunikat (jeśli tak, to dodaj go do pytania)? I czy mogłabyś wrzucić resztę programu, tak aby możliwe było uruchomienie na własnym komputerze?
komentarz 3 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)
edycja 3 stycznia 2019 przez gorgonkowa

Nie ma sprawy. :)
Oto całość kodu:
 

#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()
{
    char imie[30], nazwisko[30], plec[10];
    int dzien, miesiac, rok_urodzenia, nr_PESEL[12];
    cout << "WSTAWIANIE DANYCH NA POCZATEK LISTY" << endl;
    cout << "Podaj plec(Kobieta/Mezczyzna): ";
    cin >> plec;
    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(imie[30]);
    lista_systemu.push_front(nazwisko[30]);
    lista_systemu.push_front(plec);
    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()
{
    char imie[30], nazwisko[30], plec;
    int dzien, miesiac, rok_urodzenia;
    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_back(imie[30]);
    lista_systemu.push_back(nazwisko[30]);
    lista_systemu.push_back(plec);
    lista_systemu.push_back(dzien);
    lista_systemu.push_back(miesiac);
    lista_systemu.push_back(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;
}

komentarz 3 stycznia 2019 przez MikDal Mądrala (5,660 p.)

Prosiłbym abyś przeniosła powyższy komentarz do pytania, ułatwi to odniesienie się do tego innym osobom, a ja spróbuję się ustosunkować do tego w swojej odpowiedzi.

EDIT 1: I wyraźnie zaznaczyła jakie błędy występują w których linijkach.

EDIT 2: Czy można wiedzieć skąd nagle w nowej wersji pojawia się numer pesel w funkcji push_fron()?

komentarz 3 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)
Hmm... błędy te dotyczyły klamerek przy zmiennych, jednak na ten moment program włącza się bez błędów i warningów, ale po wpisaniu dowolnej wartości ze switcha, program jakby resetował się i od nowa się włączał.
Kod został zedytowany. :)

1 odpowiedź

0 głosów
odpowiedź 3 stycznia 2019 przez MikDal Mądrala (5,660 p.)
edycja 3 stycznia 2019 przez MikDal

Niestety program ma problem już w trzeciej linijce:

char imie[30], nazwisko[30], plec;

zmienna plec jest typu char, także może pomieścić tylko JEDNĄ literę, a Ty zapewne wprowadzasz cały tekst, co jest powodem błędu w linijce 7, 

komentarz 3 stycznia 2019 przez MikDal Mądrala (5,660 p.)
Wszystko masz wytłumaczone w błędzie – tłumacząc na polski: 'length' nie występuje w zmiennej 'nr_PESEL', która jest typu 'int'.

Przeczytaj dokładnie to co Ci tam wysłałem, są dwa rozwiązania, a Ty wybrałaś trochę z jednego i trochę z drugiego.
komentarz 3 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)

Hmm... zrobiłam na podstawie tego linka z tego forum, który podałeś. Pokazuje nadal jakiś jeden błąd. Pokazuje teraz w ten sposób:
 

void push_front()
{
    string imie, nazwisko, plec, floor;
    int dzien, miesiac, rok_urodzenia, nr_PESEL, dlugosc_PESEL, wynik;
    cout << "WSTAWIANIE DANYCH NA POCZATEK LISTY" << endl;
    cout << "Podaj plec(Kobieta/Mezczyzna): ";
    cin >> plec;
    if(plec!="Kobieta" && plec!="Mezczyzna")
    {
        printf("Niepoprawna plec!");
        Sleep(3000);
        return;
    }
    cout << "Podaj imie: ";
    cin >> imie;
    cout << "Podaj nazwisko: ";
    cin >> nazwisko;
    cout << "Podaj dzien urodzenia: ";
    cin >> dzien;
    if(dzien>31 || dzien<1)
    {
        printf("Nieprawidlowy dzien! Sprobuj od nowa.");
        Sleep(3000);
        return;
    }
    cout << "Podaj miesiac urodzenia: ";
    cin >> miesiac;
    if(miesiac>12 || miesiac<1)
    {
        printf("Nieprawidlowy miesiac! Sprobuj ponownie.");
        Sleep(3000);
        return;
    }
    cout << "Podaj rok urodzenia: ";
    cin >> rok_urodzenia;
    if(rok_urodzenia>2019 || rok_urodzenia<1900)
    {
        printf("Nieprawidlowy rok! Sprobuj wypelnic dane jeszcze raz.");
        Sleep(3000);
        return;
    }
    cout << "Podaj numer PESEL: ";
    cin >> nr_PESEL;
    double temp = dlugosc_PESEL;
    while(floor(dlugosc_PESEL) < dlugosc_PESEL)
    {
        dlugosc_PESEL *= 10;
        wynik++;
    }

    while(temp >= 1)
    {
        temp /= 10;
        wynik++;
    }

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

Błąd:
error: no match for call to (std::__cxxll::string {aka std::__cxxll::basic_string<char>}) (int&)'

komentarz 3 stycznia 2019 przez MikDal Mądrala (5,660 p.)
Miło byłoby jakbyś napisała w której linijce występuje błąd – dzięki temu nie musiałbym analizować potencjalnych problemów.
komentarz 3 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)

Sorki, postaram się nauczyć na bieżąco podpisywać linijki. Błąd dotyczy linijki 72:
 

while(floor(dlugosc_PESEL) < dlugosc_PESEL)

 

komentarz 4 stycznia 2019 przez MikDal Mądrala (5,660 p.)

Nie kompilowałem, ale występuje problem z tym, że masz zmienną floor typu string a w linijce w której wskazałaś próbujesz jej użyć jako zmiennej.

Podobne pytania

0 głosów
1 odpowiedź 140 wizyt
0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 21 maja 2019 w HTML i CSS przez b3z1m13nny Nowicjusz (120 p.)
0 głosów
3 odpowiedzi 372 wizyt
pytanie zadane 21 listopada 2018 w Rozwój zawodowy, nauka, praca przez Darkous Nowicjusz (120 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...