Fórum témák
» Több friss téma |
Köszi!
Akkor ez jó?
int gcd(int a, int b){
while(a != b){ if(a > b) a -= b; else b -= a; } return a; }
Ez micsoda??
Az a-=b mit csinál. Lehetséges lenne, hogy ennyire elfelejtettem a c-nyelvet? ![]()
a=a-b; rövidebben leírva.
Dehát akkor ez nem az euklidészi algoritmus.
Idézet: „Lehetséges lenne, hogy ennyire elfelejtettem a c-nyelvet?” Lehetseges... Operatorokrol szolo fejezetet olvasd at, tulajdonkepp nem nagy ugy, szinte az osszes matematikai muveletnek van hasonlo megadasi lehetosege (pl ugyanigy a=a%b; helyett a%=b ![]() Legalul talalod meg ezen a linken.
Akkor így már jó?
Köszi, trudnai.
Ennek pedig a-t kéne kerekítenie egészre.
Szerintetek jó?
Hogyan tudom azt megoldani, hogy a x/y tömböt egy header fileban hozom létre, hogy csak includolni keljen.
Ez az algoritmus egy algoritmusok.c nevű file-ban lenne ahol még lesz sok más algoritmus is és nem szeretném minden egyes program elején létrehozni kézzel a tömböket mert a végén még kihagyok valamit.
Ne haragudj, nem akarlak megsérteni, de minden egyes függvénynél amit összegányolsz fel fogod tenni a kérdést, hogy jó-e? A válasz egyszerű: nem jó.
Akkor lesz jó, ha bepötyögöd valamilyen C-t támogató IDE-be aztán ráböksz a fordításra. Ha szintaktikailag helyes a kód, akkor lefordul. Ezután szépen lépésenként lehet ellenőrizni a debugger segítségével, helyesek-e az értékek, satöbbi. Egyébként az Euklideszi algoritmus tudtommal csak egész számok esetén adja meg a legnagyobb közös osztót, aminek nem tudom mi köze a normál alak előállításához, de Te talán tudod. Normál alakhoz egy ötlet: Szorzod a törtszámot annyiszor tízzel, ameddig az abszolút értéke nem lesz nagyobb vagy egyenlő 1-el, illetve kisebb mint tíz. Ekkor megkaptad a mantisszát és a tízzel való szorzások száma*(-1) megadja a karakterisztikát. Kicsit jó lenne, ha önállóan is kísérleteznél és gyakorolnál, hiszen az időt leszámítva nem kerül semmibe.
Pedig kénytelen leszel, mert a kódot csak forrásfájlban tudod létrehozni, a header állományok csak fejlécek.
Én nem értem hogyan lehet valamit kihagyni? A fordító sípolni fog, ha hiányol valamit. (Esetleg papíron programozol és nincs ami jelezzen?) A hibaüzenetekből meg általában rá lehet jönni, hogy mi a gond.
Bocsánat ha megbántottalak, máskor nem fogok mindent bemásolni. A normál és az alak közül pedig kifelejtettem a tört szócskát. Nem tudom, hogy ezt (normál törtalak) mire használják normálisan de az én matektanárom a x/y típusú törtalakra használja és néha kifelejti ő is a tört szócskát ami ettől teljesen mást jelent de ezt a rossz szokását úgy látszik én is átvettem.
Mi a hiba ha erre: while (((x%1)&&(y%1))!=0) ezt a hibaüzenetet kapom: integral type required?
A % jel a modulust jelenti (osztas utani maradekot). Magyaran 1-el elosztod a szamot es varod a maradekot... Nem tudom mi volt a szandek? Also bitet szeretned kiollozni?
A tizedes vessző utáni részt szeretném kinyerni. Pl:45,457%1=0,457 azt hitem ez így működik.
A többi része így néz ki:
Nem bántottál meg, szóval részemről nincs harag.
A normálalakról: Bővebben: Link
Köszi a forrást most már egészen biztos nem a normál alakra gondoltam amikor azt írtam normáalak.
Nem, nem jol hitted (azert mutattam a linket tobbek kozott, hogy utana tudj nezni mi az, es oda is van irva, hogy maradek szamitas -- nem pedig tort resz szamitas...)
Valahogy ugy csinalnam, hogy a float-bol kivonnam az egesz reszt, pl: (x - (int)x) De a ciklus feltetelt meg mindig nem ertem? Addig akarsz menni ameddig van tort resze x-nek vagy y-nak?
Igen. Mondjuk 123,58/154,641-ból csinálnék 123580/154641-et amit aztán legegyszerűbb alakra hoznék. Így csinálnék mondjuk a 0,5 ből (1/0,5) 10/5-öt majd abból 1/2-t 1 lenne az xpy tömb első tagja 2 a második. Érted?
Egyébként számomra egyelőre nem világos, hogy ezt most PIC-re vagy PC-re akarod írni? Ha PIC-re akkor javaslom nézz szét a fordító library függvényei között, ha PC-re akkor az ezen a fórumon erősen OFF.
A fordító dokumentációjában megtalálod az elérhető könyvtári függvényeket a 173. oldaltól kezdődően az alábbi linken. Egyébként elárulod, hogy mi lesz ennek a gyakorlati haszna, tán számológépet szeretnél készíteni?
Nem. Találtam egy olyan ledes kijelzőt amin két számot lehet kijelezni egymás alatt és a két szám között még van egy tört jel is. Beadnám gombokkal a tizedes törtet a PIC meg kiírná tört alakban. Csak gondoltam ez az algoritmus máskor is jól jöhetne ezért szeretném az algoritmusok.c-be tenni.
Ertem, akkor csinaldd meg az algoritmust elobb PC-n, es ha az mukodik akkor implementaldd a kodot PIC-re (emiatt jo a C nyelv, mert ez viszonylag fajdalom mentesen megteheted).
Csináld azt, amit más is javasolt!
Visual Studio C++-ban fejlessz algoritmusokat stb. Csak át kell másolnod az IDE-be, ha működik. Így egyszerűbb a hibakeresés.
Hogyan lehet resetelni az őrző védő blökit?
Nem működik sem a reset wdt(); sem a wdt=0; parancs. A cikkeknél pedig csak ccs-hez találtam leírást.
ClrWdt(); ?
Ez nem működik.
Error [499] ; 0. undefined symbol: _ClrWdt(program.obj)
Megvan. CLRWDT ();
![]()
Talán a C (milyen) fordítód helpjében, vagy manuáljában esetleg a mintaprogramjai között nézted?
De minek neked az az eb? Látom már tárgytalan...
Riasztó rendszer agyát csinálom. Nem lenne jó, ha lefagyna.
![]() Egyébként köszönöm mindenkinek aki tegnap segített működik a tört kiíró. Vagyis működött mert titokzatos úton módon eltünt az áramkör. ![]() |
Bejelentkezés
Hirdetés |