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

Program logowania

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
256 wizyt
pytanie zadane 1 kwietnia 2019 w C i C++ przez Jakub Michalik Użytkownik (850 p.)

Moi drodzy!

Mam problem z odczytem plików a mianowicie nie wiem jak zrobić pentlę przy switch(u)

Narazie mam taki kod:

#include <iostream>
#include <fstream>

using namespace std;

int wybor;           //  DO MENU
int identyfikator[2];
string nick[2];
string login[2];
string haslo[2];
string klawiatura_login, klawiatura_haslo, klawiatura_nick;

void rejestracja()
{
	cout << "Zarejestruj sie"<<endl;
	//WPROWADŹ DANE
    cout << "Wprowadz nazwe uzytkownika: ";
    cin >> nick[1];
    cout << "Wprowadz login: ";
    cin >> login[1];
    cout << "Wprowadz haslo: ";
    cin >> haslo[1];

	fstream plik;
    plik.open("dane.txt",ios::out | ios::app);

    plik << nick [1]<< endl;
    plik << login [1]<< endl;
    plik << haslo [1]<< endl;
    plik << identyfikator [1]<< endl;

    plik.close();
}

void logowanie()
{
    cout << "Zaloguj sie" << endl;
    //WPROWADŹ DANE
    cout << "Nazwa uzytkownika: ";
    cin >> klawiatura_nick;
    cout << "Login: ";
    cin >> klawiatura_login;
    cout << "Haslo: ";
    cin >> klawiatura_haslo;
    //POBIERANIE WŁAŚCIWYCH
    string linia;
    int nr_linii=1;

    fstream plik;
    plik.open("dane.txt", ios::in);

    if(plik.good()==false) cout<<"Nie mozna otworzyc pliku!";

    while (getline(plik, linia))
    {
        switch (nr_linii)
        {
                case 1: nick[0]=linia; break;
                case 2: login[0]=linia; break;
                case 3: haslo[0]=linia; break;
                case 4: identyfikator[0]=atoi(linia.c_str());break;
                case 5: nick[1]=linia; break;
                case 6: login[1]=linia; break;
                case 7: haslo[1]=linia; break;
                case 8: identyfikator[1]=atoi(linia.c_str());break;
        }
        nr_linii++;
    }

    plik.close();
    //SPRAWDZANIE
    for(int i=0; i<2; i++)
    {
        if(klawiatura_haslo == haslo[i]&&klawiatura_login == login[i]&&klawiatura_nick == nick[i])
        {
            cout << "Zalogowano pomyslnie";
            cout << identyfikator[0]<<identyfikator[1];
        }
    }

}

int main()
{
    cout << "Menu" << endl;
    cout << "-----------------" << endl;
    cout << "1.Zaloguj sie\n2.Zarejestruj sie\n" << endl;
    cout << "Wybor: ";cin >> wybor;
    if(wybor == 1)
    {
        logowanie();
    }
    else if(wybor == 2)
    {
       rejestracja();
    }

    return 0;
}

 

komentarz 1 kwietnia 2019 przez Jakub Michalik Użytkownik (850 p.)
Żeby nie wypisywać :

nick[0],nick[1],nick[2]...

1 odpowiedź

0 głosów
odpowiedź 2 kwietnia 2019 przez MrMock Bywalec (2,890 p.)
najłatwiej do switcha dać resztę z dzielenia przez 4 a do wyboru numeru tablicy wynik dzielenia przez 4
komentarz 3 kwietnia 2019 przez MsMaciek123 Pasjonat (24,760 p.)
A nie lepiej dać to do pętli for? I wtedy długość pliku dzielisz przez 4 i masz mniej działań
komentarz 6 kwietnia 2019 przez Jakub Michalik Użytkownik (850 p.)

Mógłbyś przesłać ten kawałek kodu bo boje się że znowu coś zepsuję ?

@MrMock,

Podobne pytania

0 głosów
2 odpowiedzi 409 wizyt
pytanie zadane 25 listopada 2018 w PHP przez niezalogowany
0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 18 września 2018 w C i C++ przez Zimny. Nowicjusz (140 p.)
+1 głos
1 odpowiedź 277 wizyt

91,847 zapytań

140,523 odpowiedzi

317,030 komentarzy

61,170 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...