Hirdetés
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- droidic: Windows 11 önállóság nélküli világ: a kontroll új korszaka
- Meggyi001: Eldugott helyek Párizsban, amiket jó eséllyel még nem láttál... 2. rész.
- Gép1: Renault Kangoo vizhűtő ventilátor fokozatok
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- sonar: Pi-hole, a reklám blokkoló (Bevezető)
- Brogyi: CTEK akkumulátor töltő és másolatai
Új hozzászólás Aktív témák
-
válasz
jattila48
#6347
üzenetére
Úgy maradhat benne, hogy ahhoz, pl hogy egy eljárásban keletkező átmeneti változót visszaadjon (mert pár év után valaki rájött, hogy az is milyen jól jöhet máshol), változtatni kell az eljárás szignatúráját, ami viszont a kód más részeiben igényel újraírást. Ezt megspórolandó az új kód inkább turkál a (memória-) szemétben. Time is money.
-
-
válasz
pmonitor
#6219
üzenetére
Ott mondjuk pont meg lehetne egyszerűen, bár szerintem ez a felírás egyértelműbb, mint ha a sswitch egy negált feltételben volna (egyébként szerintem amúgy is pont erre az alakra fogja fordítani a fordító). De "optimalizáld" ki lsz a 2921. sorban kezdődő switch-ből a goto-t, hogy ne nézzen ki nagyon csúnyán...
Ezek (mind a 300 sorban), mind később a switchben szemantikailag pont jól néznek ki:
ha (feltétel) ugorj a labelre
És amúgy itt sem látsz olyat, hogy a goto "összevissza" ugrálna, csak előrefelé. -
válasz
pmonitor
#6206
üzenetére
Mondjuk ha folyamatosan Pascal példát hozol, akkor én meg azt mondom, hogy Try/Catch hiányában nem lehet (értelmesen) error handlinget csinálni Visual Basic 6 (és VBA / VBS-ben) Goto nélkül: [link]
Most akkor egy platformon vagyunk, hogy tökre irreleváns magasszintű nyelvekben alkalmazott Goto megoldásokról vitatkozunk a C topikban?
-
válasz
pmonitor
#6204
üzenetére
Mondjuk ha pont erre van szükséged, akkor a break-kel is ezt csináljuk:
int f = 1;
while (f) {
// utasítások
for (int i=k; i>l; i+=m) {
//még utasítások
if (feltétel) {
f = 0;
break;
}
}
Technikailag pont ugyanazt csinálja (és szerintem amúgy goto-val jobban is néz ki, mint ez a megerőszakolt while 1 ciklus...) -
válasz
pmonitor
#6197
üzenetére
Igazából azt sem tudom min vitatkozol...
Csak annyit írtam (viccesen), hogy ha a continue-t tiltják, akkor miért nem tiltják a break-et is... amúgy implementálva mind-mind goto (ráadásul az is előrefelé, nem hátra - pl for (int i=k; i>l; i+=m).// értékadás
int ix = k;
:loop_start
//kilépési feltétel
if n>l goto outside_of_loop;
/*
utasítások
*/
// continue
if condition_continue goto loop_increment;
/*
még utasítások
*/
// break
if condition_break goto outside_of_loop;
/*
még utasítások
*/
:loop_increment
i += m;
goto loop_start;
:outside_of_loop -
válasz
Domonkos
#6009
üzenetére
Nem, mivel 100/j UB, amennyiben nincs ellenőrizve, hogy a j egyenlő-e 0-val.
Tehát, ha az if-et kioptimalizálná, akkor az egész függvényt ki kell, mert a 100/j UB...Szerintem a fordító inkább "beoptimalizál" egy if j !=0-t a kódba, ha nincs ott, hogy ne legyen HW interrupt, csak szoftveres.
-
válasz
ub19student
#5945
üzenetére
Vagy futtasd az exe-t parancssorból.
-
ezek csak pszeudo-függvények: inputa és inputb-vel töltöd fel az a és b változók értékeit...
Viszont ha csak kiértekeléskor kéri be az értékeket, akkor:
while(1) {
if (fv(inputa())) break;
fb = fv(inputb());
if (fb == 0 || fb == 2) break;
}Így a b-t be sem kéri, ha az első input hatására kilépett az első függvénynél.
-
Asszem valahogy így (remélem jól értettem az ábrát):
while(1) {
a = inputa();
b = inputb();
if (fv(a)) break;
fb = fv(b);
if (fb == 0 || fb == 2) break;
}Vagy az értékeket csak egyszer kéri be? De akkor ha fv(a) == 0 és fv(b) = 1 akkor végtelen ciklus lesz...
Vagy egymás eredményét használják fel?
a = input >> b = fv(a) >> a = fv(b)? -
-
válasz
PumpkinSeed
#3693
üzenetére
Gondolom, mert nem tudja hibátlanul megírni

-
válasz
PumpkinSeed
#3671
üzenetére
Ja és a kolléga időben kijavított, mielőtt rögzült volna

-
válasz
PumpkinSeed
#3660
üzenetére
if(ev % 400 == 0){
/* szökőév */
}
else if(ev % 100 == 0){
/* nem szökőév */
}
else if(ev % 4 == 0){
/* szökőév */
}
else
/* nem szökőév */
} -
válasz
WonderCSabo
#3509
üzenetére
dupla

(nem is akarok mentségeket keresni)
-
válasz
PumpkinSeed
#3506
üzenetére
Itt leírtam, mit kell csinálnod.
D = B * B - 4 * A * C;
if (D > 0) {
M1 = (-1 * B - sqrt(D)) / (2 * A);
M2 = (-1 * B + sqrt(D)) / (2 * A);
}
else if if (D == 0) {
M1 = (-1 * B) / (2 * A);
}
else { // kizárásos alapon (D < 0)
// Nincs megoldás
}Ja és célszű a determinánst nem lebegőpontos számokkal számolni, hanem egészekkel, mert különben a determináns számításban a kivonás okozhat 0-hoz közeli számot (kerekítési hiba miatt).
-
válasz
PumpkinSeed
#3503
üzenetére
Pfff (nem mintha nem reagáltam volna, nekem úgy tűnt te nem válaszoltál a kérdésemre).
De legyek kicsit konkrétabb:
0) Csak valós vagy immaginárius gyököket is szeretnél?
1) Matematikailag le tudod írni a megoldóképletet?
2) C szintaktika megy?
3) Alapvető függvények (alapműveletek, sqrt) megvannak?
4) Feltételes szerkezetet tudsz készíteni C-ben?Ezek közül melyik pontnál akadtál el?
-
válasz
bandi0000
#3499
üzenetére
És érted is?

