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

[C++]Struktury dynamiczne - dodawanie kolejnych osób do bazy danych

Ostatnio zmodyfikowano 2014-12-16 17:18
Autor Wiadomość
jedrula.pogo
Temat założony przez niniejszego użytkownika
[C++]Struktury dynamiczne - dodawanie kolejnych osób do bazy danych
» 2014-12-02 12:12:05
Witam !
Mam za zadanie stworzenie bazy danych osób w oparciu o struktury dynamiczne. Program ma na początku pytać ile zarezerwować miejsca na bazę, a następnie wykonywać różne funkcje takie jak dodawanie , usuwanie , edycja i tym podobne. Obecnie mam problem z dodawaniem osób do bazy. Załóżmy, że na początku proszę program o zarezerwowanie 50 miejsc w tablicy dynamicznej ( i tutaj już wiem, że nie będę tego modyfikował). Następnie uruchamiam funkcję dodaj_lekarza i powiedzmy, że w tym momencie chcę dodać na razie dwie osoby. Mam więc dwie osoby o odpowiednio indeksie 0 i 1. I powiedzmy, że teraz chciałbym znowu dodać na przykład dwie kolejne osoby ( zachowując poprzednie dane) o indeksach 3 i 4 i tak dalej. W tym właśnie momencie nie wiem jak to zrealizować w funkcji dodaj_lekarza, mam wykorzystać jakąś kolejną zmienną, która będzie przechowywać historię zmiennej liczba_spec ? Przepraszam za ewentualny bałagan myślowy, dopiero się uczę i nie mogę sobie z tym poradzić.

Oto co mi się udało napisać :

C/C++
#include <iostream>
#include<iomanip>
#include<cstdlib>
#include <cstring>

using namespace std;

const int D_ID = 3; // ID <00 ; 99 >
const int D_IM = 10;
const int D_NAZ = 20;
const int D_OS = 40; // ??
const int D_SPEC = 20;
const int D_OPI = 255;


struct lekarz {
    char ID[ D_ID ];
    char imie[ D_IM ];
    char nazwisko[ D_NAZ ];
    char osrodek[ D_OS ];
    char specjalnosc[ D_SPEC ];
    int ilpacj;
};

struct opinie {
    char opinia[ D_OPI ];
    char imie_kom[ D_IM ];
    char naz_kom[ D_NAZ ];
   
};

// --------------MENU---------------------
void menu( lekarz LK[], int liczba_spec );
void menu_gl( int opcja );
void menu_szuk( lekarz LK[], const int liczba_spec );
void menu_kasuj();

//-------------FUNKCJE DODAJ/USUN------------

void dodaj_lekarza( lekarz LK[], int & liczba_spec );
void kasuj_lekarza( lekarz LK[], int & liczba_spec );

//-------------EDYCJA DANYCH-----------------

//-------------WYSZUKIWANIE------------------

int szukaj_wg_ID1( lekarz LK[], const int liczba_spec, char ID[] );
void szukaj_wg_ID2( lekarz LK[], const int liczba_spec );

// ------------LISTA-------------------------

void lista_naglowek();
void lista_lekarz( lekarz LK[] );
void lista_calosc( lekarz LK[], const int liczba_spec );

//----------------------------------------


int main() {
    lekarz * LK;
    int liczba_spec, liczba_spec2;
   
    cout << "Podaj ilosc specjalistow (rezerwacja pamieci) : ";
    cin >> liczba_spec;
    liczba_spec2 = liczba_spec;
   
    LK = new lekarz[ liczba_spec ];
   
    menu( LK, liczba_spec );
   
    delete[] LK;
   
}

// ---------------------------------

//FUNKCJE ODPOWIADAJACE ZA MENU

