Overførsel af string til variabel navn

Tags:    c++

<< < 12 > >>
Hej alle udviklere. Jeg har en vector string der ser således ud:

char *names[] = {"alii", "ch01", "c395"};

Hvor hvert element samtidig er en vector med integer værdier:

int alii[] = {16, 24, 1 };
int chol[] = {16, 24, 22 };
int c395[] = {17, 19, 7 };

Det jeg gerne vil, er at lave en løkke der printer navn, samt de tilhørende værdier til navnet. Jeg har prøvet forskelligt f.eks.:

for( i=0; i<3; i++ ) {
strcpy( name, names[ i] );
printf("%s ", name);

for( j=0; j<3; j++) {
printf("%i ", name[j] ); <-- ??
}
}

Men denne printer ascii characterene fra navnet istedet. Udprintet skal være

alii 16 24 1
chol 16 24 22
c395 17 19 7

Jeg kan ikke lure, hvordan man concatenatere dette



Indlæg senest redigeret d. 06.01.2009 23:28 af Bruger #5094
12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Tror at Robert har fat i noget af det rigtige(jeg ville nok lave en klasse istedet for en struct).

Du siger at du vil have 3 antal strenge, og at værd streng skal have et array på 3 integers.

Nu er det bare sådan at en streng ikke kan indeholde 3 tal.

Derfor bliver man nødt til at lave en klasse/struct der kan det.

Man kan ikke have noget data gemt i variable navnet(det ville gøre en del ting besværlige) derfor skal det også gemmes i klassen.

Altså en klasse med en string og 3 tal:
Fold kodeboks ind/udKode 


Så kan du lave et array med MændMedTal:
Fold kodeboks ind/udKode 


For at give objekterne værdier, kan du gøre sådan her:
Fold kodeboks ind/udKode 

osv.

For at udskrive:
Fold kodeboks ind/udKode 










Indlæg senest redigeret d. 07.01.2009 16:36 af Bruger #13669
I C og C++ kan man ikke umiddelbart mappe fra en streng der indeholder navnet på en variabel til variablen, det kan man heller ikke med andre identifiers.

Så der er ikke rigtigt andet at gøre end at udføre operationen i hånden. Hvordan dette gøres afhænger meget af præcist hvad du ønsker at opnå.

PS: Du skal nok lige lære at kende forskel på en vector og et array.



Jeg har mange flere navne med mange flere værdier, så det er ikke noget jeg har lyst til at lave på papir. Synes bare det er mærkeligt, hvis det ikke skulle kunne lade sig gøre. Der må være et trick, man kan bruge. hjælp :)



Nu er det jo ikke noget du skal lave på papir, men som sagt kan man ikke gøre det direkte.

Så spørgsmålet er: Hvad er det du vil?



Så spørgsmålet er: Hvad er det du vil?


Jeg skal bruge værdierne for hver integer vector. Der ligger et bestemt forhold mellem disse værider, som jeg opdaterer i en matrix. Så status er, at jeg skal køre en masse vectorer igennem. Dette tænkte jeg ville være smart ved at lave et array med alle vectorernes navne. Alternativet er som jeg ser det, slave arbejde, ved at skulle skrive regne metoden for hver vector enkeltvis.



Man kunne kaste sig ud i:
Fold kodeboks ind/udKode 

Men jeg tvivler på at det er en god ide...



Måske noget i denne stil:
Fold kodeboks ind/udKode 




Tror at Robert har fat i noget af det rigtige(jeg ville nok lave en klasse istedet for en struct).



Hvad er forskellen på min struct og din klasse ?


Fold kodeboks ind/udKode 



Det er vist ikke dét du vil. Mon ikke du mente:
Fold kodeboks ind/udKode 


Derudover er danske tegn en dårlig idé i koden.



Indlæg senest redigeret d. 07.01.2009 17:04 af Bruger #2695
Jo det er det, gik lige lidt hurtigt, tak.

Der er ikke rigtig nogen forskel på din struct og min klasse. Andet end den kan udvides, med funktioner sådan den f.eks selv kan udskrive data'ne. Også ville jeg gerne have den i min egen post, da jeg syntes det er lidt mere overskueligt(og jeg er mest vant til klasser).



Jo det er det, gik lige lidt hurtigt, tak.

Der er ikke rigtig nogen forskel på din struct og min klasse. Andet end den kan udvides, med funktioner sådan den f.eks selv kan udskrive data'ne. Også ville jeg gerne have den i min egen post, da jeg syntes det er lidt mere overskueligt(og jeg er mest vant til klasser).


Lige netop at den selv kan skrive ud er ret dårligt design.
Klasser i model laget skal kun indeholde data. Præsentationen af dataene klares af view laget (eller præsentations laget...alt efter hvad man kalder det).

http://en.wikipedia.org/wiki/Model-view-controller

Nu var det C kode, som blev præsenteret, så jeg fortsatte i den dur, men en struct i C kan bestemt også udviddes. Også med metoder. I C bruger man bare funktions pointere.

Det er en meget udbredt misforståelse, at C ikke er objekt orienteret, og at C++ ér objekt orienteret.

OO har intet med sproget at gøre. Det måske bedste eksempel på objekt orienteret C kode er glib/gtk bibliotekerne. Det er en ren fornøjelse at læse og burde være krævet læsning for enhver C/C++ udvikler.



<< < 12 > >>
t