/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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!!



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste