- Milyen TV-t vegyek?
- Gaming notebook topik
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Computex 2024: az ASUS nem viccel, ha felsőkategóriás billentyűzetről van szó
- Elkészült Oroszország első litográfiai berendezése
- Fejhallgató erősítő és DAC topik
- Computex 2024: beröffentette az AI-t az AMD
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Mini-ITX
- AMD K6-III, és minden ami RETRO - Oldschool tuning
Hirdetés
-
Spyra: nagynyomású, akkus, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
-
Computex 2024: Vérnyomásérték megbecsülésében is partner az Asus VivoWatch 6
ma Nem mér, csak becsül, de a helyi hatóságoktól megkapta a használati engedélyt.
-
Computex 2024: MSI Claw 8 AI kézikonzol Lunar Lake-kel
ph A külön utakon járó sárkányos gyártó kézi konzoljának második generációjánál is marad az Intel mellett.
Új hozzászólás Aktív témák
-
Karma
félisten
válasz don_peter #4472 üzenetére
Nem lehet. Hasonló témában nemrég leírtam a lehetőségeket (tl;dr: char* a heapen, vagy paraméterben átadott célterület).
“All nothings are not equal.”
-
Karma
félisten
válasz don_peter #4483 üzenetére
Igen, pontosan erről írtam, hogy nem kéne így csinálni, ha nem muszáj. Márpedig desktop környezetben (szemben egy beágyazott rendszerrel) nem valószínű hogy ez fennállna.
A probléma a globális változókkal az, hogy a függvény újrafelhasználhatóságát és olvashatóságát is egyaránt rontja. Az előbbit azért, mert egy közös memóriaterületet piszkál amihez más függvény is hozzáfér és így elronthatják egymás dolgait. A másikat meg azért, mert a függvényen kívülre kerül az az adat, amivel dolgozik.
És végül azért is célszerű már most leszokni a globális változókról, hogy ne alakuljon ki rossz kódolási stílus mielőtt más nyelvekre mész tovább.
“All nothings are not equal.”
-
Karma
félisten
válasz cellpeti #4511 üzenetére
Nem jól érted, a beolvasott karaktereket (nagyon helyesen!) nem tárolja a program, csak a darabszámot gyűjti.
Nézd meg a ++gyak[ c ] sort jobban! Vedd figyelembe, hogy a [] operátor erősebb, mint a ++, illetve a tényt, hogy a gyak tömb 256 elemű. No meg nem árt az az ismeret hozzá, hogy a char típus nyolc bites, úgyhogy egy beolvasott karakter 256 különböző értéket vehet fel.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
Persze. Nanoszekundumot a clock_gettime függvénnyel kapsz, ha a CLOCK_REALTIME órát adod neki paraméternek.
“All nothings are not equal.”
-
Karma
félisten
válasz don_peter #4625 üzenetére
Az atoi semmiképp se jó választás, hiszen ha nem számjegy karakterrel találkozik, azt simán kihagyja. A "11A" stringedre ha jól saccolom, a visszatérési érték 11.
Az elemenkénti végignézést javasolnám személy szerint, az nem túl költséges, és biztos jó eredményt ad. Mondjuk az a-zA-Z vizsgálat helyett sokkal egyszerűbb azt nézni, hogy az i-edik karakter >= '0' és <= '9'
Na meg nyilván ha == 0, akkor le kell állni a ciklussal.
alapz@j: Ha a memset ezt az intrinsic megoldást használná, nem lenne az egész optimalizáció vs. biztonság mizéria
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz don_peter #4628 üzenetére
Eszembe jutott még egy lehetőség, és akkor nem kell karakterenként vizsgálnod. Láttam, hogy van printf függvényed, így gondolom sscanf is előfordul. Ha mondjuk %d-t keresel a stringben, és az sscanf visszatérési értéke 1, akkor szám volt, ha 0, akkor meg nem sikerült.
“All nothings are not equal.”
-
Karma
félisten
válasz don_peter #4635 üzenetére
Képzavarban vagy.
A char, short, int, long, long long különböző méretű, egy számot tároló típusok. Ha nem is a száraz C szabványt, legalább a Wikipédia felsorolását nézd meg.
A méretük fix, nincs olyan hogy egy int 255 alatt csak egy, fölötte több bájt, mindig négy (tipikus fordítóknál, PC-n). A char meg mindig egy bájt. Ha nagyobb számot akarsz beleírni, mint amit ábrázolni tud, akkor átfordul az érték. Pl. unsigned char esetén 255 + 3 = 2.
Gyanús, hogy belekeverted a karakterláncokat gondolatban (char*, char[]).
[ Szerkesztve ]
“All nothings are not equal.”
-
-
Karma
félisten
válasz alapz@j #4708 üzenetére
Szerintem az lenne a pláne, ha lenne const char *-os konstruktor (ez heapre másol) és egy char *-os ami átveszi a tulajdonjogot a stringről, és döntse el a kóder hogy melyik releváns.
De egyébként mi az C-ben, hogy konstruktor? Ha tényleg C-ről van szó, akkor semmi se gátol meg abban, hogy a függvények neve is tükrözze hogy mit csinál a pointerrel.
“All nothings are not equal.”
-
Karma
félisten
válasz buherton #4742 üzenetére
Ilyenről szabványos környezetben nem tudok, de ha a soros portig eljutás kell csak, irányítsd Windowson a comX-re a forgalmat, Linuxon meg a /dev/ttySX-re (ahol X a port száma).
Keresgéltem még egy kicsit, egyre inkább úgy tűnik, hogy a FILE*-ot nem lehet csak úgy helyettesíteni, ez valami avr-gcc sajátosság.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz Dave-11 #4753 üzenetére
Van valami konkrét elképzelésed, hogy milyen platformmal szeretnél dolgozni, vagy milyen végcéllal?
Mert ha például csak hobbicélból, akkor az Arduino projekt (AVR) elég népes közösséggel és mindenféle alaplappal, kiegészítővel és libek tengerével rendelkezik.
Rengeteg webshop is foglalkozik vele, úgyhogy rendelni nagyon sok helyről lehet. Itthon a FabLabról tudok csak, de külföldön a SparkFun, SeeedStudio, Adafruit, stb. mind elég jó szerintem.
Ezek a boltok általában saját/közös leírásokkal, blogokkal is rendelkeznek, úgyhogy mindenképp megéri böngészni ismeretszerzés gyanánt is.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz buherton #4758 üzenetére
"Bármi is legyen a döntésed a használt program nyelv a C legyen. Van Basic meg Arduino, meg mit tudom én mi, de az igazi beágyazott rendszer fejlesztő C-ben dolgozik..."
Az Arduino is C, nem írtak hozzá külön nyelvet, csak van egy kezdőbarátabb bootloader és alapkönyvtár. Igazából technikai akadálya nincs annak, hogy valaki átflashelje és nyersen használja.
“All nothings are not equal.”
-
Karma
félisten
válasz buherton #4762 üzenetére
(És egyben don_peternek is válasz.)
Ez villamosmérnök végzettséggel (de gondolom már műszerész/villanyszerelő szakmával szintén) biztosan nem nagy kunszt; de tisztán szoftveres háttérrel, no meg esetemben az informatikus diplomámmal, azzal az egy félévnyi elektronika tárggyal és egy darab mérés laborral - ahol kész sablon alapján össze kellett pakolni breadboardon két áramkört -, azért nem ennyire triviális.
Nyilván meg lehet tanulni a digitális áramkör építést is, jó szakirodalommal vagy mondjuk kompetens ismerőssel. Én csak annyit akartam mondani, hogy szerintem nem ördögtől való, ha kulcsrakész hobbi platformot vesz.
Ha meg élesben is ezzel akar foglalkozni, akkor a Ti hozzáállásotok követendő, természetesen.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz don_peter #4768 üzenetére
De nem egyszerűbb, ha az emberfia először lát egy ilyen rendszert működésben, amin a beágyazott programozás alapjait illetve egyszerűbb elektronikai illesztéseket gyakorolhatja? Aztán ha elég stabilnak érzi a talajt, lemásolja a kapcsolási rajzát vagy saját kútfőből épít sajátot?
dabadab egyébként jól megfogta az egyik gondolatom lényegét Pont arra gondoltam. A szoftveres "luxus" hiánya (OS, driverek, stb.) szerintem gyorsan megugorható, fel se merült bennem, hogy valaki úgy akarna uC-t programozni.
“All nothings are not equal.”
-
Karma
félisten
válasz k.kristof #4776 üzenetére
Középiskolai feladatban (a Borland C-ből gondoltam) ez nem feltétlen probléma, mert elő szokták írni, hogy mik a maximális értékek, amire készülni kell. Persze ha a szövegben nincs ilyen, akkor a konstans 10x10 méret helytelen – remélhetőleg leadták a mallocot órán.
[ Szerkesztve ]
“All nothings are not equal.”
-
-
Karma
félisten
A hiba ott kezdődik, hogy nem használtad a Programkód gombot a forrás beszúrásakor, és így amellett, hogy nehezen olvasható, a [i]-kből mindenféle sima zárójel és dölt írás lett. Erre figyelj oda legközelebb.
Maga a kód rengeteg sebből vérzik, jelölöm amit ránézésre látok:
scanf("%f", &adat->kapacitas); -- mivel a double érték skalár, a scanf függvénynek a címét kell átadnod, ki kell rakni a & operátort hogy ne robbanjon.
for(i = 0; i < (strlen(tomb)-1); i++) ☠-- strlent nem szabad ilyen tömbre használni, csak és kizárólag nullterminált (azaz C) stringekre! A függvényedet úgy kéne módosítanod, hogy a darabszámot is átadd paraméterként.
printf("%i",tomb[i].kapacitas); -- ha egyszer double az érték, miért egészként akarod kiíratni?
De egyébként például a középsőt a fordító is mondja neked, hiszen lefordíthatatlan; miért nem nézed a hibákat?
Egy kicsit lemaradtam az írással
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
Nem próbáltam, de szerintem ez működhet.
Stdinen semmi se biztos mondjuk.Nyilván hülyeséget írtam, a getc alaphelyzetben blokkol, ha nem tud karaktert olvasni; ezt felülbírálni meg nem lehet platformfüggetlenül...
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz DrojDtroll #4962 üzenetére
Hibakeresésnél legközelebb másold ide a pontos hibaüzenetet, és hogy fordításkor vagy futáskor történt a hiba.
Egyébként szerintem az a baj, hogy egy 100^4 elemű inttömb bő 400 MB memória lenne, amit stacken nem lehet elhelyezni...
Ha ekkora memóriaterület kell, nem úszod meg a heap használatát (malloc/free), de sokkal célravezetőbb, ha újragondolod a feladatod. Több mint valószínű, hogy nincs szükséged az egész tömbre a memóriában.
[ Szerkesztve ]
“All nothings are not equal.”
-
-
Karma
félisten
válasz #36268800 #5279 üzenetére
Nem a double-int konverzióval van baj, sokkal nagyobb probléma, hogy a 34. és a 43. sorban a számítás végző függvényeket (pointerként) adod be a printf-nek, nem pedig meghívod őket.
A double kockázat megoldása annyi, hogy a 7. és a 14. sorban a hányadost 2-ről 2.0-ra átírod.
“All nothings are not equal.”
-
-
Karma
félisten
válasz maestro87 #5441 üzenetére
1) Nekem is feeslegesnek tűnik, mintha nem akartak volna üres zárójeleket írni.
2) A vessző egy alap C operátor, azt jelenti, hogy sorban végrehajtja a három műveletet, és az utolsónak az eredményét adja vissza. Az első két tag elég fontos, ezzel címezi meg az EEPROM adott celláját és engedélyezi az olvasást – ezek nélkül a harmadik tagnak semmi értelme.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz nonsen5e #5518 üzenetére
Onnantól kezdve, hogy conio.h (brrr Borland), elég egyszerűen meg lehet oldani. A getch() visszaadja az utoljára lenyomott karaktert, ami a kbhit után nem fog várakozni, hanem visszaadja az utoljára lenyomottat.
Mondjuk szerintem gondold át egy kicsit, hogy mit csinál a != operátor abban az esetben, ha valamilyen okból túlszalad a seconds2 változód a seconds-on, és nem kéne helyette valami más operátor.
Harmadrészt egy középiskolai háziban mondjuk szódával elmegy a busy wait, de afölött már utána kéne nézni, hogy lehet várakozni while ciklusban 100%-on pörgetett CPU nélkül.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz DasBoot #5756 üzenetére
Ha egyszerűen akarsz működő eredményt, töröld le a mostani telepítésedet, és helyette a codeblocks-16.01mingw-setup.exe-t szedd le és telepítsd. Ebben benne van az a GCC fordító, amit hiányol.
“All nothings are not equal.”
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen TV-t vegyek?
- Azonnali fáradt gőzös kérdések órája
- Milyen légkondit a lakásba?
- Robotporszívók
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Anglia - élmények, tapasztalatok
- Mercedes topic
- Gaming notebook topik
- Bestbuy játékok
- Destiny 2 (Xbox One, PS4, PC)
- További aktív témák...
- Dell Optiplex 7070 SFF: Az igazi kis erőgép: i7 8700, 32GB RAM, 512GB SSD, 2xDP+HDMI+USB-C, Win11Pro
- Dell Optiplex 7070 SFF:A tökéletes irodai/otthoni PC:i5 8500,16GB RAM,256GB SSD,2xDP+HDMI+USB-C,Win
- Kellemes árú vezetékes gamer egerek
- CLEVO P775DM3-G gaming laptop
- ÚJ GIGABYTE G5 Gamer Tervező Laptop -30% 15.6" i5-12500H 16GB/512GB SSD 144Hz FHD RTX 3050 4GB FHD
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen