Kezdőoldal » Számítástechnika » Programozás » Kombinált felsorolás C-ben?

Kombinált felsorolás C-ben?

Figyelt kérdés

Sziasztok!

Szóval az lenne a problémám, hogy egy struktúrát kell létrehozni,mely nevet, árat és típust tárol, ez eddig meg is van. De hogy tudnék 1 névhez több típust is csatolni, azaz egy adott eleme a strúktúrának hogy lehet több típusú?

Van erre valami megoldás?



2018. jan. 4. 18:33
 1/9 anonim ***** válasza:
64%

Nincs. Egy adott nevü változóhoz egy típus tartozhat.


Pontosan mihez kellene több típus? A név *char, az ár int, a típus pedig enum (vagy int).

2018. jan. 4. 18:46
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

Hát például, hogy meg lennének adva előre a típusok pl. akció,vígjáték,kalandfilm,dráma

És 1 filmhez több típus is tartozna

Enum esetén ha jól tudom 1 névhez csak 1 típus tartozhat, legalábbis ezt olvastam róla.

2018. jan. 4. 18:55
 3/9 anonim ***** válasza:
Akkor lehet a típus is tömb.
2018. jan. 4. 18:59
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:
A feladat szerint felsorolásnak kellene lennie a típusnak szóval nem tudom.
2018. jan. 4. 19:12
 5/9 anonim ***** válasza:
Nehéz úgy beszélni egy feladatról, amit csak az egyikünk ismer. Nem akarod idemásolni?:)
2018. jan. 4. 19:19
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

Ne haragudj, máris bemásolom.


Hozzon létre egy adatszerkezetet,mely filmek jellemzőit tárolja:név,ár,típus. A film típusa felsorolás, egy film lehet több típusú(kombinált). Töltse fel előre 5 film adatát majd kérje be, milyen típusú filmek érdeklik(több is lehet) és írassuk ki ezek nevét és árát.


Ez lenne az.

2018. jan. 4. 19:27
 7/9 anonim ***** válasza:
100%
Ha tanultatok a bitmüveletekröl, akkor lehet erre gondolt a költö: [link]
2018. jan. 4. 19:34
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:
Ja, ez tipikusan flag enum.
2018. jan. 4. 19:58
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
100%

Enum kell ide.


Rövid enum tutorial:

A lényege az, hogy bizonyos számokhoz azonosítót rendelsz, például:

enum allat { kutya = 0, macska = 1 };

Ez azért lesz jó, mert beszédes nevet adsz egy számnak, ami által a kódod könnyebben olvasható lesz. Működése:

enum allat valami_allat = kutya;

Mint látható, a változó típusa "enum allat", a változó neve "valami_allat", és értéke az "allat" enumból jöhet, jelen esetben "kutya".


Vagy akár el is hagyhatod a számot az azonosító után:

enum allat { kutya, macska }

Ekkor a kutya 0 lesz, a macska pedig 1. Ezt lehet bonyolítani:

enum allat { kutya, macska = 3, elefant }

Ekkor a kutya 0, macska 3, az elefant 4 lesz.


A trükk az lesz, hogy az enum értékeit lehet ún. flag-ekre is használni. Ehhez az kell, hogy az enum-ban lévő azonosítók értékei 1-től kezdve kettő hatványai legyenek:

enum file_attribute { readable = 1, writable = 2, archivable = 4, hidden = 8, locked = 16 }


A logikai VAGY ( A | B ) művelet így néz ki:

- ha A=0 és B=0, akkor az eredmény 0

- ha A=0 és B=1, akkor az eredmény 1

- ha A=1 és B=0, akkor az eredmény 1

- ha A=1 és B=1, akkor az eredmény 1


Ha azt akarom leírni, hogy van egy olvasható és írható fájlom, ami nem archiválható, nem rejtett és nem zárolt, az úgy néz ki, hogy:

enum file_attribute currentfile = readable | writable;

Ebből az a szám lesz, hogy:

0000 0011, azaz 3


A logikai ÉS ( A & B ) művelet pedig így néz ki:

- ha A=0 és B=0, akkor az eredmény 0

- ha A=0 és B=1, akkor az eredmény 0

- ha A=1 és B=0, akkor az eredmény 0

- ha A=1 és B=1, akkor az eredmény 1


Azaz, ha arra vagyok kíváncsi, hogy a currentfile írható-e, akkor a logikai ÉS műveletét kell használnom.

if ((currentfile & writable) == writable) {

.. //A fájl írható

}

Mivel a writable értéke 0000 0010, és a currentfile 0000 0011, ezért

0000 0011

0000 0010

---

0000 0010 az eredmény, azaz a writable értéke.

2018. jan. 4. 21:38
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!