void menu_gl( int opcja )
{
    switch( opcja )
    {
    case 1: {
            cout << endl;
            cout << "BAZA DANYCH SPECJALISTOW" << endl;
            cout << "------------------------" << endl;
            cout << "MENU GLOWNE :" << endl;
            cout << "------------------------" << endl;
            cout << "1 - Dodaj Lekarza" << endl;
            cout << "2 - Usun Lekarza" << endl;
            cout << "3 - Edytuj dane lekarza" << endl;
            cout << "4 - Wyszukaj lekarza" << endl;
            cout << "5 - Lista lekarzy" << endl;
            cout << "0 - Zakoncz prace" << endl;
            cout << ">>";
            break;
        }
    case 2: {
            cout << endl;
            cout << "MENU WYSZUKIWANIA : " << endl;
            cout << "------------------------" << endl;
            cout << "1 - Wyszukiwanie lekarza po nazwisku" << endl;
            cout << "2 - Wyszukiwanie lekarza po specjalizacji" << endl;
            cout << "3 - Wyszukiwanie po osrodku" << endl;
            cout << "4 - Wyszukiwanie specjalisty z najmniejsza kolejka" << endl;
            cout << "5 - Wyszukiwanie lekarza po ID" << endl;
            cout << "0 - Wyjdz do glownego menu" << endl;
            cout << ">>";
            break;
        }
    case 3: {
            cout << endl;
            cout << "MENU KASOWANIA : " << endl;
            cout << "------------------------" << endl;
            cout << "1 - Skasuj dane lekarza po ID" << endl;
            cout << "0 - Wyjdz do glownego menu" << endl;
            cout << ">>";
            break;
        }
    }
}

void menu( lekarz LK[], int liczba_spec )
{
    int opcja_menu;
   
    do {
        menu_gl( 1 );
        cin >> opcja_menu;
        switch( opcja_menu )
        {
        case 1: dodaj_lekarza( LK, liczba_spec );
            break;
        case 2: menu_kasuj();
            break;
            //case 3: menu_edycja();
            //break;
        case 4: menu_szuk( LK, liczba_spec );
            break;
        case 5: lista_calosc( LK, liczba_spec );
            break;
        }
       
    } while( opcja_menu != 0 );
   
}

void menu_szuk( lekarz LK[], const int liczba_spec )
{
    int opcja_menu;
    do {
        menu_gl( 2 );
        cin >> opcja_menu;
        switch( opcja_menu )
        {
        case 1:;
            break;
        case 2:;
            break;
        case 3:;
            break;
        case 4:;
            break;
        case 5: szukaj_wg_ID2( LK, liczba_spec );
            break;
        }
    } while( opcja_menu != 0 );
   
}

void menu_kasuj()
{
    int opcja_menu;
    do {
        menu_gl( 3 );
        cin >> opcja_menu;
        switch( opcja_menu )
        {
        case 1:;
            break;
        case 2:;
            break;
        }
    } while( opcja_menu != 0 );
   
}

//-----------FUNKCJE GLOWNE---------------

void dodaj_lekarza( lekarz LK[], int & liczba_spec )
{
    int n;
    cout << "Ilu chcesz dodac specjalistow ? (Podaj liczbe) : ";
    cin >> n;
   
   
    for( int i = 0; i < n; i++ )
    {
       
        cout << "ID : ";
        cin >> LK[ i ].ID;
        cout << "Imie : ";
        cin >> LK[ i ].imie;
        cout << "Nazwisko : ";
        cin >> LK[ i ].nazwisko;
        cout << "Osrodek (miasto) : ";
        cin >> LK[ i ].osrodek;
        cout << "Specjalnosc : ";
        cin >> LK[ i ].specjalnosc;
        cout << "Ilosc pacjentow w kolejce : ";
        cin >> LK[ i ].ilpacj;
    }
}

//---------------WYSZUKIWANIE-----------------

int szukaj_wg_ID1( lekarz LK[], const int liczba_spec, char ID[] )
{
    for( int i = 0; i < liczba_spec; i++ )
         if( strcmp( LK[ i ].ID, ID ) == 0 ) return( i );
   
    return( - 1 );
}

void szukaj_wg_ID2( lekarz LK[], const int liczba_spec )
{
    char ID[ D_ID ];
    int ind;
   
    cout << "Podaj ID : ";
    cin >> ID;
    if(( ind = szukaj_wg_ID1( LK, liczba_spec, ID ) ) != - 1 )
    {
        lista_naglowek();
        lista_lekarz( LK + ind );
    }
    else
    {
        cout << "Nie ma osoby o podanym numerze ID " << ID << endl;
        system( "pause" );
    }
}


//---------------LISTA------------------------

void lista_naglowek()
{
    cout << endl;
    cout << "|ID |  IMIE   |  NAZWISKO  | OSRODEK |  SPECJALNOSC  | KOLEJKA | " << endl;
    cout << "_________________________________________________________________" << endl;
   
}

