- Google Pixel topik
- Nem lett arányos a fogyókúra
- Apple iPhone 16 Pro - rutinvizsga
- Csíkszélességben verné az Exynos 2600 a Snapdragon 8 Elite 2-t
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Íme az új Android Auto!
- Samsung Galaxy A55 - új év, régi stratégia
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- iPhone topik
Új hozzászólás Aktív témák
-
kingabo
őstag
-
Ndrew8647
csendes tag
Hello
http://pastebin.com/6804ApVZ itt a file tartalma.
Előre is köszi.. -
Jester01
veterán
Na nem azért nem szabványos
C szabvány, 6.5.2 bekezdés:Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be read only to determine the value to be stored.
This paragraph renders undefined statement expressions such as
i = ++i + 1;Márpedig az adott kódban ilyenek vannak.
Egyébiránt GCC meg is mondja:
ph.c: In function 'main':
ph.c:5: warning: operation on 'b' may be undefined
ph.c:5: warning: operation on 'a' may be undefined
ph.c:10: warning: operation on 'd' may be undefined
ph.c:10: warning: operation on 'c' may be undefined -
kovacsakos91
csendes tag
Köszönöm válaszod! Az első ajánlott könyvre esetleg lenne valami ötleted honnan lehetne beszerezni? Itt találtam meg egyedül, de itt sincs belőle elérhető példány: http://www.antikvarium.hu/ant/book.php?konyv-cim=programozasi-feladatok-ii&ID=124277
-
labuwx
tag
Köszönöm a segítséget.
Az stdlib.h eltüntette a két figyelmeztetést és ekkor beugrott, hogy az malloc() nem operátor, ezért csak függvényből lehet hívni.
A volatile módosítóval lefordult a kód, de még nem próbáltam ki élesben. Ha nem érem el interruptból, akkor a struktúra dekralálásához is odairogatom. -
FehérHolló
veterán
Érzésem szerint miután átadta int** t formában, lehet t[n ][m ] módon turkálni benne, át fogja fordítani *(*(t+n) + m) alakra (az n és m sorrendjében most nem vagyok biztos).
Én egyébként anno egy hasonlót úgy oldottam meg, hogy int* típust vettem át és *(t+M*n+m) módon mászkáltam benne, de az első módon lehet reprezentálni két dimenziós bejárással is.Bár nagyon reggel van...
-
Gyuri16
senior tag
jo, most mar ertem mire gondolsz. fogalmam sincs, hogyan lehetne ezt ertelmesen megtanitani es hogy egyaltalan kell-e. nalam ez ugy volt, hogy egyszer valamiert ramjott, hogy en most programozni akarok, kaptam egy kis segitseget az elejehez, aztan meg egy konyvet, amit olvastam, kodoltam es aztan ment magatol. vannak olyan dolgok amiket nem tanit meg az iskola, egy informatikusnak szabad idejeben is kellene foglalkozni vele, es igy eleg gyorsan kialakulna a fejeben egy modell a programozasrol. mostanaban linkelt valaki ide egy felmerest arrol, hogy az emberek nagy resze nem tud megtanulni programozni, nekik nem biztos, hogy ezt kellene eroltetni (mert ugye sokan mennek mostanaban ugy informatikat tanulni, hogy lovesuk sincs mibe vagnak bele). nekem ez megy, cserebe viszont nem tudok rajzolni, se enekelni es az irodalom sose erdekelt. nem tudom pl miert szebb egy vers a masiknal, miert mondjak egyik festmenyre, hogy mestermu es masikat miert nezik le.
-
Gyuri16
senior tag
hat attol fugg mit ertesz programozason. konkret prograzomozoi allasra szerintem nincs ertelme felkesziteni, hisz az egyetem inkabb az elmeleti tudast adja meg, hogy tudj gondolkozni ilyen modon, aztan a munkahelyen majd kikupalodsz. technologiabol sok van, ezert ezt se erdemes kulon tanitani. programozas tanitasnak szerintem az a celja, hogy az adott problemat (a megoldasat) meg tudd oldani az adott eszkozokkel, ehhez pedig kell egyreszt egy altalanos (nyelvtol fuggetlen) latasmod es egy jo problemamegoldo kepesseg. elsohoz tartozik a most hasznalt prog. paradigmak megertese (strukturalt, oop..), ehhez kapcsolodo tervezes (pl design patterns). nagy szerepuk van ebben az elmeleti tantargyaknak is (formalis nyelvek es automatak, complexity *, algoritmusok, adatstrukturak). problemamegoldo kepesseg pedig az egyetem 5 eve alatt kifejlodik magatol, erre van a sok matek, formalis tantargyak, bizonyitasok. mind ad egy absztrakt modellt, amiben gondolkodni kell, es problemakat amiket ebben meg kell oldani.
ezt mind egy egyetem adja, ezek utan, ha a programozo wannabe nincs olyan szinten, hogy egy cegnel elhelyezkedve barmilyen (ot erdeklo) munkakorbe bele tudjon razodni rovid idon belul, akkor valoszinuleg benne van a hiba.kivancsi vagyok te hogyan gondolod ezt, mit kellene mashogy tanitani. lehet mas az en velemenyen, mert egyre kevesbe akarok egy nagy ceg programozoja lenni, aki heti 40+ oraban irja a kodot mint egy robot. nekem ennel tobb kell. ugy gondolom, hogy a legtobb ilyen programozonak nem is kellene egyetem (legalabbis nem ilyen formaban).
nalunk is probalnak mostanaban beujitani tantargyakat, amik jobban a gyakorlatra keszitenek fel, de egyelore ugy latom, hogy tulmisztifikaljak a dolgok. pl most is volt egy targyam ami elsodlegesen uml modellezest tanitott. elfogadom, hogy ez egy jo dolog, de tanitani egy szemeszteren at azert kicsit megalazo, hisz ezt a par diagramot egy delutan elmagyarazom barkinek aki irt mar 100 sornal hoszabb programot.
* sorry, nem magyarul tanulok, nem tudom mi erre e kifejezes
-
Gyuri16
senior tag
ok, nem szeretnem ujbol megnyitni ezt a vitat, mar kitargyaltuk, de ha visszanezed ezt a topicot lathatod, hogy sok kerdes beolvasassal, sztring kezelessel es pointerekkel (tombokkel) kapcsolatos. ezek mind egyszerubbek imho pascalban. (string mukodnek tombok/pointerek nelkul, beolvasas el van intezve egy readlnvel..), nem beszelve az erthetobb/intuitivabb szintaxisrol (szovakkal kiirt dolgok, for ciklus..)
szoval a te szotarad szerint kezdobaratabb a pascal, en is ezt akartam mondani..
mod: senior tag lettem
tul sokat irok mostanaban ide, pedig tanulnom kellene
-
cellpeti
nagyúr
Az n az összes elem száma,ugye?
Tehát akkor az első 0-tól megy, de miért n-1-ig? A második megy az az első elemtől, ameddig nem az lesz a maximum,vagy mi? Ha w tömb j-edik eleme kisebb mint a w tömb legnagyobb eleme,akkor a j lesz a maximum!? Ha i nem egyenlő max-val,akkor g-be belerakja a w tömb iedik elemét. Majd utánna w tömb i.edik elemét egyenlővé teszi w tömb max elemével és a végén a max lesz a g? -
-
Egy kicsit cellpeti védelmében elmondanám, hogy vannak "érdekes" dolgok a mi egyetemünkön.. Én ugyan gépész szakra járok, de elképzelhetőnek tartom, hogy náluk sem jobb a helyzet. Konkrétan a tanárok fele szarik rá, hogy tanítani is kellene, követelni persze tudnak. A semmiből meg te sem tudod megtanulni. Abban egyetértünk, hogy a gyakorlás a legjobb tanulás, csak ahhoz legalább egyszer nem árt ha látod, hogy mit kell csinálnod, mert anélkül nehéz..
Az meg elmond valamit, hogy az infósok sorra jönnek át gépésznek.. én mondjuk pont a fordítottján gondolkodom, mert a gépészettől már hányni tudnék, és rohadtul nem érdekel az egész, nameg szép túlcsúszóként lassan a gatyám rámegy, hogy ha be akarom fejezni ezt a szartNade off vége..
-
Sk8erPeter
nagyúr
Jó, hát ilyen alapon a Z betű is a specifikációnak megfelelő bemenet, csak érvénytelen szavazatnak számít...
Akkor meg a votes tömböt jól túlindexelted, akkor már szét lehetne bontani...
Mi van, Te is rászoktál a zöld fejre?
(nem kell ám rám haragudni azért, mert mertem szólni én is valamiért, ja, de nyilván csak abba lehet belekötni, amikor én írok meg egy részprogramot itt a topicban...)
-
Sk8erPeter
nagyúr
Ez így van, mint említettem, gyors megoldás volt, és közel sem tökéletes.
Legközelebb majd nem írok a topicba, ha épp nincs túl sok időm rá.
Mondjuk az azért mókás, hogy sokszor előfordul, hogy jó darabig senki nem ír választ egy kezdő kérdésre, viszont ha valaki ad egy lehetséges gyorsmegoldást, akkor arra hirtelen mindenki rárepül, mint a dögkeselyűk.
Inkább valaki írjon akkor egy tökéletes megoldást, és akkor túl is van tárgyalva. Nekem nem volt időm átgondolni, leírtam, ami jött. Bocs.(#1994) Karma: oké, nem húztam én fel magam egyáltalán, csak én is leírtam, ami a szívemet nyomta!
Amúgy nagyon kemény, hogy mennyire amatőr feladaton vitázunk, de azért jó móka.A kezdeti hsz.-em többi részét (ahol leírom, miért nem jó a srác kódja) tovább tartott megírni, mint magát az alatta lévő kódot, amin most vitatkozunk.
(#1995) Gyuri16: igen, közben én is arra gondoltam, hogy tomb1-hez nem feltétlenül lesz jó az strlen. Azt viszont mondtam, hogy zárja le 0-val a ciklus után...
-
Sk8erPeter
nagyúr
"Ez a void atalakit(char[] nev) szignatúra meg üt."
Nem is char[] nev, mert char nev[]Amúgy jobban mutatna char* nev formában, nem? Vagy még mire gondolsz?
Mellesleg nem értem, ha az egész karaktersorozatot át kellene adni a függvénynek átalakítás céljából, akkor azt hogyan akarod megcsinálni anélkül, hogy el ne lenne tárolva? És ne tekintsünk el a +1-es alfeladattól, az is a specifikáció része...
(Bár elég komolytalan specifikáció, az egész megfogalmazás valahogy elég bénácska számomra...)
Pl. hogyan akarod kicserélni a catherine_zeta-jones formájú szöveget Zeta-Jones, Catherine formájúra, ha nem tárolod el a karaktersorozatokat? -
Laca 012
őstag
Hát igen "user error" az van..
Megpróbáltam:root@D945gsejt:/home/laca/flash2# # ./ath_eeprom_tool -r 0xdfc00000 eeprom1.dat
root@D945gsejt:/home/laca/flash2# ls
ath_eeprom_tool ath_eeprom_tool.cElvileg a programnak így kellene kinéznie ha lefut. Nem?:
Vagy lehet tiltva van a read az eepromban?? :
root@D945gsejt:/home/laca/flash/ath_info# ath_info dfc00000
sleep_ctl reg 0000073f reset_ctl reg 00000000
-==Device Information==-
MAC Revision: 5418 (0xca)
Unable to read EEPROM Magic value!Mert akkor gondolom innentől felejtős a project..
Vagy attól még valamit írnia kellene?? -
ArchElf
addikt
Felmentésem volt, csak első órára mentem be az órájára (ha ugyanarról a tanárról van szó).
Egy 10 soros programot is meg tudott úgy írni, hogy elszálljon tőle a fordító. Háromszor játszotta el (program begépelés, fordítás, fordító elszáll) mentés nélkül - szánalmas volt.AE
-
vamzi
senior tag
A feladat szövege:
A vb hangja„KO-RE-A, KO-RE-A” – kiabálta 54 000 boldog futballszurkoló, miután csapatuk a hazai rendezésű világbajnokságon bejutott az elődöntőbe. Izgatottságuk dacára azonban a koreai emberek természetüknél fogva nagyon szervezettek. Például hatalmas, hajókürthöz hasonló hangú trombitákkal szurkoltak a pályán játszó csapatuknak. A szurkolók egy állandó zajszintet szeretnének fenntartani a meccs teljes ideje alatt.
A trombiták sűrített levegővel működnek, azonban ha 2 másodpercig folyamatosan fújják őket, elromlanak. Ezért amikor a trombita hangot ad, minden rendben van, de a trombitahangok szüneteiben a szurkolóknak a „KO-RE-A” kiáltást kell harsogniuk.
A mérkőzés előtt egy szurkolócsoport összegyűl és eldönti a kiáltás mintáját. A minta 0-k és 1-esek sorozata, amelyet a következőképpen értelmezünk: ha a minta 1-es, akkor a trombita kerül megfújásra, ha pedig 0, akkor a „KO-RE-A” kiáltás következik. Annak érdekében, hogy a trombiták nehogy elromoljanak, a minta nem tartalmazhat két egymást követő 1-est.
Ebben a feladatban tehát egy adott, pozitív egész n-re meg kell határozni az ilyen hosszúságú kiáltási mintákat, vagyis azon n bites sorozatok darabszámát, amelyek nem tartalmaznak egymás melletti 1-eseket. Például n = 3 esetén a megoldás 5 (a 000, a 001, a 010, az 100 és az 101 sorozatok elfogadhatóak, míg a 011, az 110 és az 111 nem).
Input
Az első sor a tesztesetek számát tartalmazza. Az első sort követő sorok mindegyike egy-egy tesztesetet ír le. Minden teszteset egy olyan sor, amely egyetlen, 51-nél kisebb egész számot tartalmaz.Output
Minden teszteset kimenete egy olyan sorral kezdődik, amely a „Scenario #i:” szöveget tartalmazza, ahol i a teszteset sorszáma. A tesztesetek sorszámozása 1-től indul. Ezt követően egy újabb sorba kell kiírni az egymás melletti 1-eseket nem tartalmazó n bites sorozatok darabszámát. Minden teszteset kiírását egy üres sorral kell lezárni.********************************************************************************
A megoldásom:
#include <stdio.h>
long long int tomb[100], tesztesetek_szama, i, eredmeny;
int main(){
scanf("%d",&tesztesetek_szama);
for (i=0;i<tesztesetek_szama;i++){
scanf("%d",&tomb[i]);
}
for (i=1;i<=tesztesetek_szama;i++){
eredmeny = ((pow( (1+sqrt(5)),(tomb[i-1]) )) * ( 5+(3*sqrt(5)) ) + ( pow( (1-sqrt(5)),(tomb[i-1]) ) ) * ( 5-(3*sqrt(5)) )) / ( 10*(pow( (2),(tomb[i-1]) )) );
printf("Scenario #%d:\n",i);
printf("%lld\n",eredmeny);
printf("\n");
}
return 0;
}CodeBlocks-ban szépen lefordul és működik, de a szerveren ahol tesztelni kell, elég sok hibát dob, a nagyját mindjárt meg is oldom(remélem) csak van egy kis dolgom. Egyébként itt a hibaüzi:
FordĂtás: bead1.c:2: error: ISO C90 does not support â€�long long’
bead1.c: In function �main’:
bead1.c:6: warning: format �%d’ expects type �int *’, but argument 2 has type �long long int *’
bead1.c:8: warning: format �%d’ expects type �int *’, but argument 2 has type �long long int *’
bead1.c:12: warning: implicit declaration of function �pow’
bead1.c:12: warning: incompatible implicit declaration of built-in function �pow’
bead1.c:12: warning: implicit declaration of function �sqrt’
bead1.c:12: warning: incompatible implicit declaration of built-in function �sqrt’
bead1.c:13: warning: format �%d’ expects type �int’, but argument 2 has type �long long int’
bead1.c:14: warning: ISO C90 does not support the �ll’ printf length modifier
FordĂtási hiba.
Exit status: 3 -
Sk8erPeter
nagyúr
Igen!
Mondjuk az ezután lévő feladat már kicsit komplikáltabb, ehhez már tényleg kell állapotgép, az meg tökölősMondjuk leginkább akkor tökölős, ha ilyen tök általános jellegű regexp felismerőt szeretnék írni, mert akkor nem elég csak azzal foglalkozni, ami a konkrét feladat, de azt hiszem, az általános célút majd inkább máskor.
"Írjon C programot, amely a standard inputon érkező szöveg sorait
megszámolja, és megszámolja azokat a sorokat is amelyekre az alábbi
(ld. 4. feladat) reguláris kifejezes illeszkedik:^[^#]_*(0x)*[0-9]+W6.*[a-z]+.+qqriq(A|a)
A program az eredményt két oktális számként írja ki a standard outputra!
A két számot / jellel válassza el, és a sort sorvégjellel zárja le pl:
123/71A fenti reguláris kifejést Önnek kell értelmeznie és nem kell értelmező
programot készítenie hozzá! Pl. a [A-Z]+ kifejezéshez olyan állapotgépet
kell készítenie, ami felismeri a nagybetűkből álló sorozatot." -
doc
nagyúr
ratapintottal a szomoru lenyegre
az 50-60 eves tanarok akik az ANSI C-n kivul mashoz nem ertenek, tobbnyire nem tudnak es nem is akarnak megbirkozni egy modern kornyezettelmondjuk annyival egyet tudok erteni, hogy a nyelv megtanulasahoz nem kell bonyolult fejlesztokornyezet, minel egyszerubb annal jobb
bar akkor meg megint nem nyero a TC, aminek borzalmas a szerkesztoje, raadasul az idiota Borland-sajatossagokat nevelik a tanulokba
ha en tanitanek C-t, adnek egy sima szovegszerkesztot (vim rulz
de tolem hasznalhatnanak barmilyen normalis szerkesztot) plusz ott a gcc ill egy egyszeru Makefile-t osszehozni is nagyon konnyu
-
Retekegér
MODERÁTOR
A Programozzunk C nyelven! c. könyv egyik példájában van, mindenféle magyarázat nélkül. Illetve a könyvtái függvények leírása között ott a random függvény: egész véletlen szám előállítása 0 és az argumentum-1 között.
Lényeg, hogy nem értettem a 12,34 számmal való szorzást, később következetesen 1,234-el szoroz. -
doc
nagyúr
csatlakozom a kollega urhoz
bar az nem derult ki, hogy konkretan milyen grafikara gondoltal. ha "ablakos" programokat akarsz irni, akkor sima C-hez meg a GTK passzol (amit mondjuk szivbol ruhellek, de mas normalis valasztas nem nagyon van)a Qt meg hatalmas tutisag
lassan meg a kenyerpiritora is portoljak, csillio nyelvbol hasznalhato (akar Java, Python, Perl, Ruby, Haskell, anyamkinja 1.0) -
D.e.x.
csendes tag
-
Bero
aktív tag
Köszönöm, így már működik.
Még egy kérdés, hogy tudom elintézni azt, hogy az elején a program rákérdezzen hány dobást fogunk végezni, és addig kérje be?
Ha egy int-be scanf-el bekérek egy számot, akkor a getline nem is fut le.Nagyon szégyelem magam, túlságosan is kezdő vagyok hozzá, de remélem azért érthetően fogalmaztam a kérdést.
Iskolai sablon a getline, tanárok szerint minden programhoz használnunk kell, de az igazság az hogy jobbat én nem is tudok varázsolni.
-
Retekegér
MODERÁTOR
Okés, kicsit figyelmetlen voltam és rossz helyre raktam be a return-t, így már műxik:
#include <stdio.h>
#include <stdlib.h>
#define SZAM 12
main ()
{
int i, x;
int tomb[SZAM]={4,3,6,7,1,0,9,2,4,8,5,7};
int ismetles=1;
printf("12 elemu tomb rendezese\n");
while (ismetles)
{
ismetles=0;
for (i=0; i<SZAM-1; i++)
{
if (tomb[i]>tomb[i+1])
{
x=tomb[i];
tomb[i]=tomb[i+1];
tomb[i+1]=x;
ismetles=1;
}
}
}
for (i=0; i<SZAM; i++)
{
printf("A sorba rendezett tomb: %d\n", tomb[i]);
}
printf("\n");
system("pause");
return 0;
}Thx a segítségért!
-
Retekegér
MODERÁTOR
Akkor talán máshol lesz a bibi, ennek a tömbnek az elemeit szeretném kiíratni:
#include <stdio.h>
#include <stdlib.h>
#define SZAM 12
main ()
{
int i, x;
int tomb[SZAM]={4,3,6,7,1,0,9,2,4,8,5,7};
int ismetles=1;
printf("12 elemu tomb rendezese\n");
while (ismetles)
{
ismetles=0;
for (i=0; i<SZAM-1; i++)
{
if (tomb[i]>tomb[i+1])
{
x=tomb[i];
tomb[i]=tomb[i+1];
tomb[i+1]=x;
ismetles=1;
}
}
}
printf("A sorba rendezett tomb: %d\n", tomb[i]);
system("pause");
return 0;
} -
3man
csendes tag
Ezt fejtettem ki lentebb, csak valami miatt nem erti, miert akarunk mi raeroltetni struct-ot, mikor o csak egy char * -ot akar hasznalni.
Ezert jobb lenne c++ ban kezdeni, mert kisse mas es celravezetobb gondolkodasmod alakul ki.
Ott letrehozhatsz egy olyan osztalyt, amit te a "char *" helyett fogsz MINDENUTT hasznalni. Ez letarolhatja az aktualis meretet a stringnek, lehet operatorokat letrehozni, amelyek segitsegevel ugyan ugy kezelheted a valtozot, mintha char * lenne. Amikor a program a data [index] utasitashoz er, akkor meghivodik az osztaly [] operatora, amit te barhogy megirhatsz. Ellenorizheted, hogy az index nem negativ, es az eppen aktualis string mereten belul van vagy nem. Messze hatekonyabb lesz a program, es biztonsagosabb.De mar megint OFF voltam.
-
Sk8erPeter
nagyúr
Mondjuk azt megértem, hogy meló mellett már rohadtul nincs kedved még este leülni tanulni, amikor nap végére úgy érzed magad, mint akinek kiszívták az agyát...
(Legalábbis amikor én sokat melóztam egymás után (mondjuk igaz, a melónak köze nem volt az informatikához), akkor kábé ilyen voltam nap végére...
)
Egyelőre úgy vagyok vele, hogy elvégzem a BSc-t, és mindenképp kipróbálom magam a munkaerőpiacon, aztán majd meglátom, kell-e az MSc, vagy sem. Vagy a legjobb lenne, ha munkáltató támogatná majd egy kis ott töltött idő után a továbbtanulásomatAmúgy visszatérve C-re, nekem az a bajom a "dolgok mögé nézéssel", hogy egyszerűen nincs rá időm a rengeteg tantárgy mellett. Tök szívesen gyakorolnék is rengeteget programozásból, meg foglalkoznék még sok egyébbel, de valahogy képtelen vagyok BME mellett beosztani az időmet úgy, hogy ALAPOSAN, és ne csak gyorsan, felületesen tanuljak meg mindent...
Ilyen szempontból igencsak hátrányos szerintem ez a tempó, amit itt diktálnak. Persze a májereknek, akiknek a tudást már középsuliban a fejükbe verték, jóval könnyebb dolga van.
Nekem a középsuli konkrétan a szak szempontjából szart se ért (humán tagozat
).
-
Sk8erPeter
nagyúr
Köszi a magyarázatot, ezt mondjuk biztos jobban meg fogom érteni, amikor a C++-t tanulom.
Te egyébként hogyan tanultad meg ilyen alaposan a nyelve(ke)t? Mert én mondjuk attól függetlenül, hogy mondjuk meg tudok oldani pár programot (ha meg tudok), a hátterével ilyen szépen nem vagyok tisztában, csak úgy nagyjából...
Amúgy programozóként is dolgozol, hogy ilyen frissen élnek az emlékek?
(ha nem baj, hogy kérdezem) Persze gondolom az évek meg a tapasztalat... Ja, de most jut eszembe, hogy írtad, hogy "Tudom hogy VIK-en mi a helyzet, én is informatikus-hallgató vagyok (félig)", akkor még mindig BME-s vagy? Hogy érted, hogy félig informatikus hallgató?
-
Sk8erPeter
nagyúr
Gondolkoztam még ezen, hogy miért lesz átláthatóbb a függvény, ha egyetlen return van, de nem látom be, miért is lenne ez jó. Szerintem azonnal áttekinthetővé válik a dolog, hogy ha valami feltétel, amire várunk, már az elején teljesül, akkor ne is folytassa tovább a vizsgálgatást, ez gondolom akár gyorsaság szempontjából sem lehet elhanyagolható. Jester01-gyel értek egyet, sokkal kevésbé lesz átlátható a függvény a sok if-else elágazás miatt. A tanított anyagokban is mindenhol akár több return utasítás is van bizonyos feltételek teljesülése esetén.
De most tényleg, miért lenne baj, ha több return van?
___________________
"Auto-pointereknél nem para a felszabadítás több return esetén, de pl. CleanupStacknél sokkal bonyolultabb a memóriát karban tartani."
Ebből sokat nem értettem, ezt röviden el tudod magyarázni? -
Én tisztáznám magam,de azzal is belemártózok.Ezt a programot se én írtam,de mivel nem tanultam ilyesmit egyik havernak meg volt ilyen,így elkértem.
Azt is tudjátok most tanulok,így előbb megcsinálom később megértem alapon megy,mert fordítva már nehéz lesz ekkora anyagnál.Köszi,hogy szóltok ilyenért,mert ebből is tanulok.
-
Sk8erPeter
nagyúr
Dehát ez már kapásból nem jó, ha 0-t vagy 1-et adsz be a függvénynek, hiszen ezekre is azt fogja mondani a függvény, hogy prím, és nem tételezheted fel, hogy nem fog a felhasználó beadni 0-t vagy 1-et... És ugye a 0 vagy az 1 nagyon nem prímszám...
Pontosan ezen csodálkoztam a Prog honlapján fenn lévő MINTAmegoldásoknál, hogy rossz a prímtesztelő függvény... ---> [link]
Itt így csinálták meg a függvényt:
int prime(int a){
int i,max=(int)(sqrt(a)+1);
for(i=2;i<a;i++)if(a%i==0)return 0;
return 1;
}
És ez is rohadtul mindig 1-et fog visszaadni eredményül, ha 0 vagy 1 a számunk... Ja, és még egyet igencsak elbaszarintottak benne: létrehozták a max változót, de sehol sem használják fel...
Tőlünk ugye elvárják a hibátlan megoldásokat, de ők a MINTAként feltett ZH-ban két ilyen üvöltő hibát elkövethetnek. Kicsit gáz. -
-
Jester01
veterán
Más konvenciók meg pont azt mondják, hogy nyugodtan használj annyi returnt amennyit akarsz, az átláthatóság miatt
Ugyanis adott esetben sok if/else ág lenne illetve segédváltozók és/vagy ciklus lefutás után a feltétel újratesztelése is szükséges lehet.
int find(int needle, int* haystack, int size)
{
int result = -1;
if (haystack == NULL)
{
fputs("haystack NULL", stderr);
} else {
for(int i = 0; i < size; i++)
{
if (haystack[i] == needle)
{
result = i;
break;
}
}
}
return result;
}-vagy-
int find(int needle, int* haystack, int size)
{
if (haystack == NULL)
{
fputs("haystack NULL", stderr);
return -1;
}
for(int i = 0; i < size; i++)
{
if (haystack[i] == needle)
{
return i;
}
}
return -1;
}Az első esetben hiába van 1 return a függvény végén, ahhoz, hogy megtudd mit ad vissza ígyis-úgyis végig kell nézni a függvényt, hogy hol lesz az a változó beállítva. Akkor meg pont ugyanolyan egyszerű a return utasításokat megkeresni. Ha pedig mondjuk két ciklus van egymásbaágyazva akkor még több macera kijutni belőlük (mivel ugye goto-t sem használunk
)
-
Sk8erPeter
nagyúr
"a függvényeknek csak egyetlen returnje legyen"
Na jó, de mondjuk egy prímtesztelő függvénynél pl. azt szeretnénk, hogy 1-gyel térjen vissza, ha egy szám prím, 0-val, ha nem az, hát ott kapásból a 0-nál vagy 1-nél 0-val kell, hogy visszatérjen, tehát ott már lesz egy return 0; , ha viszont az jött ki, hogy a szám prím, akkor ugye return 1;. És akkor már két return van a függvénybenVagy nem így értetted? Mert ez szerintem még bőven átlátható, és erre az átláthatóság nem jó érv szerintem...
Ezek szerint annyira neked sem jöttek be az órái.
Az mondjuk valóban nagy előny, ha előtte jól toltad legalább Pascalban, mert akkor csak át kell szokni a másik nyelv szintaktikájára. Hát nekem nem volt túl egyszerű a 0-ról megtanulni programozni, ilyen tanárokkal...
Mondjuk most kifogtunk egy nagyon jó gyakvezt (Lengyel László, hátha ismered), aki végre úgy magyaráz, hogy az követhető, és egyáltalán nem unalmas, ráadásul bevon mindenkit a feladatmegoldásba, nem úgy ülsz ott órán, hogy mikor lesz már végre vége a gyaknak. Az nagy előny.
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mielőbb díjat rakatnának a görögök az olcsó csomagokra az EU-ban
- Sega, Nintendo - retro konzolok
- Sorozatok
- Hyundai, Kia topik
- Mesterséges intelligencia topik
- Google Pixel topik
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Nem lett arányos a fogyókúra
- OLED TV topic
- Airsoft
- További aktív témák...
- Szép Hp Pavilion 15-eg Kis Gamer Laptop 15,6" -45% Bivaly i7-1165G7 16/512G FHD IPS Iris Xe
- EJJ! Dell Latitude 7330 -65% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i5-1245U 16/512 FHD IRIS Xe
- i5 10500/ RX6600XT/32GB DDR4/ 512GB m.2 alapú konfig/ garancia/ ingyen foxpost
- Szép Dell Latitude 7320 -60% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i7-1185G7 32/512 FHD IRIS Xe
- LG NanoCell 50NANO759PR
- Telefon felvásárlás!! Samsung Galaxy S25, Samsung Galaxy S25 Plus, Samsung Galaxy S25 Ultra
- Csere-Beszámítás! Custom vizes számítógép játékra! I7 12700KF / RTX 3090 / 32GB DDR5 / 1TB SSD
- Azonnali készpénzes AMD Ryzen 1xxx 2xxx 3xxx 5xxx processzor felvásárlás személyesen / csomagküldés
- HP Rack szerverek és tartozékok egyben vagy külön-külön
- Bomba ár! Dell Latitude E7270 - i7-6GEN I 8GB I 256GB SSD I 12,5" FHD I HDMI I CAM I W10 I Gari!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest