Toon posts:

[c]Enum types

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben pas een aantal weken bezig met C en nu zit ik met een klein probleempje/vraagje.

Als ik een enum type aanmaak bijv:
enum fruit{appel,peer,banaan,citroen};

is er nu ook iets waarmee ik dus met behulp van een getal bijv.bij 0 de string appel
bij 1 peer
enz. enz.
terug krijg???
of zou ik dit met een case moeten doen???

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Casten.

Professionele website nodig?


Verwijderd

Topicstarter
Op zondag 07 oktober 2001 20:52 schreef curry684 het volgende:
Casten.
aah..
.
.
.
.
.
dat dacht ik al maar hoe??? geef es een voorbeeldje

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op zondag 07 oktober 2001 20:53 schreef Zoepnek het volgende:
dat dacht ik al maar hoe??? geef es een voorbeeldje
Oeps zie net het woordje string in je vraag staan... nee dat moet je met een switch doen, iets in de richting van:
code:
1
2
3
4
5
6
7
8
9
10
const char* FruitToString(Fruit p_Fruit)
{
switch(p_Fruit)
  {
  case Appel:   return "Appel";
  case Peer:     return "Peer";
  case Banaan:     return "Banaan";
  ...
  }
}

Of gewoon een mooie const array aanmaken met strings in dezelfde volgorde als je enum, en dan daaruit plukken.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:03

.oisyn

Moderator Devschuur®

Demotivational Speaker

nope, kan niet

dan zal je idd met een switch moeten werken:
code:
1
2
3
4
5
6
7
8
9
10
switch (f)
{
case appel:
    return "appel";

case peer:
    return "peer";

...
}

of iets in die richting

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:03

.oisyn

Moderator Devschuur®

Demotivational Speaker

hehe, great minds think alike >:)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 07 oktober 2001 20:57 schreef OiSyN het volgende:
hehe, great minds think alike >:)
is dit niet te benchmarken?

geintje
* D2k was ook een oplossing aan het tikken maar de C++ nerds waren me weer eens voor

Doet iets met Cloud (MS/IBM)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:03

.oisyn

Moderator Devschuur®

Demotivational Speaker

:P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
dank u allen.
maar 1 reply was genoeg geweest ;)
weer verder c-yen :z

Verwijderd

Casten is niet nodig en case statements ook niet, zet gewoon een string-array op en ken de enum labels indexwaarden toe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <stdio.h>

enum fruit { appel= 0, peer= 1, banaan= 2, citroen= 3 };

const char *fruit_naam[]= { "appel", "peer", "banaan", "citroen" };

int main(void) {
  puts(fruit_naam[appel]);
  puts(fruit_naam[peer]);
  puts(fruit_naam[banaan]);
  puts(fruit_naam[citroen]);
  return EXIT_SUCCESS;
}

<edit>Als je je code door een compiler jaagt ben je telkens te laat tegenwoordig :)</edit>

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op zondag 07 oktober 2001 21:06 schreef mietje het volgende:
Casten is niet nodig
Had vraag verkeerd gelezen en al gecorrigeerd.
en case statements ook niet,
Wel een mooie oplossing die net zo snel is als een array omdat het ook gewoon inline const data is.
zet gewoon een string-array op en ken de enum labels indexwaarden toe:
Had ik ook al gezegd maar bedankt voor het mooie voorbeeld erbij ;)

(more power to the C++ nerds!!! :7 )

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op zondag 07 oktober 2001 21:06 schreef mietje het volgende:
<edit>Als je je code door een compiler jaagt ben je telkens te laat tegenwoordig :)</edit>
Compilen is voor pussies, echte bikkels doen dat pas na het schrijven van 10000 regels code onder het motto:

If it compiles, ship it

:P

Professionele website nodig?


Verwijderd

Op zondag 07 oktober 2001 21:22 schreef curry684 het volgende:
Had ik ook al gezegd maar bedankt voor het mooie voorbeeld erbij ;)
Tja, ik denk dat ik tegelijk begon met antwoorden, maar eerst m'n editor en compiler startte en niet post reply drukte ;) Ik zag wel dat er ondertussen antwoorden waren, maar had over dat laatste regeltje in je post heengelezen.
(more power to the C++ nerds!!! :7 )
Zekers, alleen jammer dat de topics meestal liflafjes zijn, niet veel echte uitdagingen vrees ik ;( (Vandaar dat de nerds ook meestal offtopic gaan, denk ik ;))

Verwijderd

Op zondag 07 oktober 2001 21:31 schreef curry684 het volgende:
Compilen is voor pussies, echte bikkels doen dat pas na het schrijven van 10000 regels code onder het motto:

If it compiles, ship it
Volledig mee eens, maar dit is dan ook geen productiecode, maar voor GoT ;) Ik moet hier wel zeker weten dat casten niet nodig is voor ik begin met blaten...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op zondag 07 oktober 2001 21:34 schreef mietje het volgende:
Zekers, alleen jammer dat de topics meestal liflafjes zijn, niet veel echte uitdagingen vrees ik ;( (Vandaar dat de nerds ook meestal offtopic gaan, denk ik ;))
Sluit je aan bij het front! :Y)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:03

.oisyn

Moderator Devschuur®

Demotivational Speaker

idd, meer kracht aan het front!!!

(zeker nu de VS aan het aanvallen is ;))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Marv
  • Registratie: Oktober 2000
  • Laatst online: 11-06 06:52
offtopic:
[quote]
Signature:

Proffesional Marv stalker, en parttime fruitcake.

[/quote]

Dus jij bent die gast met die lange leren jas, blauwe zonnebril, groen haar en vier armen.... d8 al... wat kom ik die gast vaak tegen :P :P :P

"Everything I've ever done or said is the complete opposite of what I've wanted" -- George


  • Sponz
  • Registratie: Juni 2001
  • Niet online

Sponz

nul nest parfait saif moi

Het kan ook met de preprocessor geregeld worden; dit heb ik overgens niet zelf verzonnen :)

Maak een file om te includen zoals dit, noem het enum1.txt:
code:
1
2
3
4
   ITEM (APPEL)
  ,ITEM (PEER)
  ,ITEM (BANAAN)
  ,ITEM (CITROEN)

En dan is dit de source:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>

typedef enum
{
#define ITEM(a) eSTATE_##a
#include "enum1.txt"
#undef ITEM
} FRUITT;

char * sfruit[]=
{
#define ITEM(a) #a
#include "enum1.txt"
#undef ITEM
};



int main(void)
{ int fruitID = 0;

  for (fruitID=eSTATE_APPEL; fruitID <= eSTATE_CITROEN; fruitID++)    
     printf ("Fruit nr %d = %s\n", fruitID, sfruit[fruitID]);

    return 0;  
}

En zo heb je enums als strings. Het moeten wel geldige identifiers zijn, dus zonder spaties ed. erin.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:03

.oisyn

Moderator Devschuur®

Demotivational Speaker

creatief met de preprocessor :)

maar het lijkt me toch geen mooie oplossing...

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

curry684: Sluit je aan bij het front!

Your wish is my command :+

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:03

.oisyn

Moderator Devschuur®

Demotivational Speaker

aah mooi, hoe meer zielen, hoe meer vreugd

ik moet het overigens nog wel effe met curry over het ontgroeningsproces hebben :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 08 oktober 2001 22:32 schreef OiSyN het volgende:
aah mooi, hoe meer zielen, hoe meer vreugd

ik moet het overigens nog wel effe met curry over het ontgroeningsproces hebben :)
Nieuwe leden dienen een volledig functionele aantrekkelijke vervanger voor Windows te ontwikkelen ter illustratie van hun vakmanschap. 8-)

Professionele website nodig?

Pagina: 1