Diskuze: Projekt - databáza - vstupy, výstupy
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
V čistém C téměř nedělám, ale jelikož se v něm nedá programovat objektově, řekl bych, že je to takhle celkem v pořádku, možná až na ty globální proměnné, bez těch by se to pravděpodobně obešlo. Pak ještě některé funkce by se nejspíš daly rozdělit do více menších, ale to nepovažuji za nutnost.
Trochu som sa pozrel na tie globálne premenné a je mi jasné, že všetky premenné (okrem štruktúr) môžem použiť ako lokálne tam, kde ich potrebujem. Skúšal som aj štruktúry, ale to mi nejak nešlo. Vieš poradiť ako na to?
Deklarovat v nejvyšší úrovni kde se instance používá (pokud se používá všude tak v main) a předávat funkcím parametrem. Pokud je potřeba aby funkce instanci změnila, pak přes pointer, jinak stačí kopie. Pokud by těch instancí bylo hodně, pak je dobré je zabalit do nějaké další struktury, aby každá funkce neměla 10 parametrů.
Neviem to vyriešiť.
V MAIN.H ostali len makrá a globálna struktúra.
Do proced.c som doplnil lokálne premenné
/* vlastne hlavickove subory */
#include "STDDFN.H"
#include "MAIN.H"
#include "PROCED.H"
/* lokalne premenne */
LOCAL IDENT klient[100];
LOCAL FILE *faplus; // subor pre citanie a zapis na koniec
LOCAL char c, *druh;
LOCAL int i, poradie, pomoc, volba;
LOCAL IDENT xident;
/***************************************************
* vytvorenie novej databazy klientov
* doplnanie novych klientov do vytvorenej databazy
* návrat do MENU
***************************************************/
Iné zmeny som nerobil.
Fakt neviem ako to spraviť.
Môžeš to napísať konkrétne?
Nějak takhle například:
void zadavanie_klienta(IDENT* klient, int pocet_klientu)
{
...
}
void main()
{
IDENT klient[100];
...
zadavanie_klienta(klient,100);
}
V main si deklaruješ data (popřípadě v nějaké více vnořené funkci, podle toho jak moc hluboko ty data potřebuješ) a každé funkci která s daty pracuje je předáš parametrem.
Dík, vyskúšam.
Toto mi nepomôže. Mne ide o to, aby štruktúry nemuseli byť globálne.
Pozri do súboru MAIN.H. Globálne premenné som už zlikvidoval, ale globálne
štruktúry sú pre mňa potrebné.
Asi sa na to vykašlem a nechám štruktúry globálne, je to vlastne len jedna
premenná a tú si postrážim.
Pokud strukturami myslíš instance struktur, tak ty globální být nemusí, nejspíš bys kvůli tomu ale musel přepsat docela velkou část kódu. Pokud strukturami myslíš deklarace struktur jako takových, tak ty globální být musí, vytvářet si strukturu uvnitř funkce by asi ve většině případů nemělo moc smysl. Například...
GLOBAL typedef struct {
char datum[11];
float suma;
int index_data;
} DATA;
GLOBAL typedef struct {
char meno[20];
char heslo[20];
char email[25];
char meno_priezvisko[25];
char vs[5]; // variabilný symbol
char datzaciatku[11]; // datum spustenia sluzby
DATA platby[15];
int index_klient;
}IDENT;
...tahle část kódu globální být musí.
Díky, presne to som si myslel, ale nebol som si istý, že deklarácia musí byť globálna.
Vždy nemusí, můžeš vytvořit i strukturu uvnitř funkce:
void funkce()
{
typedef struct
{
int a;
int b;
}struktura;
struktura s = {5,10};
}
Pak tu strukturu ale můžeš použít jenom uvnitř té funkce a žádná jiná funkce nemůže pracovat s jejími instancemi, což většinou nemá moc smysl. Struktury se v drtivé většině případů definují mimo funkce, tedy globálně.
Zobrazeno 12 zpráv z 12.