Avatar billede farmanden Nybegynder
06. februar 2004 - 11:09 Der er 9 kommentarer og
3 løsninger

samling af tog og rute i samme køreplan

Jeg har følgende kode (bare rolig - den er ikke særlig lang...)

// segment er et stykke af en jernbanestrækning
struct segment{char* navn; int laengde;};
struct segment s[]={"s1",100,"s2",150};
struct segment *rute1[]={&s[0],&s[1]};

struct tog{char* navn; int hastighed;};
struct tog t[]={"tog1",100,"tog2",80};

struct koereplan{struct tog Toget;struct segment rute[]};
struct koereplan koereplan1[]={&t[0],&*rute1};

compileren brokker sig over at elementerne i køreplanen ikke er "forenelig med målet". Er det ikke måden at samle tog og rute på? - og hvorfor kommer den fejlmeddelelse?
Avatar billede mikoalngelo Nybegynder
06. februar 2004 - 11:39 #1
Jeg kender INTET til C/C++, men jeg kender en del til kode-syntax. Mangler der ikke nogle {'er?

// segment er et stykke af en jernbanestrækning
struct segment{char* navn; int laengde;};
struct segment {s[]={"s1",100,"s2",150}; //Har indsat { her
struct segment {*rute1[]={&s[0],&s[1]}; //Har indsat { her

struct tog{char* navn; int hastighed;};
struct tog t[]={"tog1",100,"tog2",80};

struct koereplan{struct tog Toget;struct segment rute[]};
struct koereplan {koereplan1[]={&t[0],&*rute1}; //Har indsat { her

Jeg er ABSOLUT ikke sikker, men det er et gæt.
Avatar billede farmanden Nybegynder
06. februar 2004 - 11:43 #2
struct koereplan er typen (tilsammen) i c - koereplan1 er navnet og [] viser at det er et array(bestående  af "objekter" af typen "struct koereplan"...)
så dit forslag virker ikke helt... :-(
- ellers godt forsøg ;-)
Avatar billede pchris Nybegynder
06. februar 2004 - 11:59 #3
Du kan hjælpe dig selv ved i højere grad at anvende navngivne typer.

Men umiddelbart tror jeg du skal lave struct koereplan om til
struct koereplan{struct tog Toget;struct segment *rute[]};

Ellers vil jeg gerne have den originale fejlmeddelelse.
Avatar billede farmanden Nybegynder
06. februar 2004 - 12:08 #4
- har prøvet ændringen - giver ingen forskel...
fejlmeddelelsen er:
1: warning: klargøring fra en henvisningstype der ikke er forenelig med målets
2: warning: klargøring opretter et heltal ud fra en henvisningstabel uden en typeomtvingning
(begge meddelelser henviser til sidste linie...)
Avatar billede pchris Nybegynder
06. februar 2004 - 12:35 #5
struct koereplan er i hvert fald et problem.

Prøv:
struct koereplan{struct tog *Toget;struct segment rute[]};

Jeg prøver lige at compilere med en compiler jeg kan forstå...
Avatar billede pchris Nybegynder
06. februar 2004 - 12:45 #6
Nå - det her kan compilere hos mig:

struct segment{char* navn; int laengde;};
struct segment s[]={{"s1",100},{"s2",150}};
struct segment *rute1[]={&s[0],&s[1]};

struct tog{char* navn; int hastighed;};
struct tog t[]={{"tog1",100},{"tog2",80}};

struct koereplan{struct tog *Toget; struct segment *r;};
struct koereplan koereplan1[]={&t[0],rute1[0]};

PS: Hvad er det for en underlig compiler du bruger? Den er noget sprogforvirret...
Avatar billede farmanden Nybegynder
06. februar 2004 - 12:54 #7
jeg bruger gcc - nu brokker den sig i stedet over at "startværdien ikke er en konstant""(i nærheden af klargøringen af 'koereplan1[0].rute').
Derudover skal jeg bruge en array, hvor du har skrevet "*r" - så det bliver nødt til at være *r[], eller noget lignende...
Avatar billede pchris Nybegynder
06. februar 2004 - 13:14 #8
Jeg er ikke sikker på at du val have et array. Jeg tror at du vil have en "rute" - det er vel derfor du har rute1.
Følgende kompilerer formodentlig også med gcc, men strukturen er lidt anderledes, men jeg tror at det kan bruges til det du ønsker.

struct segment{char* navn; int laengde;};
struct segment s[]={{"s1",100},{"s2",150}};
struct segment *rute1[]={&s[0],&s[1]};

struct tog{char* navn; int hastighed;};
struct tog t[]={{"tog1",100},{"tog2",80}};

struct koereplan{struct tog *Toget; struct segment **r;};
struct koereplan koereplan1[]={&t[0], &rute1[0]};

I øvrigt tror jeg at du har brug at afslutte din rute1 på en eller anden måde.
Avatar billede farmanden Nybegynder
06. februar 2004 - 13:24 #9
hmm ja nu kører den...
Hvis man så skal hente f.eks navn fra toget i koereplan1[0] - skal man så gøre sådan?
(koereplan[0]).(*toget).navn??
Avatar billede pchris Nybegynder
06. februar 2004 - 13:32 #10
koereplan1[0].Toget->navn
Avatar billede farmanden Nybegynder
06. februar 2004 - 14:16 #11
Virker!! - sidste lille spørgsmål før du får dine (velfortjente )point... ;-)
Jeg tror at du har ret mht at afslutte rute1
Jeg har prøvet på denne måde:

struct rute{struct segment *et, struct segment *to};
struct rute rute1[]=
{&s[0],&s[1],
&s[2],&s[3]
};

men det vile den ikke æde - er det helt forkert? hvordan skal jeg ændre den i stedet?
Avatar billede pchris Nybegynder
08. februar 2004 - 15:25 #12
Jeg tror sådan set at din gamle rute er god nok, men på et tidspunkt får du vel brug for at bruge den i dit program og så ved du vel ikke hvor mange segmenter der er i din rute. Med mindre alle ruter har samme længde? Derfor tænkte jeg på noget i retning af:
struct segment *rute1[]={&s[0],&s[1],NULL};
Det vil nok hjælpe dig senere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester