valtozok adatainak ciklusonkenti mentese
valtozok adatainak ciklusonkenti mentese
Sziasztok,
szeretnem egy valtozo adatait indexaltan elmenteni minden loop futas soran, kesobbi muveletekhez.
Pelda:
int elsofutas;
int masodikfutas;
int harmadikfutas;
int negyedikfutas;
int x;
for (x=0;x<4;x++) // ekkor 4-szer fut le a blokk
{
int elsofutas = x(1) ; // a blokk elso lefutasakor
int masodikfutas = x(2) ; //a blokk masodik lefutasakor
int harmadikfutas = x(3) ; // a blokk harmadik lefutasakor
int negyedikfutass =x(4) ; // a blokk negyedik lefutasakor
float average = (x(1)+x(2)+x(3)+x(4))/4;
}
if (average <1)
{...
Ket problemaba utkoztem:
1. hogyan tudok hivatkozni a lefutasok szamara, azaz hogyan tudom az ertekeket rogziteni elsofutas...negyedikfutas valtozokra?
2. az average valtozot (es erteket) hogyan tudom athozni a for blokkon kivulre? a fenti peldaban az if feltetelnel szerintem hibat irna az arduino mivel az average nincsen definialva.
Koszonom elore is a segitseget.
szeretnem egy valtozo adatait indexaltan elmenteni minden loop futas soran, kesobbi muveletekhez.
Pelda:
int elsofutas;
int masodikfutas;
int harmadikfutas;
int negyedikfutas;
int x;
for (x=0;x<4;x++) // ekkor 4-szer fut le a blokk
{
int elsofutas = x(1) ; // a blokk elso lefutasakor
int masodikfutas = x(2) ; //a blokk masodik lefutasakor
int harmadikfutas = x(3) ; // a blokk harmadik lefutasakor
int negyedikfutass =x(4) ; // a blokk negyedik lefutasakor
float average = (x(1)+x(2)+x(3)+x(4))/4;
}
if (average <1)
{...
Ket problemaba utkoztem:
1. hogyan tudok hivatkozni a lefutasok szamara, azaz hogyan tudom az ertekeket rogziteni elsofutas...negyedikfutas valtozokra?
2. az average valtozot (es erteket) hogyan tudom athozni a for blokkon kivulre? a fenti peldaban az if feltetelnel szerintem hibat irna az arduino mivel az average nincsen definialva.
Koszonom elore is a segitseget.
Re: valtozok adatainak ciklusonkenti mentese
használj mondjuk tömböket
https://www.arduino.cc/en/Reference/Array
nézd meg a változók hatáskörei részt.
https://hu.wikibooks.org/wiki/C_program ... toz%C3%B3k
https://www.arduino.cc/en/Reference/Array
nézd meg a változók hatáskörei részt.
https://hu.wikibooks.org/wiki/C_program ... toz%C3%B3k
Re: valtozok adatainak ciklusonkenti mentese
A valtozok hataskorei resz azt irja hogy nem lehet kivinni a valtozot a kapcsos zarojelen kivulre, de lehet persze tobb keretet megadni.
Re: valtozok adatainak ciklusonkenti mentese
A tomboket is megneztem: nem kiiratni szeretnem a valtozo kulonbozo ertekeit, hanem kulonbozo neven eltarolni..
Re: valtozok adatainak ciklusonkenti mentese
Globális változó
tömbök helyett akkor használhatod ezt
https://www.arduino.cc/en/Reference/SwitchCase
for változóját figyeled és annak értéke határozza meg melyik változót töltöd fel.
Vagy mégiscsak tömböt használsz csak valahogy így
Kód: Egész kijelölése
int i = 5; /* ez globális változó, a programban akárhol elérhető */
int j = 15; /* ez is */
/*
Ez egy függvény.
Az összes benne definiált változó lokális, csak a függvényben érhető el.
*/
int main(void)
{
int i = 6; /* 'i' most 6 */
printf("%d\n", i); /* kiírja a lokális 6-ot a globális i változó 5-ös értéke helyett */
printf("%d\n", j); /* kiírja a 15-öt, a globális változó értékét */
return 0;
}
tömbök helyett akkor használhatod ezt
https://www.arduino.cc/en/Reference/SwitchCase
for változóját figyeled és annak értéke határozza meg melyik változót töltöd fel.
Vagy mégiscsak tömböt használsz csak valahogy így
Kód: Egész kijelölése
#define elso 0
#define masodik 1
#define harmadik 2
int eredmeny;
int futasok[] = {1,2,3};
eredmeny = futasok[elso] + futasok[masodik] + futasok[harmadik];
Re: valtozok adatainak ciklusonkenti mentese
A nagy kérdés, hogy hány ciklus értékét akarod eltárolni? Mit akarsz a tárolt értékkel tenni?
Ha pár tízet, jó a tömb.
Tömb[ciklusváltozo] val hivatkozol rá, írhatod, olvashatod. Bármit tudsz tenni vele.
Ha pár száz értéket figyelnél eredménycentrikus adatgyűjtést csináljál, pl hosszú méréssorozat átlagértékéhez az összeget és a ciklusváltozót osztod egymással, és csak ezt a két értéket viszed át a következő ciklusba
Ha nagyon sok mérésből kell eredményt generálni, pl egy komplett fűtési szezon hőadatai idővel, arra ott az sd kártya és a fájlműveletek
Speciális eset, mikor a mérés folyamatos, de nekünk csak az utolsó x db mérésre van szükségünk: ebben az esetben az x mértéke szerint választunk a fenti metódusok szerint (tömbben tároljuk az utolsó x mérést, kivonjuk az x-el előbbi mérést az összegből, és osztjuk x-el
Leprogramozol egy x elemű fifo tárolót és azzal dolgozol)
Ha pár tízet, jó a tömb.
Tömb[ciklusváltozo] val hivatkozol rá, írhatod, olvashatod. Bármit tudsz tenni vele.
Ha pár száz értéket figyelnél eredménycentrikus adatgyűjtést csináljál, pl hosszú méréssorozat átlagértékéhez az összeget és a ciklusváltozót osztod egymással, és csak ezt a két értéket viszed át a következő ciklusba
Ha nagyon sok mérésből kell eredményt generálni, pl egy komplett fűtési szezon hőadatai idővel, arra ott az sd kártya és a fájlműveletek
Speciális eset, mikor a mérés folyamatos, de nekünk csak az utolsó x db mérésre van szükségünk: ebben az esetben az x mértéke szerint választunk a fenti metódusok szerint (tömbben tároljuk az utolsó x mérést, kivonjuk az x-el előbbi mérést az összegből, és osztjuk x-el
Leprogramozol egy x elemű fifo tárolót és azzal dolgozol)
Re: valtozok adatainak ciklusonkenti mentese
Szia,
Koszonom a valaszt. Sztem a print utasitassal lehettem felreertheto. Nekem az ertek monitoron megjelenites nem fontos. Az a lenyeg, hogy pl. fusson le haromszor es ennek eredmenyekenttaroljon el harom kulon neven harom valtozoerteket, amit a harom futas soran detektalt es rendelt hozza a harom (elsofut, masodikfut, harmadikfut) valtozokhoz.
Udv.
Koszonom a valaszt. Sztem a print utasitassal lehettem felreertheto. Nekem az ertek monitoron megjelenites nem fontos. Az a lenyeg, hogy pl. fusson le haromszor es ennek eredmenyekenttaroljon el harom kulon neven harom valtozoerteket, amit a harom futas soran detektalt es rendelt hozza a harom (elsofut, masodikfut, harmadikfut) valtozokhoz.
Udv.
Re: valtozok adatainak ciklusonkenti mentese
Ekkor elég a 3 elemű tömb. Azonban vigyázz arra, ha a 4. futás létrejön és a tömb[4] helyre mentesz adatot, akkor a nemdefiniált helyen levő egyéb változódat írja felül!
http://www.tavir.hu - a gazda
Re: valtozok adatainak ciklusonkenti mentese
Fel tudnatok tenni egy rovid peldat egy haromelemu tombbel? Nem talalok sehol sem gyakorlati peldat ra, mindenutt csak a monitorra iratjak a valtozokat a tenyleges eltarolas helyett.
Udv.
Udv.
Re: valtozok adatainak ciklusonkenti mentese
Ellemezük a példádat és a benne levő hibákat!
Kód: Egész kijelölése
//Példa:
//Cikluson kívüli változók
int elsofutas;
int masodikfutas;
int harmadikfutas;
int negyedikfutas;
//int tombx[4]; // tömböt []-jelekkel deklarálunk, és megadjuk a tömb méretét
// vagy ha közvetlen fel akarjuk tölteni, értékel:
int tombx[4]{1,2,3,4}; // tömböt []-jelekkel deklarálunk, és ...
// Külsö változókat nem definiáljuk újra, nem kel int.
elsofutas = tombx[0] ; // 0-ával kezdődik a blokk első lefutásakor
masodikfutas = tombx[1] ; //a blokk masodik lefutasakor
harmadikfutas = tombx[2] ; // a blokk harmadik lefutasakor
negyedikfutass = tombx[3] ; // a blokk negyedik lefutasakor
// vagy:
tombx[0] = elsofutas ; // 0-ával kezdődik a blokk első lefutásakor
tombx[1] = masodikfutas ; //a blokk masodik lefutasakor
tombx[2] = harmadikfutas ; // a blokk harmadik lefutasakor
tombx[3] = negyedikfutass ; // a blokk negyedik lefutasakor
// extern ként megőrzi a tartalmát
extern float average = (tombx[0]+tombx[1]+tombx[2]+tombx[3])/4; // Ez csak 1* kell végrehajtani a cikluson kívülre való
if (average <1)
{...
Re: valtozok adatainak ciklusonkenti mentese
Vagy:
Lehet még:
Kód: Egész kijelölése
...
// extern ként megőrzi a tartalmát
extern float average = 0;
for(int x = 0; x<4; x++){
average += tombx[x];
}
average /= 4;
...
Kód: Egész kijelölése
int futas[4];
int tombx[4];
for(int x=0; x<4; x++){
tombx[x] = futas[x] ;
}
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2016. december 3. szombat, 16:51-kor.
Re: valtozok adatainak ciklusonkenti mentese
Koszi! Igy mar vilagos a tomb.
Az extern azt jelenti hogy az igy definialt valtozot a kapcsos zarojelen kivul is, azaz az egesz loop-ban hivatkozhatom?
Az extern azt jelenti hogy az igy definialt valtozot a kapcsos zarojelen kivul is, azaz az egesz loop-ban hivatkozhatom?
Re: valtozok adatainak ciklusonkenti mentese
C-t nem lehet itt tanítani!
Tessék forgatni a könyvet:
A C programozási nyelv: http://vili.pmmf.hu/portal/documents/18 ... nighan.pdf
Tessék forgatni a könyvet:
A C programozási nyelv: http://vili.pmmf.hu/portal/documents/18 ... nighan.pdf
Re: valtozok adatainak ciklusonkenti mentese
elolvastam a magyar konyvet, amit a tanfolyam kapcsan kaptam - igazabol tobbszor is. Azt ertem hogy az nagyon az alap, en pedig egy eleg komplikalt programon dolgozok. A kerdesem ezert gyakorlati problemat erintett, nem agyelszivas volt a celom.
koszi a linket!
koszi a linket!
Re: valtozok adatainak ciklusonkenti mentese
Az extern-re nincs szükséged.
Több C file esetén használják, amikor egyik c fájl hivatkozik egy másik C fájl változójára.
Több C file esetén használják, amikor egyik c fájl hivatkozik egy másik C fájl változójára.