void lista_lekarz( lekarz LK[] )
{
    cout << LK->ID;
    cout << setw( 10 ) << LK->imie;
    cout << setw( 15 ) << LK->nazwisko;
    cout << setw( 10 ) << LK->osrodek;
    cout << setw( 15 ) << LK->specjalnosc;
    cout << setw( 10 ) << LK->ilpacj;
    cout << endl;
}

void lista_calosc( lekarz LK[], const int liczba_spec )
{
    lista_naglowek();
    for( int i = 0; i < liczba_spec; i++ )
         lista_lekarz( LK + i );
   
    cout << "________________________________________________________________" << endl;
    cout << "Ilosc lekarzy w bazie : " << liczba_spec << endl;
    cout << endl;
   
}

//------------------------------------------------------
P-121921
Tomek_z_W11
» 2014-12-02 17:33:40
Jeżeli lekarzy przechowujesz w tablicy, to proponuje to zrobić w ten sposób:
 - Tworzysz zmienną globalną indeks, która ma na początku wartość 0.
 - W momencie, gdy użytkownik poprosi o dodanie lekarza - wywołaj odpowiednią funkcje, dodaj_lekarza() czy jak ją tam nazwałeś.
 - W funkcji prosisz o ilość specjalistów, zapisujesz ich pod indeks, indeks+1, indeks+2 itd... (zależnie ile masz ich zapisać), a przed wyjściem z funkcji zwiększasz indeks tak, żeby przy następnym wywołaniu funkcji lekarze byli znowu przypisywani pod odpowiednie indeksy tablicy - te jeszcze nie użyte.
 - Jeżeli ktoś zapisze 3 lekarzy, to indeks zwiększasz o 3, jeżeli o 5 lekarzy to indeks zwiększasz o 5.
P-121961
jedrula.pogo
Temat założony przez niniejszego użytkownika
» 2014-12-02 20:11:38
Zrobiłem to co powiedziałeś. Czy ten kod ma w tej chwili sens ? Obecnie napisałem funkcje na usuwanie , dodawanie , wyszukiwanie po ID.

C/C++
#include <iostream>
#include<iomanip>
#include<cstdlib>
#include <cstring>

using namespace std;

const int D_ID = 3; // ID <00 ; 99 >
const int D_IM = 10;
const int D_NAZ = 20;
const int D_OS = 40; // ??
const int D_SPEC = 20;
const int D_OPI = 255;


struct lekarz {
    char ID[ D_ID ];
    char imie[ D_IM ];
    char nazwisko[ D_NAZ ];
    char osrodek[ D_OS ];
    char specjalnosc[ D_SPEC ];
    int ilpacj;
};

struct opinie {
    char opinia[ D_OPI ];
    char imie_kom[ D_IM ];
    char naz_kom[ D_NAZ ];
   
};

// --------------MENU---------------------
void menu( lekarz LK[], int liczba_spec );
void menu_gl( int opcja );
void menu_szuk( lekarz LK[], const int liczba_spec );
void menu_kasuj();

//-------------FUNKCJE DODAJ/USUN------------

void dodaj_lekarza( lekarz LK[], int & liczba_spec );
void kasuj_lekarza( lekarz LK[], int & liczba_spec );

//-------------EDYCJA DANYCH-----------------




//-------------WYSZUKIWANIE------------------

int szukaj_wg_ID1( lekarz LK[], const int liczba_spec, char ID[] );
void szukaj_wg_ID2( lekarz LK[], const int liczba_spec );

// ------------LISTA-------------------------

void lista_naglowek();
void lista_lekarz( lekarz LK[] );
void lista_calosc( lekarz LK[], const int liczba_spec );

//----------------------------------------

int indeks; // ilosc uzupelnionych danych o specjalistach w bazie

int main() {
    lekarz * LK;
    int liczba_spec;
   
    cout << "Podaj ilosc specjalistow (rezerwacja pamieci) : ";
    cin >> liczba_spec;
   
   
    LK = new lekarz[ liczba_spec ];
   
    menu( LK, liczba_spec );
   
    delete[] LK;
   
}

// ---------------------------------

//FUNKCJE ODPOWIADAJACE ZA MENU

void menu_gl( int opcja )
{
    switch( opcja )
    {
    case 1: {
            cout << endl;
            cout << "BAZA DANYCH SPECJALISTOW" << endl;
            cout << "------------------------" << endl;
            cout << "MENU GLOWNE :" << endl;
            cout << "------------------------" << endl;
            cout << "1 - Dodaj Lekarza" << endl;
            cout << "2 - Usun Lekarza" << endl;
            cout << "3 - Edytuj dane lekarza" << endl;
            cout << "4 - Wyszukaj lekarza" << endl;
            cout << "5 - Lista lekarzy" << endl;
            cout << "6 - Zobacz opinie o lekarzu" << endl;
            cout << "0 - Zakoncz prace" << endl;
            cout << ">>";
            break;
        }
    case 2: {
            cout << endl;
            cout << "MENU WYSZUKIWANIA : " << endl;
            cout << "------------------------" << endl;
            cout << "1 - Wyszukiwanie lekarza po nazwisku" << endl;
            cout << "2 - Wyszukiwanie lekarza po specjalizacji" << endl;
            cout << "3 - Wyszukiwanie po osrodku" << endl;
            cout << "4 - Wyszukiwanie specjalisty z najmniejsza kolejka" << endl;
            cout << "5 - Wyszukiwanie lekarza po ID" << endl;
            cout << "0 - Wyjdz do glownego menu" << endl;
            cout << ">>";
            break;
        }
    }
}

void menu( lekarz LK[], int liczba_spec )
{
    int opcja_menu;
   
    do {
        menu_gl( 1 );
        cin >> opcja_menu;
        switch( opcja_menu )
        {
        case 1: dodaj_lekarza( LK, liczba_spec );
            break;
        case 2: kasuj_lekarza( LK, liczba_spec );
            break;
            //case 3: menu_edycja();
            //break;
        case 4: menu_szuk( LK, liczba_spec );
            break;
        case 5: lista_calosc( LK, liczba_spec );
            break;
        }
       
    } while( opcja_menu != 0 );
   
}

void menu_szuk( lekarz LK[], const int liczba_spec )
{
    int opcja_menu;
    do {
        menu_gl( 2 );
        cin >> opcja_menu;
        switch( opcja_menu )
        {
        case 1:;
            break;
        case 2:;
            break;
        case 3:;
            break;
        case 4:;
            break;
        case 5: szukaj_wg_ID2( LK, liczba_spec );
            break;
        }
    } while( opcja_menu != 0 );
   
}



//-----------FUNKCJE DODAJ/USUN---------------

void dodaj_lekarza( lekarz LK[], int & liczba_spec )
{
    int n;
    cout << "Ilu chcesz dodac specjalistow ? (Podaj liczbe) : ";
    cin >> n;
   
   
    for( int i = 0; i < n; i++ )
    {
       
        cout << "ID : ";
        cin >> LK[ indeks ].ID;
        cout << "Imie : ";
        cin >> LK[ indeks ].imie;
        cout << "Nazwisko : ";
        cin >> LK[ indeks ].nazwisko;
        cout << "Osrodek (miasto) : ";
        cin >> LK[ indeks ].osrodek;
        cout << "Specjalnosc : ";
        cin >> LK[ indeks ].specjalnosc;
        cout << "Ilosc pacjentow w kolejce : ";
        cin >> LK[ indeks ].ilpacj;
        indeks++;
    }
}

void kasuj_lekarza( lekarz LK[], int & liczba_spec )
{
    char ID[ D_ID ];
    int ind; //indeks elementu do usuniecia
   
    cout << " Podaj ID lekarza do skasowania: ";
    cin >> ID;
    if(( ind = szukaj_wg_ID1( LK, liczba_spec, ID ) ) != - 1 ) //znaleziony lekarz o okreslonym ID
    {
        for( int i = ind; i < liczba_spec - 1; i++ )
             LK[ i ] = LK[ i + 1 ];
       
        indeks--;
        cout << "Sukces !" << endl;
    }
    else
    {
        cout << "Nie odnaleziono lekarza o podanym numerze ID " << ID << endl;
        system( "pause" );
    }
}


//---------------WYSZUKIWANIE-----------------
// wyszukiwanie ID
int szukaj_wg_ID1( lekarz LK[], const int liczba_spec, char ID[] )
{
    for( int i = 0; i < liczba_spec; i++ )
         if( strcmp( LK[ i ].ID, ID ) == 0 ) return( i );
   
    return( - 1 );
}

void szukaj_wg_ID2( lekarz LK[], const int liczba_spec )
{
    char ID[ D_ID ];
    int ind;
   
    cout << "Podaj ID : ";
    cin >> ID;
    if(( ind = szukaj_wg_ID1( LK, liczba_spec, ID ) ) != - 1 )
    {
        lista_naglowek();
        lista_lekarz( LK + ind );
    }
    else
    {
        cout << "Nie ma osoby o podanym numerze ID " << ID << endl;
        system( "pause" );
    }
}

//wyszukiwanie specjalizacja


//---------------LISTA------------------------

void lista_naglowek()
{
    cout << endl;
    cout << "|ID |  IMIE   |  NAZWISKO  | OSRODEK |  SPECJALNOSC  | KOLEJKA | " << endl;
    cout << "_________________________________________________________________" << endl;
   
}

void lista_lekarz( lekarz LK[] )
{
    cout << LK->ID;
    cout << setw( 10 ) << LK->imie;
    cout << setw( 15 ) << LK->nazwisko;
    cout << setw( 10 ) << LK->osrodek;
    cout << setw( 15 ) << LK->specjalnosc;
    cout << setw( 10 ) << LK->ilpacj;
    cout << endl;
}

void lista_calosc( lekarz LK[], const int liczba_spec )
{
    lista_naglowek();
    for( int i = 0; i < indeks; i++ )
         lista_lekarz( LK + i );
   
    cout << "________________________________________________________________" << endl;
    cout << "Ilosc lekarzy w bazie : " << indeks << endl;
    cout << endl;
   
}

//------------------------------------------------------
P-121988
darko202
» 2014-12-02 20:52:51
pewnie nie zauważyłeś że na razie nie masz w programie zwiększania rozmiaru tablicy

zrobić to trzeba według algorytmu
jesli skonczy mi sie miejsce w mojej tablicy
to tworze tablice tymczasowa
przepisuje zawartosc mojej tablicy do tymczasowej
kasuje starą tablicę
przypisane do tablicy wskaźnika tablicy tymczasowej
zwiększam pole informujące o wielkości tablicy

np. podobny wcześniejszy przypadek z forum
tam była struktura historia i zmienna globalna a - ilość zarezerwowanej pamięci
C/C++
void powieksz( int licznik, abcd *& historia, int * wsk_a )
{
    if( licznik == * wsk_a ) { //jesli skonczy mi sie miejsce w mojej tablicy
       
        abcd * temp = new abcd[ * wsk_a * 2 ]; //to tworze tablice tymczasowa
       
        for( int i = 0; i < * wsk_a; i++ ) {
            temp[ i ].x = historia[ i ].x; //przepisuje zawartosc mojej tablicy do tymczasowej
        }
       
        delete[] historia;
        historia = temp;
        * wsk_a *= 2;
    }
}


jeśli mogę Ci radzić to koncentruj się na istotnym dla Ciebie elemencie
niepotrzebnie załączasz cały kod (wystarczy struktura, istotne funkcje (najlepiej ta która Ci dolega) + main

nie uwzględniłeś rady @Tomek_z_W11
P-121999
jedrula.pogo
Temat założony przez niniejszego użytkownika
» 2014-12-02 21:26:09
C/C++
void dodaj_lekarza( lekarz LK[], int & liczba_spec )
{
    int n;
    cout << "Ilu chcesz dodac specjalistow ? (Podaj liczbe) : ";
    cin >> n;
   
   
    for( int i = 0; i < n; i++ )
    {
       
        cout << "ID : ";
        cin >> LK[ indeks ].ID;
        cout << "Imie : ";
        cin >> LK[ indeks ].imie;
        cout << "Nazwisko : ";
        cin >> LK[ indeks ].nazwisko;
        cout << "Osrodek (miasto) : ";
        cin >> LK[ indeks ].osrodek;
        cout << "Specjalnosc : ";
        cin >> LK[ indeks ].specjalnosc;
        cout << "Ilosc pacjentow w kolejce : ";
        cin >> LK[ indeks ].ilpacj;
        indeks++;
    }
}

Czy to jest złe przekształcenie według rad @TOMEK_Z_W11? Dodałem zmienną globalną indeks i inkrementuję ją po każdej pętli w funkcji o tyle ile chciałem dodać specjalistów.

Pytanie co do algorytmu zwiększania rozmiaru tablicy. Rozumiem, że implementuję go wtedy kiedy dodaję osobę, która już wykracza po za pierwotny rozmiar pierwszej tablicy. Gdzie będę musiał tę funkcję wpuścić ? Jutro coś z tym pokombinuję
P-122004
Tomek_z_W11
» 2014-12-02 23:03:32
Jeżeli dobrze patrze, to wszystko jest okay.

Co do zwiększania elementów tablicy.
W funkcji dodaj_lekarza() przed wszystkim (przed cały dodawaniem danych nt lekarza) sprawdzasz, czy dotychczasowy indeks ma wartość, jaki tam był rozmiar? 50? jeżeli dobrze pamiętam..., jeżeli ma wartość większą lub równą 49 (bo indeksy tablicy numerujemy od 0), to robisz to co napisał kolega wyżej w komentarzu. jeżeli ma wartość mniejszą od 49, to musisz uwzględnić dodatkowy przypadek:
załóżmy, że indeks ma wartość 46, a ktoś poprosi o dodanie 10 lekarzy, indeks będzie się zwiększać do 56ściu, a w momencie, gdy będzie miał wartość 50, już wyjdziesz poza zakres tablicy...

Wszystko można załatwić jednym ifem, co więcej będzie to poprawniejsze.
Pobierasz ilość lekarzy i sprawdzasz, czy n (ilość lekarzy) + indeks jest mniejszy bądź równy 49, jeżeli tak - wszystko w porządku - dodajesz kolejnych specjalistów, jeżeli nie, robisz to co napisał kolega wyżej w komentarzu.
P-122030
jedrula.pogo
Temat założony przez niniejszego użytkownika
» 2014-12-03 19:39:08
Napisałem tę funkcję i warunek wedle waszych wskazówek. Oto one :

funkcja:
powieksz_pamiec

C/C++
void powieksz_pamiec( lekarz *& LK, int * wsk_spec )
{
    lekarz * temp = new lekarz[ * wsk_spec * 2 ];
   
    for( int i = 0; i < * wsk_spec; i++ )
    {
        temp[ i ].ID = LK[ i ].ID;
        temp[ i ].imie = LK[ i ].imie;
        temp[ i ].nazwisko = LK[ i ].nazwisko;
        temp[ i ].osrodek = LK[ i ].osrodek;
        temp[ i ].specjalnosc = LK[ i ].specjalnosc;
        temp[ i ].ilpacj = LK[ i ].ilpacj;
    }
    delete[] LK;
    LK = temp;
    * wsk_spec *= 2;
}

tutaj dostaję błąd : [ERROR] invalid array assignment razy sześć

Zmiany w
dodaj_lekarza

C/C++
void dodaj_lekarza( lekarz LK[], int & liczba_spec, int * wsk_spec )
{
    int n;
    cout << "Ilu chcesz dodac specjalistow ? (Podaj liczbe) : ";
    cin >> n;
   
    if(( indeks + n ) >= 49 )
    {
        powieksz_pamiec( LK, wsk_spec );
    }
   
    for( int i = 0; i < n; i++ )
    {
       
        cout << "ID : ";
        cin >> LK[ indeks ].ID;
        cout << "Imie : ";
        cin >> LK[ indeks ].imie;
        cout << "Nazwisko : ";
        cin >> LK[ indeks ].nazwisko;
        cout << "Osrodek (miasto) : ";
        cin >> LK[ indeks ].osrodek;
        cout << "Specjalnosc : ";
        cin >> LK[ indeks ].specjalnosc;
        cout << "Ilosc pacjentow w kolejce : ";
        cin >> LK[ indeks ].ilpacj;
        indeks++;
    }
}

[Error] 'wsk_spec' was not declared in this scope

Nie jestem pewien , ale czy ja źle przenoszę argumenty do funkcji ?

P-122096
Tomek_z_W11
» 2014-12-03 21:22:21
Nie tyle co źle przenosisz ile źle odbierasz.

Proponuje zrobić tak. Po pierwsze to tablice lekarzy
LK[]
 zamienić na tablicę dynamiczną:
C/C++
void dodaj_lekarza( lekarz * LK, int & liczba_spec, int * wsk_spec )

Oczywiście będziesz musiał też parę rzeczy pozmieniać w mainie.


Druga sprawa, w funkcji powiększ_pamięć() zrobić drobne zmiany:
C/C++
void powieksz_pamiec( lekarz * LK, int * wsk_spec )

Dodam też, że jeżeli chodzi o argumenty
int * wsk_spec
 możesz zamienić na zwykłe int'y - w tej kwestii nie potrzebujesz wskaźników, no chyba że masz w tym jakiś cel, a ja o nim nie wiem.
P-122113
« 1 » 2 3 4 5
  Strona 1 z 5 Następna strona