- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Brogyi: CTEK akkumulátor töltő és másolatai
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- btz: Internet fejlesztés országosan!
- vrob: Az IBM PC és a játékok a 80-as években
- Tomasz72: Ventilátor upgrade
- MasterDeeJay: H110-es lapban 10.gen Comet Lake működhet?
-
LOGOUT
Új hozzászólás Aktív témák
-
Protezis
őstag
Ezesetben tényleg így a célravezetőbb.
Asszem az egyetlen különbség a struct és a class között, hogy a class adattagjai alapértelmezés szerint private elérésűek, a structnál pedig public.
Nem csak ez. Structból származtatni sem lehet.
Mod: Állati az aláírásod
[Szerkesztve] -
c4-eXp
aktív tag
válasz
Protezis #1196 üzenetére
Köszi a linket, de közben rájöttem, hogy hülye vagyok, és sokkal egyszerűbben is meg tudom csinálni a dolgot. Az a lényeg, hogy ez a rendezés baromság volt, mivel nekem csak a legkisebb val értékű elem kell, azért pedig felesleges rendezni az egész vektort. Azt fogom csinálni, hogy egy iterátorral bejárom a vektort, közben egy egyszerű minkiválasztással megkeresem a legkisebb val értékű elemet, a hozzá tartozó iterátort pedig eltárolom.
Egyébként c++-ban én is úgy tudom, hogy lehet fv-e a structnak. Asszem az egyetlen különbség a struct és a class között, hogy a class adattagjai alapértelmezés szerint private elérésűek, a structnál pedig public. -
c4-eXp
aktív tag
Huh, vágja itt valaki a c++ stl-t? Mert kéne egy kis segítség. Én még csak most kezdtem el tanulgatni, de egyből lenne egy kérdésem. Szóval tegyük fel, hogy van egy ilyen struktúrám:
struct valami
{
int val;
string info;
};
Na akkor ugye ebből egyszerűen létre lehet hozni mondjuk egy 100 elemű vektort:vector<valami> v(100);
És akkor az lenne a kérdésem, hogy ennek a vektornak az elemeit hogyan lehetne rendezni a ''val'' változó értéke alapján? Mert ugye ha mondjuk egy sima intekből álló vektort csinálok, akkor egyszerű:sort(v.begin(),v.end());
Viszont struct esetén nem tudom, hogy hogyan kell egy adott adattag alapján rendezni. Bocs, ha nagyon láma kérdés, de örülnék, ha valaki segítene. -
9CS
senior tag
Lehetséges PHP-nak programból küldeni olyan értékeket amiket egyébként post-al kéne megkapnia? Visual C++ 2005-öt öt kezdtem el nézegetni és akadt is, egy jó tanuló feladat, viszont a PHP-vel csak egy kicsi foglalkoztam eddig és az MS C++ is teljesen új nekem. Olyasmire gondolok, mint itt a PH belépés, csak programból. Azért lenne fontos hogy ne az oldalon kelljen belépni, mert utána pár automatikus műveletet kéne csinálnia a kis proginak, de nem nagyon tudok elindulni. Látom van browser komponens, de nem tudom, hogy kéne rávenni, hogy elküldje a megfelelő értékeket a PHP-nak. Miként megy el a PHP-nak a post? Lehet ezt elküldeni neki egyben, mint itt a PH!- a listázás például? (http://prohardver.hu/f.php?mod=40&id=6192) Működne ez bejelentkezéssel is?
Előre is köszönöm az útmutató segítségeket. Remélem sikerült érthetően leírni mire is gondoltam. -
Bigya
őstag
Sziasztok!
Tud valaki nekem segíteni? Szükségem lenne valamilyen bugyuta java programra.
NetBeans-ben kellene megírnom, de kuka vagyok hozzá. Félévi aláírásom múlna rajta (és nem kellne csúsztatnom több tárgyat).
Ilyen hogy mittomén, sakktábla rajzoló, ahol megadod, hogy X*Y méretű legyen (esetleg jSpinner segítségével) és gombnyomra rajzolja.
Ha valakinek van készen ilyen kis progocska (vagy valami Samlpe), küldje el legyen szíves.
KÖszönöm! -
gurgo
tag
Sziasztok!
Nemrég kezdtem el foglalkozni C++ programozással, de most nem tudok mozdulni:
Találtam pár kisebb érdekes példaprogramot, de nem tudom lefordítani őket a rengeteg hiányzó .h fájl miatt.
Azt szeretném tudni, hogy a hiányzó fájlok ( .h .lib ...) elérhetőek-e valahol?
Konkrétabban: Visual C++ 2005 express-e használok (lehet ez a baj?) . Egy levlistán találtam rövid cpp forráskódot, aminek a működésérét szeretném látni. Új project, source, beszúrom a forrást, compile. Error ''ilyen.h'' hiányzik. Google, letöltöm, compile: ''olyan.h'' hiányzik.
Találtam pár angol site-ot, ahol html-ben fennt vannak a hiányzó fájlok(azok biztos amelyikekre futott erőm kimásolni html-ből) de egyenként html-ből .h fájlt létrehozni 20-30 fájlnál már nem túl kényelmes.
Példák a hiányzó header fájlokra: windef.h, poppack.h, winsock2.h meg ilyenek. Kevés tapasztalotommal úgy gondolom, ezek jobbára egységes fájlok, és valamilyen módon eléhetőnek kell lenniük.
Ez az egységesség dolog ezért merült fel bennem, mert akkor hagytam abba a .h fájlok egyenkénti letöltését, amikor a compiler már azokban is szintaktikai hibákat talált. Példa:
microsoft visual studio 8\vc\include\winnt.h(1640) : error C2146: syntax error : missing ';' before identifier 'ContextRecord'
typedef struct _EXCEPTION_POINTERS
{
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord; // <= ez az a sor
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
Mégegyszer: hogy lehet beszerezni a fordításhoz szükséges .h fájlokat, tömegesen, azért, hogy egy program azonnal leforduljon, ne a hiányzó fájlokkal kelljen küszködni, és főleg ne azzal, hogy a letöltött header fájl is hibás...
(megjegyzem a problémát előhívó forráskód-hoz nem kell (nem is ismerem a szakszavakat) egyedi, külön a progihoz írt külön egyéb fájl)
Előre is köszönöm a válaszokat.
[Szerkesztve] -
Jester01
veterán
válasz
emitter #1185 üzenetére
A Sleep-et vedd ki, az jelképezte a programot (''Do other useful work here'')
A DeleteTimerQueue pedig kilépéskor kell, amikor már nem akarod, hogy fusson a másik szál.
MOD: majd nem használhatsz printf-et az idő kiírásnál, mert elállítja a kurzorpozíciót.
Helyette pl. a WriteConsoleOutput függvényt használhatod.
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1182 üzenetére
A FillConsoleOutputCharacter()-nek hogyan tudom megmondani, h mettől meddig töröljön (azaz '' ''-t írjon)?
Úgy gondoltam, hogy híváskor megadom a kezdő és a végsorokat paraméterként, és akkor csak a két adott sor közti részt törli.
A kezdőpozicionálás könnyű, de azt nem tudom megcsinálni, h csak egy adott sorig töröljön
Gondolom arra nem szép apellálni, hogy csak 80 karakter széles a képernyőenélkül viszont hogyan?
-
Jester01
veterán
válasz
emitter #1181 üzenetére
Fejleszted? Király
Sajna neked egy getch()-t tartalmazó ciklusod van, ami bizonytalan ideig blokkolja a futási szálat, szóval folyamatos kiírást csak másik szálon tudsz csinálni. Szerencsére ez nem olyan nehéz [link] Az eventes dolog az neked nem kell. Gyakorlatilag csak egy CreateTimerQueue() és egy CreateTimerQueueTimer hívás, ahol ez utóbbinak megadod a függvény címét ami kiírja az időt. Mivel ez másik szálon fut az a legegyszerűbb, ha kap egy külön helyet a képernyőn amit csak ő használ így nem akad össze a fő szállal.
Amúgy a kódod kis módosítással nekem működik. A time(&t1) hívás a diff előtt inkább egy t1 = t2 értékadás. Az 500000 meg nevetségesen kis szám
MOD: Gyere msnre ha akarsz
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1180 üzenetére
hát még mindig az aknakeresőmbe kéne, hogy a játék közben számlálja az eltelt sec-eket, (ki is írja) lehessen esetleg pause-zni, stb. Én is úgy próbáltam, hogy megnézem gyakorta, h eltelt-e már 1 másodperc, de nem sok sikerrel...
time(&t0); //kezdőidő
time(&t1);
for(i=1;i<500000;i++)
{
if(time(&t2)!=t1)
{
time(&t1);
diff=(int) t2-t0;
system(''cls'');
printf(''%d'',diff);
}
} -
Jester01
veterán
válasz
emitter #1179 üzenetére
Milyen környezetben és mi a pontos elvárás?
Szinkron módon egyszerűen megvárod a következő másodpercet (Sleep) vagy gyakorta ellenőrzöd, hogy eltelt-e már egy másodperc.
Ha közben hosszabb dolga van a programnak, akkor valami aszinkron megoldás kell (időzítő, többszálúság, ...) -
emitter
őstag
hi!
tudtok segíteni, hogyan kell ''számlálót'' csinálni? Azt szeretném, hogy egy ciklus minden másodpercben kiírja az aktuális másodpercet, de eddig minden próbálkozásom sikertelen volt...és nem is találtam eddig sehol ilyenre példaprogit
valami ötlet, trükk erre vonatkozóan?
köszi -
cucka
addikt
[link]
itt van olyan program amit kerestél, resolution changer, console verzió
mondjuk így tudod lekérdezni vele a képernyő felbontását, elmenteni egy fileba, és ha nem 1024x768, akkor arra váltani:@echo off
for /f ''skip=1 tokens=2,3 delims=^)x usebackq'' %%a in (`reschangecon -listmonitors`)do (set ize=%%a & set magassag=%%b)
set szelesseg=%ize:~1,4%
echo %szelesseg% %magassag%>temp.tmp
rem echo %magassag%>>temp.tmp
if %szelesseg:~0,3%%magassag%==102768 goto vege
reschangecon -width=1024 -height=768 -refresh=max -depth=max -force
:vege
set ize=
set szelesseg=
set magassag=
@echo on
nyilván van ennél elegánsabb megoldás is. ez létrehoz egy temp.tmp filet, oda menti a felbontást.
következővel a fileba mentett felbontást állítod vissza:@echo off
for /f ''tokens=1,2'' %%a in (temp.tmp) do (set szelesseg=%%a & set magassag=%%b)
reschangecon -width=%szelesseg% -height=%magassag% -depth=max -refresh=max -force
set szelesseg=
set magassag=
@echo on
nálam működött -
Miracle
senior tag
Nem, nem tudok semmit a szegedi kepzesrol. A progmatok kozott igen komoly kulonbsegek vannak/volak, es ha lehet hinni a pletykaknak akkor a mienk a leg-matematika orientaltabb, ha ez nem-bejovos, akkor valamelyik masikat erdemes megprobalni. Ajanlom a #szte csatornat az ircneten, ott biztos talalsz progmatost aki szegedi.
Es diploma erteket nem kell tul sokra ertekelni[azon kivul hogy a ,,rangsorban'' - mar ha van ilyen - sem hiszem hogy elol allunk epp az elmeleti jellegu kepzes miatt bar tudja a frasz, en nem alkalmazok programozokat], az olyan helyen ahova erdemes elmenni dolgozni mar nem csak a diplomat nezik
-
BullSoft
tag
válasz
Jester01 #1170 üzenetére
Kozben rajottem. Volt egy char *tmp-em amibe olvasni akartam egy fajlbol soronkent. Foglaltam neki helyet a memoriaban es ment rogton. Mondjuk Borlandban jo volt ezelott is, csak Devben halt meg, ez erdekes.
Hiaba, szokatlan nekem ez a C/C++ a Pascal/Delphi utan. De hat ezt tanuljuk BME-infon, szal muszaj lesz erre atterni[Szerkesztve]
-
BullSoft
tag
Hali!
Vki nem tudja mitől lehet az, hogy DevC++ban mikor fgets fv-el probalok fajlbol beolvasni, rogton szetfagy az egesz? Borland C++ban simam muxik a progim, DevC++ban lefordul, de ahogy erre kerul sor, meghal rogton (es tuti h az fgets okozza). -
Miracle
senior tag
válasz
emitter #1166 üzenetére
osztálytársam az Elte-re ment infóra, eddig nem sok örömöt lelt benne
aztmondta h van 6-féle matekjuk komoly! mindegyikből vizsga
és most 1. félévben még nem is tanulnak progot mindenesetre érdekes
hat ehhez ha nem haragszol hozzaszolok mert egy elsoeves alapjan aki a beszamolo szerint azok koze tartozik akik rossz helyre jottek nem biztos hogy jo megitelni a szakot.
Apro kis intermezzo, hogy a progmat kepzes iden indult utoljara, es a proginfo veszi at a helyet, ami 3 szakirannyal megy, az egyik nagyjabol annyi matekkal mint a progmat, aztan egy masik 5 eves joval kevesebb matekkal, ez is 5 eves, aztan a harmadik szakirany kb annyi matekkal mint a muinfo(rossz nyelvek szerint az volt a viszonyitasi alap amikor keszitettek a tantervet), es ez 3 eves.
tehat elso evben valoban eleg kemeny a matematika, de ez 2. evtol valtozni fog, es 3. evtol kb annyit ulsz majd gep elott hogy mar elkepesztoen unni fogod. ha kifejezetten programozassal akarsz foglalkozni, akkor pesten nem igazan van ennel komolyabb alapokat nyujto kepzes. persze sok a matematika eleinte, de nekem most 3. evben 1 darab targyam van ami matek, meg lenne meg egy, ha nem csusztam volna el belole elozo evben, meg van megegy, de azon csak nevetni lehet, ilyen toltelektargy szinvonal.
az alapveto problema egyebkent az a rinyalos golyakkal, hogy nem kepesek elolvasni a felveteli tajekoztatot, bele van[volt] irva, hogy programtervezo matematikus. itt jegyeznem meg hogy a rendes es az alkalmazott matematikusokhoz kepest nagyon minimalis a mi matematikank, nagyjabol az 1/10-e es az 1/15-e koze saccolnam(a valaszthato savok nelkul, azokkal mar joval tobb tud lenni), a szakunkra jellemzo ,,speci matematika'' (programozas matematikai modellje) egyutt. szoval ez nem egy olyan teljesithetetlen szint. persze ha valakinek semmi kedve nincs foglalkozni a matekkal, akkor nem fog atmenni a gyakokon, es a vizsgakon, ez is egyetem, es raadasul nem is konnyu, tanulni kell. Arrol nem is beszelve, hogy kulonbozo tomoritesi, es kodolasi algoritmusok eppen arra a matematikara epulnek, amit elso masfel evben belevernek az oktatok a fejunkbe, csak ezt nem nagyon reklamozzak, igazabol nem tudom hogy miert. ez a szak tobbek kozott errol is szol.
na nem akartam itt most nagy eszosztasba kezdeni de eszmeletlenul felbosszant amikor hulyesegeket olvasok a sajat szakomrol, es tobbsegeben azoktol a golyaktol akik rossz helyre jottek. (ebben az egyetem is hibas, progmatos ismeros nelkul nem nagyon lehet megtudni hogy ugyan mirol is van szo ezen az kepzesen)
es semmikepp sem akartalak eltantoritani a szomszedos egyetemtol[BME] vagy akarmelyik masiktol, nem ez volt a celom. -
c4-eXp
aktív tag
válasz
emitter #1166 üzenetére
Nah, hát akkor még könnyen lehet, hogy egy egyetemre fogunk járni.
Csak ahhoz még kéne írnom egy jó matek, meg fizika emelt szintűt.
Eddig nagyon úgy voltam vele, hogy a BME-re szeretnék menni műszaki infóra, de most kicsit elbizonytalanodtam, mivel számításba jött a programtervező matematikus szak Szegeden. Az Eltére tuti nem jelentkezek, én is hallottam róla, hogy nagyon durva szinten nyomják a matekot, és hogy 1. évben szinte semmi programozás nincsen (részvétem az osztálytársadnak
). Szóval még eléggé kétesélyes a dolog, pénteken megyek Szegedre nyílt napra, kíváncsi vagyok milyen kedvcsináló lesz ott.
Viszont ez tetszik, amit leírtál a BME-ről, pl. hogy már nem oktatnak Pascalt, hanem egyből a C#/C++ nyelvet nyomatják. Valamint a Java is jó, és ezek legalább olyan dolgok, amikkel tudsz is majd mit kezdeni később.
Egyébként az ELTE Radnóti Miklós Gyakorlóiskolába járok, nem rossz suli, bár inkább humán beállítottságú. Mondjuk azért a biológia, meg fizika tanárok elég jók. Most büszke is vagyok magamra, mert valszeg továbbjutok fizika oktv-n a 2. fordulóba.Te hova jártál?
-
emitter
őstag
akkor csak 1 év van köztünk
most kezdtem a BME-VIK-en (villanyszak), ráadásul német nyelvű képzésen vagyok
nem mondom h könnyű, de kb ilyesmire számítottam, nem ért túl nagy meglepetés
gondolom téged az infó szak érdekelne, (ezt azalapján gondolom, h ha jólláttam, nem 0 a prog tudásod)
Nálunk villanyon idén indult először C#, eddig Pascalt nyomtak (gondolom a kétszintű képzés miatt kötelező volt átállni így a XXI sz.-ban)
jövőre C++szal folytatjuk, aztán talán Java jön, ha jól értesültem
Villanyszakon nem tudom milyen a képzés, nálunk a német infósok is C-t tanulnak egyelőre ugyanolyan szinten, de mellette van még vmi más prog-szerű tárgyuk is
osztálytársam az Elte-re ment infóra, eddig nem sok örömöt lelt benne
aztmondta h van 6-féle matekjukkomoly! mindegyikből vizsga
és most 1. félévben még nem is tanulnak progotmindenesetre érdekes
Ha több infót szeretnél, ajánlom ezt a topikot: [link]
üdv:
Kristóf
mod: én is megkérdezhetem, hova jártál? akarom mondani hova jársz?[Szerkesztve]
-
Gh0sT
addikt
Nah, belebarmolok ebbe a topicba egy szépet!
Egy kis segítségre lenne szükségem. Remélem van olyan vállalkozó kedvű önzetlen emberke, aki rám tudna szánni néhány percet/órát.
A helyzet a következő: egy olyan programra lenne szükségem, ami megvizsgálná a képernyő felbontását, és ha az nem 1024x768, akkor kérdés nélkül átváltana erre a felbontásra. Hogy bonyolultabb legyen a helyzet, az eredeti felbontást el kellene tárolni valahol, majd később egy másik program lefutna és visszaállítaná azt.
Összegezve: két progira lenne szükségem
1. Megvizsgálja az aktuális felbontást és letárolja azt, majd ha ez nem egyenlő 1024x768-al, akkor átvált erre.
2. Visszaállítja a letárolt adatok alapján az eredeti felbontást.
Mindez felugró ablakok nélkül a háttérben kellene történjen. Az sem mellékes szempont, hogy mindez Windows 2000 és NT alatt kellene fusson.
Nagyon nagyon megköszönném, ha valaki megszánna és megírná a fenti programokat. -
emitter
őstag
válasz
Jester01 #1161 üzenetére
király! megvan a félévi egyetlen 5-ös tárgyam
és ez a prog
na szal természetesen tanárbácsi ötösre értékelte közös mnkánkats mivel a zh-k is jók lettek, megvan a félévi jójegy
végre egy tárgy ami felfelé húzza az átlagom...
mégegyszer köszönöm minden fáradozásodat!
(azért remélem te is jót játszottál vele)
-
Jester01
veterán
-
emitter
őstag
válasz
Jester01 #1158 üzenetére
ezer köszönet!!! most már minden okés, remélem több számomra megoldhatatlan hiba nem fog felbukkanni...
akkor ha a screenshot alapján jól látom, linux alatt is tudtad futtatni a progit? mármint a színeket jól megjeleníteni? olyan üres téglalap-kurzort hogyan tudsz csinálni?
egyáltalán a kurzor méretén és láthatóságán kívül lehet még vmit állítani rajta? -
Jester01
veterán
válasz
emitter #1156 üzenetére
Az aknaz lényegi része valahogy így kellene kinézzen:
for(i=0;i<max_aknak; ) //aknák véletlen elhelyezése
{
int dx, dy;
int cx, cy;
j=rand()%my; //az aknák koordinátája 0,my és 0,mx között lehet
k=rand()%mx;
if(mezo[j][k].akna==0) //ha az adott mezõn már van akna, nem rakunk oda
{
mezo[j][k].akna = 1;
i++;
for(dy = -1; dy <= 1; dy++)
{
cy = j + dy;
if (cy >= 0 && cy < my)
{
for(dx = -1; dx <= 1; dx++)
{
cx = k + dx;
if ((dy != 0 || dx != 0) &&
cx >= 0 && cx < mx)
{
mezo[cy][cx].szomsz++;
}
}
}
}
}
}
A feltárós résznél nem igazán értem, hogy akkor most miben mit számolsz, de úgy sejtem, hogy egy ilyen módosítással jó lehet:
if (mezo[x][y].mark == -1)
{
(*mezoszam)++;
} else {
mezo[x][y].mark = -1;
(*maradt)++;
}
És ez nem kell a hívás elõtt:mezo[j-1][i-1].reveal=1;
mezo[j-1][i-1].mark=-1;
mezoszam++;
A mezoszam felteszem a feltárt vagy megjelölt mezõket számolja. Vagyis az automatikus feltárásnál csak akkor kell növelni, ha nem megjelölt mezõt tárunk fel, hiszen az már egyszer meg lett számolva. Viszont ha már meg volt jelölve, akkor most töröljük a jelölést, hiszen tudjuk, hogy nincs ott akna. Emiatt azonban a maradt változót növelni kell. Amúgy ez a +1/-1 a mark esetén elég sok fejfájást okozott nekem. Mostmár nehogy átírd, de a többi helyen használt 0/1 jobb lett volna.
MOD: szöveg jó, kód rossz[Szerkesztve]
-
emitter
őstag
válasz
Jester01 #1153 üzenetére
Ne haragudj, de nem tudnád tételesen leírni, h hol mit kellene javítanom, mert igazából holnapra már kéne a működőképes progi, és én megpróbáltam kijavítani ahogy írtad, de csak rosszabb lett
Felraktam a ''javított'' változatot.
szerk: a temp változót, amellyel a megjelölt/feltárt mezőket számoltam, az átláthatság és egyértelműség miatt átneveztem mezoszam-ra, és megszabadultam a lépésenkénti egyész pálya-vizsgálástól is, most még az újrarajzolás kihagyásán küzdök...
c4-eXp: zsír az aláírásod[Szerkesztve]
-
c4-eXp
aktív tag
Na ezek a 3d-s dolgok nem úgy vannak, hogy egy nyelvre konvertálja a progi az objektumot. Ilyen, hogy pl. c++-ba konvertálok egy modellt, nincsen. Lehet viszont olyat csinálni, hogy X file-ba mented el. Ez a directx szabvány 3d-s file-formátuma. Ez azért jó, mert a directx tartalmaz olyan függvényeket, amelyekkel egyszerűen be tudod tölteni az X file-okat, és megjeleníteni. Opengl-nek nincsen alapértelmezett 3d-s file-ja, ha jól tudom. Tehát ott neked kell megírni hozzá a betöltő fv-t, vagy szerzel egyet, amit valaki más írt meg (sok ilyen van).
-
repvez
addikt
Lenne egy kérdésem.Van eza program [link]
Ez tud sok 3D-s objektumot konvertálni, köztük opengl directx és c/c++ ba is.Az lenne a kérdésem ha van egy 3d-s objektumom és átkonvertálom valamelyik nyelvre akkor azon kivül méd mit kellene a programba irni hogy a program jelenitse meg az objektumot.Remélem érthetö voltam -
Jester01
veterán
curses verzió:
Meg kellene csinálni, hogy ne rajzolja mindig újra az egész képernyőt, mert hálózaton kicsit lassú -
Jester01
veterán
válasz
emitter #1150 üzenetére
Segítség, megerőszakolták a függvényemet!
A temp az egy pointer lenne, tessék szépen kiírni a csillagokat.
Teljesen fölösleges minden hívásnál az egész táblát végigellenőrizni, hiszen elég csak az aktuális cellát vizsgálni.
És a harmadik: a hívás után közvetlenül van egy goto jatek; szóval sosem fogja figyelembe venni a temp kiszámított értékét, amit úgyis újraszámolsz. Ráadásul a maradt változót és a kiírást sem frissíted és a megjelölést sem szünteted meg. -
emitter
őstag
válasz
Jester01 #1149 üzenetére
köszi, már be is építettem!
és ezennel jelentem, kész a második verzió, felraktam a táramra! [link]
egy probléma lép még föl néha: a képen látszódó 2 db 1-es rögtön indítás után (új játék) jelent meg magától, úgy, hogy nem is nyomtam még sehova
de ez teljesen random, néha csinálja néha nem, ha csinálja akkor mindig a baloldali első v második sorban egy-két mezőt előre felderít nekemráadásul nem is mindig jól, mert volt, h feketével jelölt nekem egy mezőt, mire miztonságból rákattintottam, ásláss csodát: akna volt alatta
halvány gőzöm sincs, h ez mitől lehet...
-
Jester01
veterán
-
Jester01
veterán
válasz
Jester01 #1146 üzenetére
Nagyon akartam aknát keresni, úgyhogy csináltam egy kis windows over ncurses emulátor réteget
Screenshot mûködés közben: [link]
Persze a színekkel meg a speciális keretrajzoló karakterekkel nem foglalkoztam.
Annyi haszna volt a dolognak, hogy felhívhatom a figyelmed arra a tényre, hogy a konzol ablak windows alatt is átméretezhetõ, vagyis nem szép dolog arra építeni, hogy 80 oszlop van.
Ja és persze kipróbáltam az automatikus feltárást isAzt kellene még lekezelnie, ha olyan mezõt tár fel, ahová a felhasználó már tett zászlót.
Valamint nem ártana egy #include <math.h> mivel így a floor függvényt implicit int visszatéréssel használja és telerakja aknával az egész táblátPersze lehet, hogy windows alatt valamelyik másik header már berántja, akkor vedd úgy, hogy nem szóltam.
-
Jester01
veterán
-
Jester01
veterán
-
emitter
őstag
válasz
emitter #1142 üzenetére
közben sikerült minden színt kikevernem:
#define color_white SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_INTENSITY)
#define color_lightgray SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED)
#define color_gray SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY)
#define color_black SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), )
#define color_red SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_INTENSITY)
#define color_darkred SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED)
#define color_lime SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_INTENSITY)
#define color_green SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN)
#define color_blue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE|FOREGROUND_INTENSITY)
#define color_darkblue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE)
#define color_navyblue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_BLUE
#define color_cyan SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY)
#define color_fuchsia SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE|FOREGROUND_RED)
#define color_purple SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_INTENSITY)
#define color_brown SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_RED)
#define color_yellow SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY)
sztem ennyi az összes lehetséges kombináció
azért csodálkozom, h C-ben ennyire alapszinten kezelik a színeket... pascalban simán rendelkezésre állt az összes szín... -
emitter
őstag
válasz
Jester01 #1139 üzenetére
na asszem ezt mára feladom, már nem fog az agyam ilyen későn
egyszerűen ez a rekurzív dolog nagyon bekavar, nem is értem a lényegét, hogy honnan hova ugrik a progi futása a rek. fv-hívások közben, stb...
másik kérdés:
konzolos módban végre rájöttem, hogyan lehet színeket kevergetni, de nincs vhol egy táblázat, hogy milyen kevergetéssel milyen színeket lehet előállítani?
ha jól számolok, összesen 22 színárnyalatot lehet csinálni, beleértve a fehéret, feketét, ugye? -
Jester01
veterán
válasz
emitter #1138 üzenetére
Igen, ez pontosan ezt jelenti
Amit te írtál, az sajnos azt jelentené, hogy csak átlósan menne tovább, hiszen megköveteled, hogy i és j sem nulla. Amit én írtam, az a !(i == 0 && j== 0) átalakítása a De Morgan azonosság szerint. Lehet, hogy ebben a formában érthetõbb lett volna, bocs
MOD: Amúgy ezt meg lehet spórolni, ha elõre felveszed mind a 8 lehetséges elmozdulásvektort és simán egy ciklusban mész végig rajtuk.[Szerkesztve]
-
-
Jester01
veterán
válasz
emitter #1134 üzenetére
kicsit bonyolultabb a helyzet, mint gondoljátok
Nagyképűség be: Szerintem mi remekül átlátjuk a helyzetet
Van ilyen egyáltalán?
Nincs. De magadnak ellenőrizheted.int mx, my; /* palya meret */
int x, y; /* ennek a szomszedait keressuk */
for(int dx = -1; dx <= 1; dx++)
{
for(int dy = -1; dy <= 1; dy++)
{
int cx = x + dx;
int cy = y + dy;
if ((dx != 0 || dy != 0) && cx >= 0 && cx < mx && cy >= 0 && cy < my)
{
...
}
}
}
Nyilván külön függvénybe is teheted az ellenőrzést, és akkor még szebb lesz.
MOD: A cx kiszámítását és ellenőrzését persze az y cikluson kívülre is lehet tenni, úgy gyorsabb lesz[Szerkesztve]
-
emitter
őstag
válasz
Jester01 #1132 üzenetére
kicsit bonyolultabb a helyzet, mint gondoljátok
szóval ha lehet, máshogy oldom meg ezt a rekurzív cuccost:
kérdés, hogy lehet azt lekérdezni (''felfogni''), hogy ha én egy tömb nemlétező indexű elemét akarom elérni. Gondolom ilyen esetben a progi generál magának valahova egy hibaértéket (valami error-output-ba?) Van ilyen egyáltalán?
Csak mert ha ezt tudnám hasznosítani, akkor nem kellene ennyiféle if-elágazást csinálni a feltar() fv-emben, hanem elég lenne megnézni a szomszédos mezők akna-vizsgálatakor, hogy az igaz-e az error (azaz nem létezik ilyen indexű tömbelem, azaz túlléptem a pálya szélét).
Ha error==1, akkor break; vagy vmi ilyesmi, és folytatom a következő mezővel a vizsgálást.
Szal van ilyesmi error-cucc? -
-
Jester01
veterán
válasz
emitter #1129 üzenetére
Rögvest három probléma is van vele, de fagyasztani elvileg csak az egyik fagyaszt. De a végtelen ciklus egyébként is garantált
if(y==0) //ha a legfelsõ sorban vagyunk
{
if(mezo[x][y-1].akna==0)
Ez nagyon egészségtelen. -1 lesz az index. Bye-bye ...
MOD: ebbõl van több is. Nem lenne egyszerûbb, ha mindig kiszámolnád mind a nyolc szomszéd koordinátáját, és egyszerûen ellenõriznéd, hogy a pályán belülre esik-e?
Második probléma, hogy nem ellenõrzöd merre jártál már.
A harmadik pedig alapvetõ koncepciós probléma: nem azt kell nézni, hogy az adott mezõn van-e akna, hanem azt, hogy az adott mezõ szomszédain van-e akna. Csak akkor szabad továbbmenni, ha egyik szomszédján sincs.[Szerkesztve]
-
emitter
őstag
válasz
Jester01 #1130 üzenetére
ok, javítottam, most jó kell legyen
meek csicsikálni, holnap a suliban még debuggolok
még azon a feltar()-on van mit csiszolni
meg a mentett pálya folytatása sem az igazi
ja, ha még nézegeted, akkor 'proba.txt' néven mentsd el a pályát, mert a load() is azt olvassa vissza (egyelőre)
jó éjt!
és köszi a segítséget[Szerkesztve]
-
emitter
őstag
válasz
emitter #1128 üzenetére
most palya**-t adtam vissza a load()-dal, most nem fagy
és műxik a betöltés is, eddig miden ok, köcce
még ott van viszont a szerencsétlen és átláthatatlan feltar() fv-em, ami szintén fagyaszt, de simán elronthattam benne akármit, mert rekurzív, és mint mondtam, ehhez nem sokat értek
bár ha te sem találod meg benne első ránézésre a hibát, akkor sztem ne fáradj vele, legfeljebb kihagyom a progiból ezt a fícsörtmondjuk így majd sokkal többet kell kattintgatni...
-
Jester01
veterán
1) Ahogy gondolod. Nem fáj sokba.
2) Abszolút nem megy, hiszen ez így nem függvényhívás. ''warning: statement with no effect''
3) Felõlem
5) Jah, kivéve ha mondjuk read-only directoryban futtatja.
6) ''gcc-t használ, hát a fene sem tudja, hogy mikor mit ront el.'' Nem ront el semmit.
7) Érdekes. Nekem nagyjából hasonló eloszlású számok jöttek ki.
Sajna nem tudok random generátort. -
Jester01
veterán
válasz
emitter #1125 üzenetére
Khm, a fejed fogod a falba csapkodni
A fagyi konkrétan azért van, mert a mezo változót akarod felszabadítani, aminek sosem adtál értéket. Ugyanúgy mint az mx és my esetén, ha azt akarod, hogy a függvénybõl visszajöjjön, akkor pointert kell átadni. Itt ez már 3 csillag lesz(Persze void visszatérési típus helyett lehet palya** is, és akkor return-nel adod vissza)
Ezen kívül: nem tudom mit ittál amikor ezt írtad:
temp=(char*)malloc((*mx)*sizeof(char)+(int)my);
Gondolom szegény fordító tiltakozott az my ellen (hiszen az most egy pointer!), de te jól ''megerõszakoltad''
Mivel az egész pálya most egy sorban van, így nyilván 4 * (*mx) * (*my) hely kell. Plusz az egy byte a lezáró nullának amire már valamikor felhívtam a figyelmed
Ha ez mind megvan, akkor már csak az a baj, hogy a k=k+4 rossz helyen van, a belsõ ciklusmag végére való (vagyis a kapcsoszárójelen belülre). -
emitter
őstag
válasz
Jester01 #1121 üzenetére
hali!
én is sokat szívtam nélküledde legalább kisebb simításokat tudtam végezni a ''holt időmben''
szóval a kérdésem az, h miért száll el a progim (lefut, rögtön bezáródik hibaüzi nélkül)
mindent kikommenteztem, csak a load() maradt, ez nem akar menni rendesen
[link]
megköszönném ha rá tudnál pislantani, köszi előre is! -
Sianis
addikt
válasz
Jester01 #1121 üzenetére
Szia!
Rád vártam vazze'
Válaszok:
1) Minek visszatérni? Szerintem egy ilyen laza kis feladathoz felesleges.
2) Ez is visszatérésel toldja meg nem? Vagy így abszolút nem megy?
3) Nem rontom el a változót, nem közösségi felhasználásra készül.
4) Javítva köszi...
5) Szerintem ezzel Win alatt nem lesz gond, főleg, hogy a tanár a saját gépén csak rendelkezik fájl létrehozási funkcióval.
6) Sokat szívtam vele, így legalább működik...Már nem tudom, hogy hol kell, hol nem, de azt tudom, hogy nélkülük nem volt tökéletes. Dev-C++ gcc-t használ, hát a fene sem tudja, hogy mikor mit ront el.
7) Nem működik, ha egy sorba van írva az osztással. Teljesen rejtély, de ha egy sorban van, akkor nagyon rossz számokat generál, így különírva megy.
Kérdés: Neked sincs ötleted, hogyan lehet pl 5-6 tizedesjegy pontosággal 0-1 között úgy, hogy 100000 generált szám között ne ismétlődjön túl gyakran? Tanár kötekedni szokott emiatt, de szerintem az én megoldásom sem rossz, szakmai fórumokon ezt a számot megírtam, plusz egyetemi tanárok is így használják. Neked esetleg valami ötlet? -
Jester01
veterán
1) a main függvénynek nincs megadva visszatérési típus. gcc szerint ez defaultból int. Viszont nincs return sem
A helyes megoldás: kiírni, hogy int, és egy return 0 a végére.
2) az exit hívás így hibás, lemaradt a zárójel, nomeg a paraméter. Helyesen pl.: exit(1);
3) A ''/n Tul nagy elemszam,inditsa ujra.'' kiírásnál / van \ helyett. Különben meg szebb lenne, ha inkább újra bekérnéd a hibás értéket.
4) A ''\nKivanja fajba irni az adatokat? (i/n)'' kiírásnál kimaradt egy l betû
5) A ki.txt megnyitásának sikerességét nem ellenõrzöd.
6) Rengeteg double cast tök fölösleges.
7) A ''itt nem szabad osztani sehogy, mert nem kapunk jo eredmenyt'' megjegyzést nem értem. Itt pl. lehetne castolni, de persze simán egy lebegõpontos konstans is jó: szam=random(10000)/10000.; Mi ezzel a baj? -
emitter
őstag
azt nem tudjátok, hogy lehet C-ben pl. copyright-jelet írni? Meg az egyéb szimbólumokat, mondjuk a Unicode-kódokat kiiratni?
-
Sianis
addikt
[link]
Itt a végleges, nekem működik a letöltése!
Kérlek teszteljétek a progit, hogy nem ront-e el valamit...
Még valami. Egyik ismerősöm írt valami lrand() függvényt, amivel jobban lehet számokat generálni, long típusúakat ugyan, de nagyobb a ciklusideje. Viszont nem találom, hogy milyen headerben van definiálva, és hogyan kell meghívni. Valaki esetleg tud róla? Köszi előre is... -
emitter
őstag
/*printf(''\nKivanja latni az adatokat? (0/1)'');
scanf(''%s \n'',&a);
if (a=='i')*/
ez gondolom nem műxik, ha már kikommentezted
helyesen így nézne ki:
printf(''\nKivanja latni az adatokat? (i/n)'');
a=getch();
if (a=='i')
egyébként sajnos nem sokat réünk a forráskóddal, mert ha bekopipésztelem akárhova, átalakítja a '' idézőjelet ' ' idézőjellé
próbáld meg felrakni 1 tárhelyre
egyébként a scanf() nem parázik azért, mert beleírtál egy '\n'-t? Nálam ugyanilyenért asszem ezért fagyott rendesen a progi[Szerkesztve]
-
Sianis
addikt
Sziasztok!
Úgy tűnik kész a program közzé teszem a forrást, hátha lát benne valaki komolyabb hibát.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define random(range) (rand() % (range))
main()
{
char a;
unsigned int i,j,k,l,t,M,N,db;
double szam,szoras,szoras2,xatlag,szumma,r1,r2;
double xi[3000];
FILE *fout;
srand(time(NULL));
fout=fopen(''ki.txt'', ''w'');
printf(''\nNyitrai Istvan Statisztika feladata.'');
printf(''\nKerem adja meg a kiserletek szamat!'');
scanf(''\n%d'',&M);
printf(''\nKerem adja meg a valtozok szamat!(max 3000)'');
scanf(''\n%d'',&N);
if (N>3000)
{
printf(''/n Tul nagy elemszam,inditsa ujra.'');
exit;
}
xatlag=0;
db=M;
/*printf(''\nKivanja latni az adatokat? (0/1)'');
scanf(''%s \n'',&a);
if (a=='i')*/
for (i=0;i<N;i++)
{ // N kezdet
xi=0;
l=0;
r2=0;
for(j=0;j<M;j++)
{ //M kezdet
r1=0;
r2=0;
for (k=0; k<12; k++)
{ // k kezdet
szam=(random(10000));
szam=szam/10000;
r1+=szam;
} // k vég
r1=r1-(double)6;
r1=r1*(double)8.1666;
fprintf(fout,''\n%8.3lf'',r1);
r2=(((double)1.2*r1)+(double)1);
if (r1<(double)0)
if (r1>(double)(-0.1666))
{
fprintf(fout,'' megfelel %8.4lf'',r2);
l++;
}
else { fprintf(fout,'' nem felel meg %8.4lf'',r2);}
else { fprintf(fout,'' nem felel meg %8.4lf'',r2);}
}
//printf(''\ni = %d'',(int)i);
xi=l/(double)M;
xatlag=xatlag+xi;
}
printf(''\nxatlag összesen: %lf'',xatlag);
xatlag=(xatlag/N);
printf(''\n\n\n A szimulacio vegerdmenye: %3.8lf valoszinuseggel esik a megadott hatarok kozze.'',xatlag);
printf(''\n A pontos vegerdmeny : 0.008 .'');
getch();
fclose(fout);
}
Kérdésem a következő...hogyan lehetne úgy számot generálni, hogy 5-6 tizedesjegyű pontossággal állít elő 0-1 között? Nekem eddig 4-ig sikerült eljutni, ha feljebb veszem a 10000-ig generálást, akkor már hibás számok generálódnak. Ötlet esetleg?</p>
MOD: Kicsit bugos a PH motor, a ''-t ' '-nek írja...ha kódként írom be...[Szerkesztve]
-
emitter
őstag
Egy elég nehéz akadályba ütköztem aknakeresőm készítése közben:
ugye az úgy szép, meg elegáns, ha egy mezőnek a környezetében vmelyik másik mezőn nincs akna, és én erre a mezőre ''kattintok'', akkor addig tárja fel a szomszédos aknátlan mezőket, amíg csak lehet.
Hogy kicsit érthetőbb legyen, itt egy kép, h a májkroszofték ezt hogyan oldották meg:
Ha jól gondolkozom, akkor vmiféle rekurzív algoritmus kéne ehhez, de én az ilyenekben béna vagyok, nem nagyon tudnék magamtól ilyen algoritmus kitalálni.
Nálam így néz ki a dolog:
Pl. mikor a sárgán jelölt mezőre kattintottam, akkor csak azt az 1 mezőt tárta föl. Azt szeretném elérni, hogy az összes szomszédos nem-aknás mezőt tárja föl ilyenkor, tehát legalább a két fehér-keretes mezőig jusson el. (a fehér téglalap a kurzor akar lenni, azt nem kell nézni)
Szóval ha bárkinek bármilyen ötlete van, ne hallgassa el!
Előre is thx -
Hujikolp
őstag
[Szerkesztve]
-
emitter
őstag
hát ezaz, csak nem tom, mi a rand_max értéke, sehol nem találtam hozzá ''útmutatót''
azt sem tudom, hogyan lehet adott tartományon belül generálni számot:
devc++ om nem akarja elfogadni a random() fv-t, pedig elvileg ez lenne a megoldás
#include <time.h>
#include <stdlib.h>
int main()
{
double veletlenszam;
srand((unsigned)time(NULL));
veletlenszam=random(10000)/10000;
printf(''%lf\n'',veletlenszam);
system(''pause'');
}
próbáld ki, neked megy-e -
emitter
őstag
#include <time.h>
int main()
{
double veletlenszam;
srand(time(NULL));
veletlenszam=rand();
printf(''%lf\n'',veletlenszam);
system(''pause'');
}
ez elvileg működőképes kell, h legyen, próbáld ki!
az a baj, hogy nemigazán tudom, hogyan lehet 0 és 1 közé szorítani a visszaadott értéket, mert nem találtam egy olyan fv-t se, amelyik két nagy szám hányadosának a törtrészét adta volna vissza, double értékűként.
persze lehet, h csak rosszul kerestem -
Sianis
addikt
Tehát a lényeg a következő!
Össze kell adnom 12 db 0 és 1 közé eső számot...majd összeadni őket és kivonni belőlük hatot... ennek a számnak nem szabad ismétlődnie olyan hamar amennyire csak lehet
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Futás, futópályák
- OLED TV topic
- Autós topik
- VR topik
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- BestBuy topik
- Samsung Galaxy Watch7 - kötelező kör
- Építő/felújító topik
- Milyen légkondit a lakásba?
- További aktív témák...
- Easun iSolar SMW 11kW Twin Hibrid inverter // Dupla MPPT // BMS // WiFi
- GAMER PC : RYZEN 7 5700G/// 32 GB DDR4 /// RX 6700 XT 12 GB /// 512 GB NVME
- GAMER MSI LAPTOP : 15,6" 144 HZ /// i5 12450H /// 16GB DDR4/// RTX 4050 6GB/// 1TB NVME
- Manfrotto 055 magnézium fotó-videófej Q5 gyorskioldóval
- Sony ECM-W2BT
- BESZÁMÍTÁS! ASUS H87I-PLUS H87 chipset alaplap garanciával hibátlan működéssel
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40AC Thunderbolt 3 docking station
- LG 27CN650N-6A - Felhő Monitor - 1920x1080 FHD - 75Hz 5ms - USB Type-C - Quad Core - BT + WiFi
- KÖZEL FÉLÁR! Apple Magic Keyboard, Mouse, Trackpad, Pencil, Smart Magic Keyboard Folio, Watch szíjak
- ÁRCSÖKKENTÉS Panasonic Viera 37" TH-37PV8P plazma TV eladó (2 HDMI)
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest