Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Prosta baza danych

Ostatnio zmodyfikowano 2016-10-31 18:48
Autor Wiadomość
wietrak11
Temat założony przez niniejszego użytkownika
Prosta baza danych
» 2016-10-31 18:19:43
Witam, mam problem z moim programem w prostej bazie danych. Nie mogę dodać do niej dwóch rekordów. Przykładowo po dodaniu osoby Jan Nowak 20 i wyświetleniu takiej bazy wszystko działa prawidłowo ale gdy dodam kolejną osobę np. Adam Kowalski 25 to w bazie danych zostanie wyświetlony tylko Adam. Oto kod programu.

C/C++
#include <iostream>
#include <cstdlib>
using namespace std;

void wyswietlanie( int id, string imie[], string nazwisko[], int wiek[] )
{
    system( "cls" );
    cout << "ID. IMIE   NAZWISKO   WIEK" << endl;
    cout << "============================" << endl;
    for( int i = 0; i <= id; i++ )
    {
        cout << id + 1 << "." << "  " << imie[ id ] << "  " << nazwisko[ id ] << "  " << wiek[ id ] << endl;
    }
    cout << "\n" << endl;
    system( "pause" );
}
void dodawanie( int id, string imie[], string nazwisko[], int wiek[] )
{
    system( "cls" );
    id = id++;
    cout << "Podaj imie " << id + 1 << " osoby: ";
    cin >> imie[ id ];
    cout << "Podaj nazwisko " << id + 1 << " osoby: ";
    cin >> nazwisko[ id ];
    cout << "Podaj wiek " << id + 1 << " osoby: ";
    cin >> wiek[ id ];
    cout << "\n" << endl;
    system( "pause" );
}
int main()
{
    int id = 0;
    string imie[ 20 ];
    string nazwisko[ 20 ];
    int wiek[ 20 ];
    int wybor;
    do {
        system( "cls" );
        cout << "Witam w mojej bazie danych." << endl;
        cout << "===========================\n" << endl;
        cout << "MENU GLOWNE" << endl;
        cout << "1.Wyswietl baze danych" << endl;
        cout << "2.Dodaj osobe do bazy danych." << endl;
        cout << "3.Wyjdz z programu.\n" << endl;
        cout << "Wybierz co chcesz zrobic: ";
        cin >> wybor;
       
        switch( wybor )
        {
        case 1:
            wyswietlanie( id, imie, nazwisko, wiek );
            break;
        case 2:
            dodawanie( id, imie, nazwisko, wiek );
            break;
        case 3:
            return 0;
            break;
        default:
            {
                system( "cls" );
                cout << "Wybierz cyfre z listy." << endl;
                system( "pause" );
            }
        }
    }
    while( wybor != 4 );
   
    return 0;
}

Podejrzewam że problem leży w inkrementacji w funkcji dodawanie() ale nie mogę dojść jak powinno być prawidłowo. Może ktoś wytłumaczyć jak to powinno być?
P-153125
BadBullPL
» 2016-10-31 18:31:34
Przekazujesz id przez wartość. Inkrementacja powinna być na końcu funkcji.
id = id++;
Nie rozumiesz inkrementacji. Poczytaj o niej.
P-153127
wietrak11
Temat założony przez niniejszego użytkownika
» 2016-10-31 18:46:39
Możesz bardziej rozjaśnić jak to powinno być? Na końcu to znaczy tak?

C/C++
void dodawanie( int id, string imie[], string nazwisko[], int wiek[] )
{
    system( "cls" );
    cout << "Podaj imie " << id + 1 << " osoby: ";
    cin >> imie[ id ];
    cout << "Podaj nazwisko " << id + 1 << " osoby: ";
    cin >> nazwisko[ id ];
    cout << "Podaj wiek " << id + 1 << " osoby: ";
    cin >> wiek[ id ];
    cout << "\n" << endl;
    system( "pause" );
    id = id++;
}
P-153130
BadBullPL
» 2016-10-31 18:48:33
Może być. Ale wystarczy samo:
id++;
P-153131
« 1 »
  Strona 1 z 1