Vazz, csak most látom, hogy beleszkerkesztettem a kód végébe (return elé) a kommentet...

És még egy plusz komment (tévedés az eredeti kommentben): nem 16384 a max, a 65535-ig menő számokon működik helyesen a kód (az annál nagyobb számokon az 15. feletti biteket nem írja ki)

1111 | 1111 | 1111 | 1111 = 65 535 -
válasz
bandi0000
#3494
üzenetére
12-nél a 1100 helyes (1*8+1*4+0*2+0*1)
Vagy fordítva rakod be a tömbbe (végétől kezdve és a végére teszel egy '\0'-t (string vége karakter C-ben) és onnan iroatod ki ahova visszafele eljutottál (ezt csinálja az én példám). Vagy feltöltöd a tömböt rendesen és kiiratáskor címezed meg a végétől és egy csökkenő ciklusban egyesével kiírod a számokat (de ugye csak annyit, amennyit beleraktál).
Harmadik megoldás - valahogy így (fordító és ellenőrzés nélkül):
bitmaszk és bitshift
char* binaryConv(int szam){
char* binary = "0000|0000|0000|0000";
int bitmask = 0x4000; //16 384
int counter = 0;
while (bitmask > 0){
if (szam & bitmask) binary[counter] = '1'; // ha az adott bit 1, akkor a stringbe is azt helyettesítjük
counter++;
if (counter%4 == 0) counter++; //átléptetni az elválaszókat
bitmask = bitmask >> 1; //bitmaszkot eggyel jobbra tolni
}1) Csak 4 jegyű számokig működik (azaz pontosabban 16384-ig)
2) Amit visszaad ki lehet irattatni printf-fel...
return binary;
} -
válasz
bandi0000
#3449
üzenetére
Nálam is >= a >
pszeudo:while (num>0){
if num >=900 { s+="CM"; num -=900;}
else if num >=500 { s+="D"; num -=500;}
else if num >= 400 { s+="CD"; num -=400;}
else if num >= 100 { s+="C"; num -=100;}
else if num >= 90 { s+="XC"; num -=90;}
else if num >= 50 { s+="L"; num -=50;}
else if num >= 40 { s+="XL"; num -=40;}
else if num >= 10 { s+="X"; num -=10;}
else if num >= 9 { s+="IX"; num -=9;}
else if num >=5 { s+="V"; num -=5;}
else if num >=4 { s+="IX"; num -=4;}
else if num >=1 { s+="I"; num -=1;}
} -
válasz
PumpkinSeed
#3440
üzenetére
Az nem ciklus. A ciklus az amikor egy adott műveletsorozatot többször (több ciklusban) végrehajtasz. Amúgy miért kellene 0-nál nagyobbnak lennie?
egy -4x^2 + 3x - 19 teljesen értelmes másodfokú egyenlet... -
válasz
PumpkinSeed
#3438
üzenetére
Mármint mire kell a ciklus?
if D > 0 { két valós gyök }
else if D = 0 { egy valós gyök }
else { két komplex gyök } -
válasz
PumpkinSeed
#3430
üzenetére
A myFunction a függvény neve (lehetne akár legnagyobbKozosOszto is)...
-
válasz
PumpkinSeed
#3404
üzenetére
TerminateProcess WINAPI a barátod.
Ú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!
- Wacom Bamboo One CTF-430 rajztábla
- AKCIÓ! Asus ROG Flow Z13 +ROG XG RTX 3070- i9 12900H 16GB DDR5 1TB SSD RTX 3050Ti 4GB + RTX 3070 W11
- GYÖNYÖRŰ iPhone XR 64GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3117
- LG 45GS95QX - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- Samsung Galaxy A50 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest




![;]](http://cdn.rios.hu/dl/s/v1.gif)

]




