|
| hjælp ang. Struct? Fra : Henrik Rathje |
Dato : 06-10-02 19:50 |
|
Hej
Jeg er ved at lave programmerer en lille persondatabase, hvor den samme data
helst ikke skal gå igen.
Derfor har jeg defineret en ny type "BY" som includerer BYNAVN og
POSTNUMMER. hvor de
forskellige personer i databasen så skal pege på den by,postnr de bor i. Men
hvordan gøres dette?
I PERSON[1] har jeg oprettet KURT HANSEN på SKOLEGADE 43. Så vidt så godt.
men hvordan linker
jeg ham samme med at han bor i f.eks 7100 Vejle som ligger i PBy[3]?
Er det helt forkert eller skal jeg bruge noget andet i stedet for stuct?
#include "stdafx.h"
struct By{
char *Bynavn[15]; // Bynavn og postnummer
int postnr;
} PBy[5];
struct PersonT{
char *Pfornavn[15];
char *Pefternavn[15]; //Persondata
char *gade[15];
int nummer;
By Bynavnogpostnummer; // datatypen By <------- her
ligger noget af fejlen.. tror jeg !
} Person[40];
int main(int argc, char* argv[])
{
*PBy[0].Bynavn = "Kolding"; //diverse Bynavne og postnumre
PBy[0].postnr = 6000;
*PBy[1].Bynavn = "Sønderborg";
PBy[1].postnr = 6400;
*PBy[2].Bynavn = "Århus";
PBy[2].postnr = 8210;
*PBy[3].Bynavn = "Vejle";
PBy[3].postnr = 7100;
*PBy[4].Bynavn = "Esbjerg";
PBy[4].postnr = 6705;
*PBy[5].Bynavn = "Odense";
PBy[5].postnr = 5260;
Person[1].Pfornavn[1] ="Kurt";
Person[1].Pefternavn[1] ="Hansen";
Person[1].gade[1] ="Skolegade";
Person[1].nummer = 43;
printf("%s %s bor %s %d i \n", Person[1].Pfornavn[1],
Person[1].Pefternavn[1], Person[1].gade[1], Person[1].nummer);
return 0;
}
Mvh
Henrik
| |
Byrial Jensen (06-10-2002)
| Kommentar Fra : Byrial Jensen |
Dato : 06-10-02 21:33 |
|
Henrik Rathje <Hrathje@paradis.dk> skrev:
> Hej
> Jeg er ved at lave programmerer en lille persondatabase, hvor den samme data
> helst ikke skal gå igen.
> Derfor har jeg defineret en ny type "BY" som includerer BYNAVN og
> POSTNUMMER. hvor de
> forskellige personer i databasen så skal pege på den by,postnr de bor i. Men
> hvordan gøres dette?
>
> I PERSON[1] har jeg oprettet KURT HANSEN på SKOLEGADE 43. Så vidt så godt.
> men hvordan linker
> jeg ham samme med at han bor i f.eks 7100 Vejle som ligger i PBy[3]?
>
> Er det helt forkert eller skal jeg bruge noget andet i stedet for stuct?
>
> #include "stdafx.h"
>
> struct By{
> char *Bynavn[15]; // Bynavn og postnummer
> int postnr;
> } PBy[5];
Bynavn er et array af 15 pointere til char. Det giver ikke mening.
Prøv med f.eks.
struct By {
const char *Bynavn; // Bynavn og postnummer
int postnr;
} PBy[5];
> struct PersonT{
> char *Pfornavn[15];
> char *Pefternavn[15]; //Persondata
> char *gade[15];
> int nummer;
> By Bynavnogpostnummer; // datatypen By <------- her
> ligger noget af fejlen.. tror jeg !
> } Person[40];
Hver person har igen 15 pointere til fornavne, efternavne og gader.
Det giver ikke mening.
Angående Bynavnogpostnummer så kunne du lave en pointer til en
struct By:
struct PersonT {
const char *Pfornavn;
const char *Pefternavn; //Persondata
const char *gade;
int nummer;
const struct By *Bynavnogpostnummer; // datatypen struct By
} Person[40];
> int main(int argc, char* argv[])
> {
> *PBy[0].Bynavn = "Kolding"; //diverse Bynavne og postnumre
> PBy[0].postnr = 6000;
PBy[0].Bynavn = "Kolding"; //diverse Bynavne og postnumre
PBy[0].postnr = 6000;
> *PBy[1].Bynavn = "Sønderborg";
> PBy[1].postnr = 6400;
PBy[1].Bynavn = "Sønderborg";
PBy[1].postnr = 6400;
> *PBy[2].Bynavn = "Århus";
> PBy[2].postnr = 8210;
PBy[2].Bynavn = "Århus";
PBy[2].postnr = 8210;
> *PBy[3].Bynavn = "Vejle";
> PBy[3].postnr = 7100;
PBy[3].Bynavn = "Vejle";
PBy[3].postnr = 7100;
> *PBy[4].Bynavn = "Esbjerg";
> PBy[4].postnr = 6705;
PBy[4].Bynavn = "Esbjerg";
PBy[4].postnr = 6705;
> *PBy[5].Bynavn = "Odense";
> PBy[5].postnr = 5260;
PBy[5].Bynavn = "Odense";
PBy[5].postnr = 5260;
> Person[1].Pfornavn[1] ="Kurt";
> Person[1].Pefternavn[1] ="Hansen";
> Person[1].gade[1] ="Skolegade";
> Person[1].nummer = 43;
Person[1].Pfornavn = "Kurt";
Person[1].Pefternavn ="Hansen";
Person[1].gade = "Skolegade";
Person[1].nummer = 43;
Person[1].Bynavnogpostnummer = &PBy[3];
> printf("%s %s bor %s %d i \n", Person[1].Pfornavn[1],
> Person[1].Pefternavn[1], Person[1].gade[1], Person[1].nummer);
printf("%s %s bor %s %d i %d %s\n",
Person[1].Pfornavn, Person[1].Pefternavn,
Person[1].gade, Person[1].nummer,
Person[1].Bynavnogpostnummer->postnr,
Person[1].Bynavnogpostnummer->Bynavn);
> return 0;
> }
Det kan dog blive svært at holde styr på hvilke elementer i PBy som
indeholder hvilke postdidtrikter, så jeg ville nok i stedet gemme
selve postnummeret i struct PersonT, og så slå det tilhørende bynavn
op når jeg skulle bruge det. F.eks. ved at have en postnummertabel
med en post for alle tal med op til 4 cifre og indeksere den med
postnummeret.
| |
Henrik Rathje (08-10-2002)
| Kommentar Fra : Henrik Rathje |
Dato : 08-10-02 15:56 |
|
Tak for hjælpen!!
| |
|
|