Fontos linkek a C-ről:
Prog.hu-s cikkek
Prog.hu-s tudástár témák
The C Library Reference Guide
Standard C
Wikipedia
C Tutorial
Programming in C
Bevezetés a C programozási nyelvbe
Gyorskeresés
Legfrissebb anyagok
- Bemutató Spyra: akkus, nagynyomású, automata vízipuska
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
Általános témák
LOGOUT.hu témák
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [sziku69:] Szólánc.
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] Gurulunk, WAZE?!
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] [Szevam:] Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- [Re:] [ldave:] New Game Blitz - 2024
- [Re:] ZUK Z2 - Kicsi a bors, de erős!
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
GAMEPOD.hu témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
shev7
veterán
Bsc kepzesben mar nincs formalis nyelvek ugye? ugy egyszerubb lenne ilyet lekodolni. Bar most sem nehez
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
cucka
addikt
Elte prog. informatikus bsc-n van formális nyelvek, meglepően hasznos tantárgy.
shev7
veterán
en meg bme-en hallgattam a bsc-s szornyszulott bevezetese elott. Azon kevesek egyike voltam aki ertekelte es szerette a targyat. Szerintem is nagyon hasznos volt. Peldaul regexp elemzo automatat sokkal konnyebb irni par formalis nyelvek eloadas utan
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Karma
félisten
A BSc-s borzalom bevezetése után is megmaradt a formális nyelvek, csak átnevezték Nyelvek és automatákra, és áttették az MSc képzés első évébe. Nomeg Friedl Katalin tartja.
[ Szerkesztve ]
“All nothings are not equal.”
bpx
őstag
BSc-n nincs, MSc-n 1. félév: Formális módszerek, 2. félév: Nyelvek és automaták (tavaszi kezdéssel, őszi kezdéssel nyilván fordítva)
fess
őstag
sziasztok
valaki használja a sima c-t win7 alatt? nekem nem engedi kitenni teljes méretbe,ami még nem lenne olyan nagy probléma,de sok karakterpl.() máshol ismer fel mint ahol valójában van a billentyűzeten,de párat fel sem ismer pl.[]>< ez mitől lehet?
cucka
addikt
Most akkor a c fordítót szeretnéd kitenni teljes méretbe?
bpx
őstag
1. felteszem valamilyen konzol alkalmazást akarsz teljes méretbe tenni, ekkor: [link]
2. angol-magyar billentyűzet?
Karma
félisten
Ezt a módszert részemről nagyon nem ajánlom. Elég rusnya dolog egy fos öreg DOS-os móka miatt lehülyíteni a videodrivert... Viszont DOSBOX-ban lehet, hogy jobban futna.
Milyen iskola az, ahol még mindig Turbo C-t warezolnak?
“All nothings are not equal.”
doc
nagyúr
gondolom epp ez az, hogy nem warez, hanem a TC 3.1 legalisan es ingyenesen hasznalhato
a dosbox nem rossz otlet
Karma
félisten
Hádde a MinGW/Code:locks/Dev-C++/VS Express/akármiért se kell fizetni.
Ezért nem értem, hogy miért ragaszkodnak ennyira a múlthoz.
Talán mert a tanároknak tanulni kéne hozzá?
fess: Alt+Entert próbáltál már nyomni a C ablakában?
[ Szerkesztve ]
“All nothings are not equal.”
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 kornyezettel
mondjuk 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
bpx
őstag
igazából csak azért linkeltem, mert le van írva, hogy miért nem megy
a megoldásnál ismertetett szintű "gányolást" nem hinném hogy bárki elkövetné
viszont a dosbox tényleg működőképes alternatíva
fess
őstag
persze hogy próbáltam,de azt írja ki,hogy az alkalmazás nem támogatja,de a suliban pedig úgy használjuk.fogalmam sincs pontosan milyen progi,csak kaptunk 1 bcsmall.exe-t h ezzel gyakoroljunk. az egész 1,2MB
Sk8erPeter
nagyúr
Köszi, teljesen tiszta.
Így nem túl nehéz generálni megfelelő adatfolyamot...
Pl.:
#include <stdio.h>
int main()
{
int i;
for(i=0;i<181;i++)
printf("Kiirok valamit\n");
printf("a__0x0x56W6AafqqriqA\n");
printf("a__0x56W6AafqqriqA\n");
printf("a_0x0x6W6Aafqqriqa\n");
return(0);
}
Ennyi, működik.
------------------
(#1800) -Zeratul-:
"bme prog alap 1? "
Ez már prog 2. Amúgy vicces kissé, hogy prog 2-t, ami elvileg színtiszta C++, úgy kezdjük, hogy 3 gyakorlat és 3 szoftlab csak sima C-ről szól. Első szoftlabon kábé azt vettük át megint, hogy mi az a printf(), azt hittem, eldobom az agyam... De szerencsére csak egy egyperces novella volt.
Ja, az állapotgépes feladatnak most kezdek hozzá, elsőre nem tűnik olyan egyszerű feladatnak... (bár gondolom nem is kell belehalni)
[ Szerkesztve ]
Sk8erPeter
Karma
félisten
Ez egyébként ahhoz a hftestes hülyeséghez kell, nem?
Tényleg ez a megoldás, amit írtál, egy for ciklus és szevasz.
Én is így csináltam.
[ Szerkesztve ]
“All nothings are not equal.”
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ős Mondjuk 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/71
A 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."
Sk8erPeter
Karma
félisten
Fincsi feladat, tiszta nosztalgia
“All nothings are not equal.”
shev7
veterán
Hat determinisztikus allapotautomatat nem annyira nehez rajzolni hozza. Ha az megvan onnan nem nehez. De nem lovom le a poent
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Karma
félisten
Megbuktam NyA-ból, de azért az automaták még mennek. Mi lenne a poén?
Azontúl hogy így a legkönnyebb megoldani Akár privátban is, ha olyan
“All nothings are not equal.”
shev7
veterán
semmi extra. Csak mivel Sk8erPeter nem kert segitseget (vagy legalabbis nem lattam, hogy segitseget kert volna) gondoltam nem veszem el tole a felfedezes oromet, es nem irom le meg nagy vonalakban sem, hogy hogyan csinalnam
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Sk8erPeter
nagyúr
Akkor lődd le a poént, légyszi! Írd le nagyvonalakban, kíváncsi vagyok!
Én viszonylag egyszerű megoldásra gondoltam, hogy ellenőrizgetem, hogy megfelel-e a reguláris kifejezéseknek, semmiféle "determinisztikus állapotautomatára" nem gondoltam, főleg, hogy egyelőre azt se tudom, mi az (legalábbis - tudtommal - még eddig egy tárgyból se vettük).
Sk8erPeter
harry
veterán
Szintén prog2, jó hftest
Nekem is ez jön, a 6. Majd gondolom fel kéne rajzolni az állapotgépet, aztán annak megfelelően kéne generálni a mindenféle karaktereket... a 4. feladatban amúgy tényleg elég volt csak kézzel befirkálni illeszkedő sorokat.
Theoretically, this damn thing oughta work now.
Gyuri16
senior tag
nem tudom mire gondolt shev7, de en kb igy csinalnam:
eloszor papirra lerajzolnam a nem determinisztikus automatat (NFA). ebbol lehet ekvivalens determinisztikusat csinalni (DFA), mivel a DFA es NFA ereje ugyanakkora. ez kicsit maceras, de meg lehet csinalni. ha ez megvan akkor az atmeneti fuggvenyt valami ertelmes adatstrukturaba rakod, es onnan mar csak szimulalod a DFA-t.
ha nem volt meg formalis nyelvek es automatak tantargyad akkor vagy kitalalsz valamilyen sajat modszert, vagy valahol elolvasod mik a fenti dolgok (DFA es NFA a legegyszerubb modell, ugyhogy a tankonyvek elejen szok lenni)
Én viszonylag egyszerű megoldásra gondoltam, hogy ellenőrizgetem, hogy megfelel-e a reguláris kifejezéseknek
ezzel csak az a gond, hogy nem olyan egyszeru mint hangzik
Nem vagyok egoista, csak uborkagyalu!
Korcsii
őstag
fogadjuk valami kezdőkre jellemző hiba, de akkor sem tudok rájönni:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main (void) {
// az elejét inkább nem idézem be
printf("Kérek egy évfolyamot: ");
short int evfolyam;
scanf("%d",&evfolyam);
printf("Kérek egy osztályt: ");
char osztaly;
scanf("%c",&osztaly);
printf("%d %c\n", evfolyam, osztaly);
}
namármost ha az evfolyam-ot nem kérem be, akkor ok minden, kiírja az osztályt (még ha az évfolyamnak adok kezdőértéket, akkor is)... de így egyszerűen átugorja a második scanf-et, és nem tudom, hogy mi lehet a hiba ha megcserélem a kettőt, akkor mind a kettőt bekéri, de mire a kiíráshoz jut, elfelejti az osztály... ennyire benéztem volna valamit?
előre is kösz, mert én már felrobbanok
Sk8erPeter
nagyúr
Nem néztem át a feladatot, de sima C-ben a függvény legelején (!) illik deklarálni a különböző változókat (pl. short int evfolyam; illetve char osztaly; a legelejére menjen), különben problémák lehetnek belőle (még ha a fordító nem is szól, mert esetleg C++ fordító).
Sk8erPeter
Sk8erPeter
nagyúr
Hű, na most ez így már tényleg bonyolultabbnak hangzik, mint elsőre gondoltam...de majd végiggondolom. Szerintem holnap megpróbálom megcsinálni, ma már nincs agyam hozzá.
Csak azért gondoltam viszonylag egyszerűnek, mert nem egy általános jellegű regexp ellenőrzőt szeretnék készíteni, hanem csupán a feladatnak megfelelőt. De meglátjuk, lehet, hogy sok cumi lesz vele...
Ja, egyébként köszi az ötleteket, majd utánanézek az általad írt dolgoknak.
Formális nyelvek már nincs BSc-n.
(#1823) harry: szintén zenész? Nem is tudtam, hogy Te is ugyanoda jársz.
[ Szerkesztve ]
Sk8erPeter
Korcsii
őstag
valóban, igazad van, most át is pakoltam, viszont a helyzet nem változott
Dev-C++ a fordító egyébként...
szerk:
ui: én meg ugyanoda szeretnék...
[ Szerkesztve ]
Karma
félisten
Szerintem a helyzet az, hogy a scanf benne hagyja az újsor karaktert a standard input pufferében, így azt simán beolvassa a következő lépésben. Debuggerrel lépésenként haladva a kódban hamar fény derülne a turpisságra.
“All nothings are not equal.”
bpx
őstag
scanf után fflush(stdin); és jó lesz
harry
veterán
Ellenben nekünk erre azt mondták, hogy nincs hivatalosan implementálva, avagy inkább ne használjuk.
Theoretically, this damn thing oughta work now.
Karma
félisten
Igy van, nem szabvanyos, de mukodik altalaban.
Vagy ezzel hackelsz, vagy lekezeled a sorvege karaktert puszta kezzel, jol.
“All nothings are not equal.”
egyjotakaro2
csendes tag
Helló. Kellene nekem egy profi programozó aki hobbyból elvállalna egy mmorpg oldal programozását. Az oldalmotor meg van (php,képek,sql....) Csak ki kellene javítani a bug-kat és hozzá írni egy pár frissítést.Kiemelném, hogy csak hobbyból és szórakozásból vállalja el mert sajna fizetni nem tudok! Várom a jelentkezőket. És a többit P.Ü-ben megbeszéljük.
Korcsii
őstag
óhjaj
a másidok scanf-ben a %c elé betettem egy \n-t és már működik is... nambaj, a saját hibájából tanul az ember...
kösz az ötletet!
harry
veterán
Az még ok, hogy nincs rá pénz, na de így keresni, hogy ingyen kéne egy profi programozó... Akkor legalább úgy írnád le, hogy segítséget szeretnétek kérni, vannak kérdéseitek, stb., nem pedig ingyen valaki nyakába varrni egy ilyen melót. Ráadásul más bugjai után turkálni meg foltozni, hát... Amúgy meg tán inkább php topic.
Theoretically, this damn thing oughta work now.
egyjotakaro2
csendes tag
akkor hogy mondjam? Na van egy oldalmotor és abban kellene segítenie valakinek... mert egyedül nem megy.
vamzi
őstag
Sziasztok. Kis típus hibával küszködök:
A bemenet első sora jelzi a tesztesetek számát, a többi maga a teszteset.
#include <stdio.h>
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("%d\n",eredmeny);
printf("\n");
}
return 0;
}
Bemenetnet:
Kimenet(hibás):
Helyes megoldás:
5
10
144
144
20
17711
17711
30
2178309
2178309
40
267914296
267914296
50
-2147483648
32951280099
Próbáltam már több féle tipust is, de mindegyikkel így jártam.
A sorok kicsit elcsúsztak, de szerintem még érthető. Az az 5ös a bemeneten ugyebár a tesztesetek száma. Az eredményben egyébként ez a képlet van lekódolva.
[ Szerkesztve ]
Karma
félisten
Pedig elég triviális, hogy integer túlcsordulás történik.
A long int 32 bites, aminek az értékkészlete -2,147,483,648 -> +2,147,483,647.
unsigned long int esetében meg circa 4 milliárd.
Használj 64 bites long long intet. (infó)
[ Szerkesztve ]
“All nothings are not equal.”
vamzi
őstag
Igen, ezzel tisztában vagyok, csak nem tudom megoldani.
A long long int-tel változik a helyzet, de a kimenet(50-nél): -1408458269 a 32951280099 helyett.
bpx
őstag
a printfben %d helyett %lld-vel elvileg mennie kell ( ha az eredmenyt átírtad long long típusúra)
[ Szerkesztve ]
vamzi
őstag
igazad van, így már nekem jó, csak a tesztelő nem fogadja el, mert az iso c90-es szabvány nem támogatja a long long int-et. Mit tudnék tenni? A long int kevés neki, a long long-ot meg nem támogatja a fordító(tesztelő).
Karma
félisten
Mi a feladat egyébként?
Csak mert lehet, hogy vannak egyszerűbb, praktikus megoldások is
Lásd korábban a regexpnek megfelelő szövegek kiíratását.
“All nothings are not equal.”
vamzi
őstag
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
[ Szerkesztve ]
sghc_toma
senior tag
a pow amugy is double ertekekkel dolgozik, miert nem hagyod meg annak?
plusz egy tipp: a konstansokat ne szamoltasd mindig ujra szerencsetlen CPU-val.. illetve 2^n szamolasara (int esetben) szerintem az 1 << n sokkal szebb, mint pow-ot hivogatni..
in asm we trust
Karma
félisten
Én még mindig nem látom, hogy miért ne csinálhatnál egy 50 elemű táblázatot a végeredménnyel
sghc_toma: Szerintem a double pontosságával lehetnek gondok...
Bár nem számoltam utána.
“All nothings are not equal.”
sghc_toma
senior tag
de a pow igyis-ugyis double-lel dolgozik, szoval akkor is megvan a kockazat, ha a vegen cast-ol integer-re..
in asm we trust
Karma
félisten
Tudom, meg belegondolva a sok gyök5 se segít sokat. Ennek értelmében jogos, double eredmény a végén megfelelően formázva is ugyanezt a jó eredményt kellene, hogy adja
“All nothings are not equal.”
vamzi
őstag
A hatványozás szintaktikáját ki tudnád fejteni, mert nem ismerem azt a módját, csak a pow-ot. de ha jól értem akkor 5^3 --> 5 << 3 igaz?
bocs, ha most hülyeséget írtam.
vamzi
őstag
Kipróbálom ezt a megoldást is, bár ez inkább csak időhúzás lesz, mert 2 hét múlva változtatnak a teszteseteken.
vamzi
őstag
átcsiszolom a tipusokat, a gyökvonást pedig kiteszem egy változóba, hogy csak egyszer kelljen számolnia.
bocs, a sok hsz-ért, nem szokásom, csak már fáradt vagyok, hogy mindet szépen egybe írjam
[ Szerkesztve ]
Téma tudnivalók
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Mai Hardverapró hirdetések
prémium kategóriában
- Krómozott előlapos Jura Z5 automata kávéfőző beépített profi cappuccino fejjel
- Eladó teljesen új, bontatlan Nespresso Essenza mini piros színben
- Motorola Razr 40 - 8GB 256GB DualSIM Sage Green - Bontatlan - Garanciális
- Canon Ixus 285 HS
- Új! Bontatlan! Samsung 8TB 2.5 SSD eladó! Országos Szállítással