- HiFi műszaki szemmel - sztereó hangrendszerek
- Kormányok / autós szimulátorok topicja
- Sony MILC fényképezőgépcsalád
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Milyen belső merevlemezt vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- OLED TV topic
- VR topik (Oculus Rift, stb.)
- SSD kibeszélő
- Vezetékes FEJhallgatók
Hirdetés
-
Bemutatkoztak a Microsoft aktuális Surface gépei
ph A Surface Laptop és Pro hamarosan megjelenő iterációi a 45 TOPS-os NPU-val érkező Snapdragon X platformra épülnek.
-
MultiVersus - Íme a launch trailer
gp Az érdeklődőknek alig egy hetet kell már csak várniuk a teljes kiadás megjelenésére.
-
Drágábban indíthat az új iPhone SE
ma 2025 tavaszán érkezhet az új SE, az Apple az 500 dolláros határig emelhet valamennyit az áron.
Új hozzászólás Aktív témák
-
tototos
őstag
Sziasztok!
Egy kis preprocesszor segítség kellene.
A következőt szeretném valahogy fordítás előtt megcsinálni.
Adott a következő 2 define#define CHG_I2C I2C1
#define GPIO_AF_I2C1 0x000Ehhez kellene egy macro ami kb így nézne ki.
#define CONCAT(a,b)
ennek azt kellene csinálni hogy
CONCAT(GPIO_AF_,CHG_I2C) meghívása után a GPIO_AF_I2C1 legyenPróbálkoztam sok dologgal de még nem sikerült rájönni melyik a jó kombináció.
-
buherton
őstag
válasz tototos #4158 üzenetére
Nézd meg a console output-ot. Ha összelinkelődött, akkor nincs para . Az Eclipse tud érdekes dolgokat művelni. Nekem tipikusan az enumokkal vannak bajai, de ettől még fordul a kód.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
-
tototos
őstag
Sziasztok!
Mi a különbség a két függvény között? Mi alapján kell használni az externt és mi alapján nem?
extern void do(int,int)
void do (int,int) -
alapz@j
tag
Egy C99
for (..) {
int x = ...
}ciklusban az x minden iterációnál létrejön/megsemmisül a stack-en vagy csak egyszer és mindig az kerül felhasználásra?
-
Jester01
veterán
válasz alapz@j #4165 üzenetére
Ahogy a kollega írta, logikailag megsemmisül és a szabvány csak ennyit ír elő.
Az már fordítófüggő, hogy ez hogyan néz ki gépi kód szinten, de rendesen optimalizáló fordító nyilván előre lefoglalja a területet és újrahasznosítja. Mellesleg a stack kezelésnek igen minimális az overheadje hiszen csak egy-egy pointer művelet.Ha érdekel a végeredmény hogy néz ki akkor kérj assembly listát a fordítódtól vagy használd ezt a remek weboldalt.
Jester
-
alapz@j
tag
válasz Jester01 #4166 üzenetére
Huh, nagyon jó ez a GCC Explorer, meg is adta a választ:
int main() {
for (int i = 0; i < 5; ++i) {
int x = i + 10;
}
}g++ 4.8 (-O és más kapcsolók nélkül)
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-8], 0
jmp .L2
.L3:
mov eax, DWORD PTR [rbp-8]
add eax, 10
mov DWORD PTR [rbp-4], eax
add DWORD PTR [rbp-8], 1
.L2:
cmp DWORD PTR [rbp-8], 4
jle .L3
mov eax, 0
pop rbp
retÉrdekes, ha jól olvasom, akkor a teljes stack allokálás (int i és int x is) megtörténik már a ciklus előtt, azaz nincs sem menet közbeni allokálás, sem blokk utáni deallokálás.
-
nyunyu
félisten
Hogyan lehet _megbizhatoan_ lekerdezni, hanyadik karakternel tartunk az eppen feldolgozott fajlban, majd a lementett poziciora visszaugrani?
ftell neha negativ erteket ad vissza, majd a kovetkezo karakter olvasasa utan az elozo rossz ertek+1-et, aztan fseek(fp, pos, SEEK_SET)-re total mashova ugrik, nem a "megjelolt" karakterhez.
fgetpos paros is ugyanazokat az ertekeket adja vissza, mint az ftell.
Ha manualisan szamolom a karaktereket minden getc/ungetc-nel, akkor sem pont oda ugrik vissza.
Probaltam Win alatt VC++ 2010-zel, meg linux alatt GCC-vel, mindegyik produkalja.
Feldolgozando fajl szoveget tartalmaz, mind win, mind linux stilusu sortores is elofordulhat benne.Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Bontsuk kette a problemat.
Mint rajottem, az ftell/fgetpos csak akkor mukodik "helyesen", ha mar olvastam a streambol.
Ha elso olvasas elott adom ki, akkor -20-at ad vissza, es innentol fogja egyesevel novelni/csokkenteni a poziciot minden getc/ungetc utan, nem nullatol.
Ez a kisebbik problema.Nagyobbik bajom az, hogy a getc platform fuggoen kezeli a sorvege karaktereket.
Pl. Visual C++ 2010 Win alatt ha \n karaktert lat, akkor lenyeli az utana jovo \r karaktert es mindig kettovel noveli a fajl poziciot.
Ez azert problema, mert a feldolgozando forraskodok egy resze UNIX alatt lett mentve, ott meg nincsen \r az \n utan, de akkor is kettovel noveli a poziciot...Plusz nehezitesnek vannak olyan forraskodok is, amiben nincs \n, hanem \r-rel vannak tordelve.
Probaltam szamolni, hany getc/ungetc-nel jarunk, de az sem ad pontos eredmenyt, mivel nem tudom eldonteni, hogy a latott \n karakternel eggyel vagy kettovel noveljem az indexet.
Windows alatt automatikusan utana rakott \r egyaltalan nem jon at a getc-vel, nem tudom megszamolni.Hello IT! Have you tried turning it off and on again?
-
Jester01
veterán
Mint rajottem, az ftell/fgetpos csak akkor mukodik "helyesen", ha mar olvastam a streambol.
Ha elso olvasas elott adom ki, akkor -20-at ad vissza, es innentol fogja egyesevel novelni/csokkenteni a poziciot minden getc/ungetc utan, nem nullatol.Ezt nehezen hiszem, és ha tényleg így van az bug.
Nekem egyébként működik linuxon, akár text akár binary módban nyitom meg a fájlt.Jester
-
eriktoth
tag
Üdv! Valaki esetleg nem tud valami free servereket fejlesztésre? anno volt suliba amin putty-val könnyen el lehetett érni, és fejlesztgetni rajta. Valami hasonlót keresnék
-
eriktoth
tag
Időközbe megoldódott még hozzáférek a sulishoz
-
zitto
újonc
Egy kis segítséget szeretnék kérni.
Még nemrég kezdtem programozni tanulni ráadásul egyedül.
A problémám az lenne, hogy ezt a kódott nem fordítja le a compiler, csak akkor, ha az atan-on belül szám van és nem egy előre definiált változó. Nem értem miért, kérlek segítsetek:#include <stdio.h> /* printf */
#include <math.h> /* atan */#define PI 3.14159265
int main ()
{
double param, result;
param = 1.0;
result = atan (param) * 180 / PI;
printf ("The arc tangent of %f is %f degrees\n", param, result );
return 0;
}Zitto
-
Jester01
veterán
Az akkor lehet, ha elfelejtetted hozzálinkelni a math könyvtárat. Minden bizonnyal valamit panaszkodott is a fordító, legközelebb azt is írd meg nekünk, valamint keress rá az interneten is. Jelen esetben valószínűleg undefined reference hibát kaptál ami azt jelenti, a linker nem talált valami hivatkozott szimbólumot. Ilyenkor ha nem elírás történt, akkor hiányzó könyvtárak/modulok felé kell keresgélni. Konstansra azért fordulhat, mert azt szerencsés esetben a fordító kiszámolja így nincs szükség a tényleges atan implementációra.
Végül pedig a gyógymódról. Nem írtad milyen környezetet használsz, parancssoros gcc esetén -lm kapcsolót kell alkalmazni. A -l segítségével lehet függvénykönyvtárakat hozzáadni a beszédes m pedig a matek könyvtár neve. IDE környezetben meg kell keresni hol lehet további könyvtárakat (library) beállítani és ott fel kell venni a matek könyvtárat.
Jester
-
-
buherton
őstag
válasz alapz@j #4178 üzenetére
Én is próbáltam 4.6.3-al gcc, de linkelni már nem tudta.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
-
greenity
aktív tag
Sziasztok!
Lehet nem itt kéne kérdeznem, de olyan emberkéknek tartok programozást, akik nem tanultak még ilyet.
A tutorom azt mondta, hogy matematikai problémákat oldjunk meg folyamatábrával, majd kódoljuk le c-ben.
Ha esetleg lenne valami ötletetek, hogy mit lehetne nekik adni, annak nagyon örülnék.LNKO-t, faktoriálist, páros és páratlan függvények kiíratását gondoltam eddig, de nem igazán jut olyan eszembe, amit könnyű szívvel adok nekik, akár csak matekból...
"Egy mosolynál jobb a több"
-
-
greenity
aktív tag
válasz dabadab #4186 üzenetére
Ma lnko-t meg faktoriálist meg binomiálist számoltunk.
Úgy kezdtük, hogy statikusan adtuk meg az adatokat, és utána mutattam meg a scanf-et, miután már megcsináltuk a programokat.Az a nagyobb gond, hogy a csapat nagy része még nem látott linuxot, így aztán már ezzel is problémák voltak.
Majdnem minden második embernek én lépegettem be cd-vel a mappájába... másodszorra már ment..
De lehet az elején linux gyorstalpalót kéne tartsak.."Egy mosolynál jobb a több"
-
aAron_
őstag
sziasztok!
az egyik desktopomra (win8x64) most tettem fel először a codeblocks-ot, minden jónak tűnik, kivéve, hogy nem tudok " { " karaktert írni, helyette ezt írja mindig:
/** \brief
*
* \param
* \param
* \return
*
*/mi lehet a baj? alt gr + B gondolom valami shortcut, de alapértelmezetten? kicsit furcsa
What is your ikigai?
-
buherton
őstag
Default eclipse beállításnál is ilyen problémák vannak. Állítsd át a billentyűzet kiosztást .
MOD: Ugye az angol billentyűzeten a speciális karaktereknek más hol van a helyük, így ők nyugodt szívvel tesznek ide billentyű kombinációkat.
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
-
aAron_
őstag
-
aAron_
őstag
válasz Ereshkigal #4191 üzenetére
az lett végül, ott beraktam valahova majd töröltem, így most jó, remélem mással nem lesz problémám már
köszi a segítségeket
What is your ikigai?
-
stranger28
addikt
Üdv!
Érdekelne, hogy a kódom mennyire "elegáns" megoldás a következő egyszerű kis feladatra:
Egy hójelentés N sípályán mért hóréteget tartalmazza.
Készíts programot, amely beolvassa a sípályák számát (1≤N≤20) és az egyes pályákon a hóréteg vastagságát (0≤V(i)≤100), majd
A. megadja, hogy melyik sípályán a legnagyobb a hóréteg;
B. megad egy sípályát, ahol a hóréteg legalább 100 cm vastag;
C. megadja azokat a sípályákat, ahol nem lehet síelni (azaz a hóréteg vastagsága 0)!1-20,0-100 és egyéb hülyebiztos vizsgálatokkal most nem töltöttem az időt.
#include <stdio.h>
#include <stdlib.h>
int main(){
int i,n,a=0;
int* palyak;
int maxi=0;
int leg100=-1;
int nemsi=0;
int* nemsi_index;
printf("Palyak szama: ");
scanf("%d",&n);
palyak=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
printf("%d. palya: ",i+1);
scanf("%d",&palyak[i]);
if (palyak[i]>palyak[maxi]) maxi=i;
if (palyak[i]>=100 && leg100==-1) leg100=i;
if (palyak[i]==0) nemsi++;
}
nemsi_index=(int*)malloc(sizeof(int)*nemsi);
for(i=0;i<n;i++)
if (palyak[i]==0){
nemsi_index[a]=i;
a++;
}
printf("\nLegnagyobb: %d\n",maxi+1);
printf("Van 100 cm ho: %d\n",leg100+1);
printf("Nem lehet sielni %d palyan:",nemsi);
for(i=0;i<nemsi;i++){
printf(" %d",nemsi_index[i]+1);
}
free(palyak);
free(nemsi_index);
return 0;
}Hülyén hangzik, de tényleg erre mennek rá, hogy mennyire úri.
(#4192) aAron_: Én innen szedtem le a keybindert, az minden ilyet megold.
[ Szerkesztve ]
-
greenity
aktív tag
-
dabadab
titán
válasz stranger28 #4193 üzenetére
Par dolog:
0. Az egesz cuccban egy darab komment sincs, pedig azt erdemes gyakorolni, mert kulon tudomany.
1. "magic value"-ket a kodba irni nem tul jo gyakorlat, jobb konstanskent kezelni oket, illetve C-ben makrokent, szoval "#define MIN100_NOT_FOUND -1"
2. A free()-ket erdemes pont forditott sorrendben meghivni, mint a malloc()-ot, egyreszt, mert ugy maradnak meg szepen a blokkok, masreszt meg lehet, hogy egy kesobb malloc()-olt strukturaban egy pointer egy elozoleg lefoglalt memoriateruletre mutat - es ha az elso free()-zed, a masodikrol meg azt gondolod, hogy az meg ervenyes adatokat tartalmaz, abbol baj lesz.
3. A valtozoneveket (konstansokat, makrokat, file-okat, kommenteket) angolul tessek irni.
4. A nemsi_index teljesen felesleges. Lehetne mondani, hogy azert van igy, hogy meglegyen a funkcionalis tagolas (beolvasas, feldolgozas, kiiras), de ez egyebkent sincs meg (amire teljesen elfogadhato magyarazat, hogy igy hatekonyabb a kod - leszamitva ezt a franya nemsi_indexet).
5. Ha megis a tagolas mellett dontenel, akkor erdemes lenne azt harom fuggvenybe kirakni.
DRM is theft
-
buherton
őstag
válasz stranger28 #4193 üzenetére
Kiegészítés (#4195) dabadab hsz-re.
1. feleslegesek a typecast-ok és a jövőben kerüld ezeket, mert könnyen kerülhetsz olyan helyzetbe, amikor jön a fej vakarás, mert nem fut a kód, mint például:
void foo(long *bar)
{
*bar = 23424234;
}
int main(void)
{
char bar;
foo(&bar);
return 0;
}2. formázás: ez az adott sor végére rakni a { nem C-szerű formázás, hanem tán a Java-ból jön, és ajánlott ott használni. Továbbá próbáld kialakítani a saját stílusod, és tartsd magad ahhoz, mert könnyebb neked és másnak is olvasni a kódod.
int* foo; helyett int *foo; mert ebből is lehetnek gondok, mint int* foo, bar; és két pointer helyett lesz egy pointer és egy változó, és nincs olyan típus, hogy int pointer, hanem int-re mutató pointer van csak.
3. óvatosan az ilyenekkel:
for(i=0;i<n;i++)
if (palyak[i]==0)
{
nemsi_index[a]=i;
a++;
}Ugyanis nem feltétlenül portable a kód. Sajnos nem mindegyik fogadja el így ezt a formát. Az ilyen formával már kevésbé lehet gond:
for(...)
{
if(...)
...;
...;
}[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
-
Jester01
veterán
válasz stranger28 #4198 üzenetére
Szerintem alapvetően nincs baj az int*-al, bár tény, hogy C-ben ilyen nincs de szerintem olvashatóbb. Személy szerint szigorúan követem a soronként csak 1 változó elvet, így a "hová tartozik a *" probléma nem érint.
Ja és még a beolvasásod nem bolondbiztos. Igaz, azt C-ben nehéz is csinálni, de első körben legalább a scanf visszatérési értékét ajánlott ellenőrizni.
[ Szerkesztve ]
Jester
-
Karma
félisten
válasz buherton #4197 üzenetére
Már hogyne volna C stílusú ez a fajta zárójelezés. Amellett, hogy Ritchie eléggé a nyelv alkotója, nagy open source projektekben is előfordul, hogy ez a forma mellett döntenek.
De persze az is gyakori, hogy új sorba rakják. C-ben én is úgy szoktam, de ettől nem lesz univerzális igazság.
“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!
- Futás, futópályák
- Bugok, problémák a PROHARDVER lapcsaládon
- Call of Duty: Modern Warfare III (2023)
- Moderátort keresek a fórumhoz!
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
- Honor Magic V2 - origami
- Nintendo Switch
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Honda topik
- Aliexpress tapasztalatok
- További aktív témák...
- 2 év gari: Olcsó DDR5 PC/I5 12400F/16GB/500GB M2/Suprim X RTX 3070/Futár is
- -70% HP EliteBook 850 G7:i7 10610U,32GB RAM,512GB SSD,15.6" FHD,vil.MAGYAR numeri.bill,WWAN 4G,Win11
- ASUS TUF Gaming GeForce RTX 4070 Ti 12GB
- Hama Ultraslim Fali konzol (TV)
- ÉRKEZETT Legújabb Bontatlan Új M2 IPAD PRO 2022 12,9 128GB - 256GB Wi-Fi Azonnal DEÁK TÉRNÉL Átvehe
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen