/ 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
Arrays
Fra : Rander


Dato : 03-11-01 01:04

Jeg har et lille problem med et array...

Min kode er følgende:

struct posit {int h, v;};
posit positions[7];

Det giver et array, ingen problemer der! Men hvordan får jeg lov at fylde
mit array uden at tage hver del for sig? Jeg forestiller mig noget i stil
med
positions=((1,5), (1,4), (1,3), (1,2), (1,1), (2,2), (3,3));

men det vil compileren ikke være med til!

Det er i Borland C++ V3.0 (skoleopgave, så en nyere compiler er ikke en
mulighed)...

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Når man er forelsket, kan man ikke drikke mælk i fem dage. (Simon, 8 år)


 
 
Mogens Hansen (03-11-2001)
Kommentar
Fra : Mogens Hansen


Dato : 03-11-01 07:18


"Rander" <ldNOSPAM@rander.dk> wrote in message
news:kacvr9.imj.ln@rander.dk...

> Det giver et array, ingen problemer der! Men hvordan får jeg lov at fylde
> mit array uden at tage hver del for sig? Jeg forestiller mig noget i stil
> med
> positions=((1,5), (1,4), (1,3), (1,2), (1,1), (2,2), (3,3));
>
> men det vil compileren ikke være med til!
>

prøv (hvis vi snakker initialisering)

struct posit {int h, v;};
posit positions[7] = { {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {2,2}, {3,3}};

eller bedre

struct posit {int h, v;};
posit positions[] = { {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {2,2}, {3,3}};


så slipper du for magiske konstanter.
Hvis du senere skal vide hvor mange elementer der er i arrayet kan det får
ved

sizeof(positions)/sizeof(positions[0])

> Det er i Borland C++ V3.0 (skoleopgave, så en nyere compiler er ikke en
> mulighed)...
>

Det skulle ikke være noget problem.

Venlig hilsen

Mogens Hansen





Rander (04-11-2001)
Kommentar
Fra : Rander


Dato : 04-11-01 05:03

Sat, 3 Nov 2001 07:17:53 +0100 brugte Mogens Hansen 42 linier på at
fortælle dette til dk.edb.programmering.c:

>> positions=((1,5), (1,4), (1,3), (1,2), (1,1), (2,2), (3,3));
>> men det vil compileren ikke være med til!
>prøv (hvis vi snakker initialisering)
>struct posit {int h, v;};
>posit positions[7] = { {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {2,2}, {3,3}};
>eller bedre
>struct posit {int h, v;};
>posit positions[] = { {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {2,2}, {3,3}};

Det synes jeg ellers at jeg har prøvet uden held - men åbenbart ikke godt
nok! Tak!

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Man finder en kæreste ved at se smart ud. (Pelle, 7 år)


Byrial Jensen (04-11-2001)
Kommentar
Fra : Byrial Jensen


Dato : 04-11-01 13:37

Mogens Hansen <mogens_h@dk-online.dk> skrev:
> prøv (hvis vi snakker initialisering)
>
> struct posit {int h, v;};
> posit positions[7] = { {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {2,2}, {3,3}};
>
> eller bedre
>
> struct posit {int h, v;};
> posit positions[] = { {1,5}, {1,4}, {1,3}, {1,2}, {1,1}, {2,2}, {3,3}};

Man kan i C99 også skrive eksplicit hvilke elementer som
initialiseres, og gøre det i vilkårlig rækkefølge. F.eks. er
det følgende korrekt C99-kode:

struct posit
{
int h, v;
} positions[] =
{
[0] = { 1, 5, },
[1] = { 1, 4, },
[2] = { .h = 1, .v = 3, },
[3] = { .v = 2, .h = 1, },
{ 1, 1, }, /* positions[4] */
[6] = { 3, 3, }, /* positions[6] */
[5] = { 2, 2, }, /* positions[5] */
};

Er sådanne initialiseringer også tilladte i C++?

Mogens Hansen (04-11-2001)
Kommentar
Fra : Mogens Hansen


Dato : 04-11-01 13:58


"Byrial Jensen" <bjensen@nospam.dk> wrote in message
news:slrn9uaam1.7r9.bjensen@ask.ask...
>
> struct posit
> {
> int h, v;
> } positions[] =
> {
> [0] = { 1, 5, },
> [1] = { 1, 4, },
> [2] = { .h = 1, .v = 3, },
> [3] = { .v = 2, .h = 1, },
> { 1, 1, }, /* positions[4] */
> [6] = { 3, 3, }, /* positions[6] */
> [5] = { 2, 2, }, /* positions[5] */
> };
>
> Er sådanne initialiseringer også tilladte i C++?

Nej.
Og hvad der sikkert er værre, så kan man heller ikke initialisere en
std::vector<posit> med forskellige værdier på forskellige pladser.

Venlig hilsen

Mogens Hansen



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

Månedens bedste
Årets bedste
Sidste års bedste