Kezdőoldal » Számítástechnika » Programozás » C-ben van egy csomó void...

C-ben van egy csomó void funkció amelyeknek azonos a neve és a végén egy számmal különböztetem meg őket. Hogyan tudnám őket a szám szeirnt hívni?

Figyelt kérdés
egy arudino 128x64-es kijelzőjére szólnak a voidok, és egy potméterrel lehet állítani hogy melyik void érvényesüljön. bash-ben könnyű keverni a számokat és a betűket, tudom hogy C-ben ez nem így megy, value funkcióval és funckion overloadinggal sem sikerült elérnem semmit, ezért tettem fel a kérdést.

2019. jan. 2. 13:42
 1/4 A kérdező kommentje:

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>


#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64

#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);


int pot=0;

int Azero;

int p0 = A0;

int p1 = A1;


void setup() {

Wire.begin();

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Serial.begin(9600);

}


//ilyen egy void

void display1()

{

display.clearDisplay();

display.setTextColor(WHITE);

display.setTextSize(1);

display.setCursor(0,0);

display.println("2.1UJSZ OSZT.");

display.println("postmaturus: 42+");

display.println("L:50-57cm,fkf:33-36cm");

display.println("3340g.koros:3-97+pcnt");

display.display();

}


void loop()

{

p0=analogRead(A1);

p0=p0/10;


if (p0<=1)

{

display1();

}


if (p0<=2)

{

display2();

}


//ez nagyon nem szép megoldás

// display + p0 +; vagy valami hasonló lenne a cél


delay(200);

}

2019. jan. 2. 13:45
 2/4 anonim ***** válasza:

Hozz létre egy szimpla display függvényt, aminek van egy egész értékű paramétere:

void display1(int param)


a függvény törzsén belül pedig a paramétertől függően egy feltétellel (if/else vagy switch/case) döntsd el, mit művelsz/írsz ki:

if (param <= 1) {

// Ide kerül, hogy mit csinálunk akkor, ha a paraméter 1 vagy annál kisebb

} else if (param <= 2) { {

// Ide kerül, hogy mit csinálunk akkor, ha a paraméter 2 vagy annál kisebb

}


majd a loop függvényen belül meghívod a display függvényt:

display(p0);

2019. jan. 2. 13:58
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

Mivel fordítás után már nem marad meg a név, így nem tudod név(+szám) alapján meghívni.


De pl berakhatod a függvényeket egy tömbbe:

int main()

{

    static void (*displays[])() = {display1, display2};


    int p0 = 0;


    (*displays[p0])();

}

2019. jan. 2. 15:23
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:
mármint ezzel a módszerrel p0-1-gyel kell indexelni a tömböt, mert 0-tól kezdődik
2019. jan. 2. 17:29
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!