Gyorskeresés
Legfrissebb anyagok
- 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
- Tudástár AMD Radeon undervolt/overclock
Általános témák
LOGOUT.hu témák
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] PLEX: multimédia az egész lakásban
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [bitpork:] Fogyasztásra ítélve
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] eBay-es kütyük kis pénzért
- [Re:] [bambano:] Bambanő háza tája
- [Re:] [sh4d0w:] Rebel Moon - Ne nézd meg!
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
Hozzászólások
Cathfaern
nagyúr
Szerintem beírom az egész feladatot, aztán akkor tisztább lesz minden
Számkitalálós játék inputként megadott korláttal: számgenerálás 1-től n-ig, ahol az n input (pl. 1<n<65536), a kiértékelést ''normalizálni'' kell (azaz pl. n=5000 esetén 13 tipp a ''felezgetős'' eredmény és az 5 tipp még nagyon jó, ugyanakkor 15 számnál az 5 tipp már rossz eredmény).
Na most a feladat első része megvan, már csak ezt a ''normalizálást'' kéne tető alá hozni.
Eddig azért nem írtam be, mert szándékosan nem akartam azt, hogy valaki fogja s leírja a jó megoldást.
Cathfaern
nagyúr
Uh, jó sok hülye zárójelet írtam, az biztos. Lehet, hogy nem éjjeli egykor kéne nyomni
VladimirR
nagyúr
ha jol ertem, akkor neked valami olyasmi kell, hogy nezed a minimalisan szukseges lepesek szamat (log2n) es a tenyleges tippeket es a ketto hanyadosabol hatarozod meg, hogy az illeto ''ugyes'' volt-e
mondjuk ha a hanyados nagyobb, mint egy (vagyis <log2n tippel eltalalta), akkor ugyes, ha a hanyados egyenlo eggyel, akkor elfogadhato (mert ugye kovette az algoritmust, de semmi extrat - pl mazli - nem mutatott fel), ha pedig a hanyados kisbb mint egy, akkor (leven tobb tippje volt, mint ami a megoldashoz szukseges) ejnye-bejnye, mert csak vaktaban lovoldozott (s nagy szamoknal ez eleg gaz lehet, mert pl mig az algoritmust hasznalva ~1 000 000 szambol 20 lepesben megtalalhato a keresett, addig totozva ez igen hosszadalmas es az 1e6 nem is olyan nagy szam)
Cathfaern
nagyúr
Közbe rájöttem, hogy még se jó ha az algoritmust írom meg...mivel akkor más és más szám értékekre (ugyanazon itervallumon) más és más eredmény fog kijönni (vagy legalábbis nálam így van ). Nekem viszont a legroszabb eset kell. Szóval akkor mégiscsak a logaritmus kéne nekem...na de azt majd holnap
Cathfaern
nagyúr
Pontosan Csak közbe a logaritmus fgv használatával gondjaim akadtak, szóval holnap folyt. köv.
Cathfaern
nagyúr
Tehát:
ha azt írom, hogy
log2(max)
akkor nincs hiba, de ezt hogy tudom változóban eltárolni? Ugyanis ha azt írom, hogy:
opt = log2(max)
akkor kiírja hibának, hogy undeclared identifier (math.h header be van töltve)
Nem lehet, hogy meg kell neki adni még egy paramétert, és abban lesz a viszatérési érték?
***
faster
nagyúr
opt-ot deklaráltad? double opt;
Cathfaern
nagyúr
Igen.
ollie: nem megy úgy sem.
faster
nagyúr
Azt kéne kideríteni, mire mondja azt, hogy undeclared identifier. Esetleg a max-ra?
Cathfaern
nagyúr
ez a pontos error üzenet:
error C2065: 'log2' : undeclared identifier
(max deklarálva van, használva is program közben, szóval azzal biztos nincs gond)
VladimirR
nagyúr
olyan nincs, hogy log2 - csak termeszetes es tizes alapu logaritmus van
log2(max) kiszamitasahoz hasznald a kovetkezot: log(max)/log(2)
Cathfaern
nagyúr
ja, én azt hittem a log10 mintájára működik más alapúval is
Így már megy, kösz
faster
nagyúr
Jahh, tényleg, csak log és log10 van.
Cathfaern
nagyúr
ÁÁÁ!! Elegem van ebből a VIsual-ból Újabban (2-3 napja) állandóan azt csinálja, hogy compiling közben megáll. A fordítást leállítani nem tudom (hiába nyomkodom a gombot), bezárni se hagyja magát, s csak ctrl+alt+del-el lehet nagy nehezen lelőni
Közben eszembe jutott még valami: az opt értékét valahogy kerekíteni kéne egész számra, mivel így nem tudom összehozni azt a lehetőséget, hogy pont annyi próbálkozással eltalálni, mint amennyivel a gép végzett volna.
Miracle
senior tag
ah a VS szar, akkor rossz a telepítés(windows+ Studio) vagy a konfig mert a studio jól működik ha jól be van állítva.
kerekítés:
int lepes = (double(int(opt)) < opt) ? int(opt)+1 : int(opt) ;
értelmező késziszótár :: rekurzió --> lásd : rekurzió
Cathfaern
nagyúr
Valszeg a gép lesz a hibás (másnak is baja van), de a VS-t könnyeb szídni
kerekítés: kösz.
VladimirR
nagyúr
biztos vagy benne, hogy ez kerekit?
mert 2.1-re 2<2.1 a feltetel, es 2.9-re 2<2.9 - igy mindket esetben felfele kerekit
a te megoldasodban az int() hol kerekit (feltetelben), hol pedig floor-kent mukodik (2 masik eset)
en erre egy makrot hasznalok:
#define round(A) ( floor(A)+.5 < A ? floor(A) : ceil(A) )
a floor a lefele, a ceil pedig a felfele kerekites
[Szerkesztve]
Miracle
senior tag
úgy az int(double), mint a static_cast<int>(double) alsó egész-részt vesz. a kód működik.
én g++-t és borland compilert szoktam használni, mind a kettő így csinálja, és bár nem néztem, de a VS is biztosan.
az előbbi (ha másért nem is) azért kerekít felelé, mert egyszerűen eldobja a mantisszát. utóbbi implementációfüggő, de csak az van garantálva, hogy nem csinál hülyeséget, de az kerekíthet bármely irányba.
Ha negatív számokra is számítanánk, akkor lehet, hogy nem működne a kód, de itt nem ez a helyzet. a makrókkal meg vigyázni kell, mert egy ilyen egyszerű kifejezés, mint a round(++b) is megfingatja.
értelmező késziszótár :: rekurzió --> lásd : rekurzió
VladimirR
nagyúr
lehet rosszul ertek valamit, de ha az int(double) also egeszt vesz, akkor a double(int(opt)) < opt minden olyan esetben, mikor opt nem egesz, 1-e ad eredmenyul
es a ++b a makromnak valoban nem tesz jot neki, most neztem ()
de a te megoldasod nalam folyamatosan felfele kerekit
[Szerkesztve]
Miracle
senior tag
de egy ?: operátor van mögötte. ez egy feltétel. a bool visszatérési értékét használom. amúgy igen, lehetne így is:
int leptetes = int(opt) + (double(int(opt)) < opt);
ez is tökéletesen működne, de kevéssé magátó értetődő, és ez inkávv egy ,,c''-s megoldás, nem szép dolog c++ban ilyet hagyni. nem szeretik a c++ programozók. és én sem, mert nem szép.
''es a ++b a makromnak valoban nem tesz jot neki, most neztem ()
de a te megoldasod nalam folyamatosan felfele kerekit''
óh, jháh, doktor zwack, das ist eine Uniqum, az volt a feladat, hogy felfelé kerekítsem, mert nyilván nem kell magyaráznom, hogy a log_2(n) nem mindíg egész, és amikor tört, akkor a keresett érték a felső-egészrész.
[Szerkesztve]
értelmező késziszótár :: rekurzió --> lásd : rekurzió
Cathfaern
nagyúr
A VladimirR-féle kerekítést könyebben megértettem, így inkább azt használtam
ja, de most látom, hogy az meg nem jó Na akkor meg kéne értenem a Miracle félét is
Miracle
senior tag
igen, csak az nem ad jó megoldást, de ahogy látod .
értelmező késziszótár :: rekurzió --> lásd : rekurzió
VladimirR
nagyúr
igen, tudom, hogy mi van mogotte, ezert is irtam, hogy mindig 1-et ad vissza ----> mindig az int(opt)+1 lesz a fuggveny eredmeny, amennyiben az opt nem egesz szam ---- tehat 2.1 eseten is 3-at ad vissza es 2.9 eseten is (legalabbis nalam)
int lepes = (double(int(opt)) < opt) ? int(opt)+1 : int(opt) ;
2.1:
lepes = ( 2 < 2.1 ) ? 2+1 : 2; ----> lepes = 1 ? 3 : 2; ----> lepes = 3;
2.9:
lepes = ( 2 < 2.9 ) ? 2+1 : 2; ----> lepes = 1 ? 3 : 2; ----> lepes = 3;
Miracle
senior tag
most órám lesz, ha vége, és nincs meg, elmagyarázom.
értelmező késziszótár :: rekurzió --> lásd : rekurzió
Miracle
senior tag
''igen, tudom, hogy mi van mogotte, ezert is irtam, hogy mindig 1-et ad vissza ----> mindig az int(opt)+1 lesz a fuggveny eredmeny, amennyiben az opt nem egesz szam ---- tehat 2.1 eseten is 3-at ad vissza es 2.9 eseten is (legalabbis nalam)''
IIIIGEN, EZT JELENTI A FELSŐ EGÉSZRÉSZ, ERRE VAN MOST SZÜKSÉGÜNK.
[Szerkesztve]
értelmező késziszótár :: rekurzió --> lásd : rekurzió
Cathfaern
nagyúr
Jól értem, hogy most a lepes nevű változóban lesz eltárolva a kerekített érték? (nem az itt beírtra, hanem az ''eredetire'' gondolok).
Btw. mi C-t tanulunk (egyelőre) nem C++-t
VladimirR
nagyúr
jah, hogy a feladat nem tokeletes kerekites, hanem felfele kerekites?
akkor #include <math.h> es ceil(opt);
ceil and ceill round up
floor and floorl round down
Declaration:
double ceil(double x);
double floor(double x);
long double ceill(long double (x));
long double floorl(long double (x));
es elnezest a feltreeresert
es nem kell kiabalni, bazdmeg, hanem meg kellene tanulni egyertelmuen irni
ezt irtad a #366-ban:
''kerekítés:
int lepes = (double(int(opt)) < opt) ? int(opt)+1 : int(opt) ;''
en erre mondtam, hogy ez nem kerekites
[Szerkesztve]
[Szerkesztve]
RéNyBoY
csendes tag
Hy all!
Lenne 1 problémám egy progival!Pascalban kell megírni és linux alatt kell futnia.
A progi 2 permutációt szoroz össze majd ezt transzpozíciókra bontja,nekem ez az utóbbi nem megy.
Az adatokat fileból kell beolvasni és fileba is kell kiírni.Ha valaki tudna segíteni az szóljon és elküldöm neki a forrást.
[Szerkesztve]
Orc
senior tag
Scriptet kell írnom. Hogyan lehetne megoldani, hogy a script vizsgálja meg a paraméterként megadott számról, hogy osztható-e 2-vel 3-mal vagy 5-el és ha bármelyikkel osztható, akkor írjon ki valamit? Köszönöm előre is.
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
Miracle
senior tag
akkor misunderstood, sorry.
értelmező késziszótár :: rekurzió --> lásd : rekurzió
corm
senior tag
unix shell script? vagy milyen?
Y N W A
Orc
senior tag
igen unix shell script, de most jöttem rá, hogy olyan script kell, ami megvizsgálja, hogy a megadott paraméter prim szám-e
[Szerkesztve]
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
corm
senior tag
Huh, ha jól emléxek akkor úgy lehet leggyorsabban megállapítani, hogy valami prímszám-e , hogy elkezded egyesével nézni a számokat egy ciklusban, ahol a ciklusváltozó lehet maga a szám amivel osztod a keresett számot. egészen gyök n-ig kell ezt csinálni (n az amiről megakarod álalpítani). és ha valamelyikkel osztható, akkor ugye nem prím-> vége a ciklusnak. Ha peig a ciklus végig fut, és az utolsó elem sem osztója n-nek, akkor prímet adtál meg.
unixban lekódolni pedig nem nehéz, itt egy példa(azért unixban énis kezdő vok, nem szidni a kódért )
a=$1
i=2
l=0 -- egy logikai változó, ami azt mondja, meg hogy osztója-e vagy sem
gyoka=(gyök a - nem tudom a gyök parancsot... )
while [ i -le gyoka ]
do
if [ `expr a % i` -eq 0 ]
then
l=1
fi
i=`expr i+1`
done
if [ l -eq 1 ]
then
echo ''Prím!''
else
echo ''Nem prím!''
fi
Na kb ennyi, de gondolom az okosabbak találnak majd benne ezer hibát
Y N W A
Orc
senior tag
Köszönöm szépen!
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
Orc
senior tag
Akkor márcsak arra lennék kiváncsi, hogy hogyan tudom kifejezni a gyök ''a''-t.Előre is köszönöm.
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
Orc
senior tag
gyök a=a^1/2
Csodákra képes az idő
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
Orc
senior tag
if [ $1 != ''-p'' ]; Ez mit tesz? Mi az a -p opció?
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
T_bee
aktív tag
Itt is felteszem a kérdést, hátha itt többan olvassák:
Ha Visual Basiccel csinálok egy dhtml oldalt, akkor azt el lehet menteni .html oldalnak, és feltölteni valahová és honlapként fog nekem funkcionálni?
meg?: Visual Basiccel lehet-e regisztrációt meg beléptetést csinálni: tehát az user akkor tud csak belépni, ha megadta a felhasználói nevét meg a jelszavát. ezeket hogyan lehet tárolni külön fájlban?
''Az erőszak a gyengék végső menedéke'' /Isaac Asimov : Alapítvány/
corm
senior tag
ez annyit tesz, hogy ha az elsőként megadott paraméter nem -p, akkor fog belemenni az elágazásba. Meglehjetősen gyanús ez a sor nekem. egy Elte-n feladott unix beadandó feladathoz hasonlít... Ha így van, és tényleg oda kell, akkor spec itt azt jelentia -p, hogy pünkösdöt kell-e kiszámolni. Tehát akkor fog belemenni az elágazásba, ha húsvétot kell.
Y N W A
Orc
senior tag
Köszi és azt meg tudnád mondani, hogy itt mi a hiba?
./unix1: line 2: syntax error near unexpected token `('
./unix1: line 2: `n ='expr $1 - 19*($1/19),'
Köszi mégegyszer.Jah és igen elte...
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
corm
senior tag
./unix1: line 2: `n ='expr $1 - 19*($1/19),'
Van benne néhány
először is: az expr -nek úgy kell megadni hogy az operandusok és az opertáor közt kell hagyni szünetet
aztán szerintem a ()-t nem kezeli le, szóval ezzel is baja lehet(ebben nem vagyok biztos nem próbáltam), csinálhatod ehelyett azt, hogy a $1 / 19-et beteszed egy segéd változóba, vagy ami logikusabb, mivel a szorzás kommutatív: $1 / 19 \* $19 - bár ennek így megnézve semmi ételme, nyílván $1et kapsz vissza...
aztán hiba még, hogy a *-ot nem tudod így használni, le kell védened egy \-el s mindig amikor szorzást akarsz írni ezt irod: \*
aztán végül nemtom miaz a , a legvégén, szerintem az nem kell oda
ui. jól állhatsz, ha egy sorban ennyi hibád van - de azért csak kérdezz nyugodtan, ha tudok segítek
Y N W A
Sianis
addikt
Sziasztok!
Hatalmas bajom van. Hétfőn be kell adnom ezt a programot. Tegnap tökéletesen ment TP7 alatt, ma változatlan formában kiakad Free Pascal alatt és ez alatt kell beadni.
A gond a Keresés és a Módosítás pont alatt van. Néha lazán elmegy TP7 alatt, néha meg módosítás alatt disk read hibát ad.
A két fájl:
Alap.pas Bővebben: link
Magellan.pas-ez a unit Bővebben: link
Légyszives teszteljétek le mindkettő alatt, mert lehet az én gépemmel van a baj, és feleslegesen félek. Ha lehet akkor javítsátok amit lehet. Előre is köszönöm...
UI: CRT unit nincs benne, mert Linux alatt nem szereti. Szóval ne lepődetek, meg, hogy fapados.
Hálásan köszönök bármifajta segítséget!
Orc
senior tag
Köszi, tehát hogy néz ki helyesen?Vért fogok izzadni keddig
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
corm
senior tag
n =`expr $1 - 19 \* $1 / 19` , de nem teljese értem, hogy ez miért van így. Szerintem elnéztél valamit, mert ez így nagyon 0-t fog visszaadni
Esetleg ha ez vmi maradékképzés akar lenni, akkor arra ottvan a %, a maradékos osztás
hazsnálata: pl. p=6 % 4 és ez 2-t fog visszadni
[Szerkesztve]
Y N W A
corm
senior tag
Látom írtál progmat levlist-re. Elég érdekes aza forráskód, finoman fogalmazva
Y N W A
Orc
senior tag
Nemirtam a levéllistára, neked írtam, de már megoldottam és müködik! Viszont még arra lennék kiváncsi, hogy hogyan lehet ezt megcsinálni: Van 3 válozó
a= évszám
b= hónap
c= nap
Hogyan lehet egy változóval azt megcsinálni, hogy közvetlen egymás után írja ki az abc értékét(mintha dátum lenne)
Pl: a=2004 b= 04 c=12
a d ezt írja ki: 20040412
Előre is köszi.
[Szerkesztve]
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
Orc
senior tag
Ha lehet mailben válaszolj légyszives.Köszönöm.
ui: a levelet, amit neked küldtem tekintsd semmisnek
Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!
Téma tudnivalók
● olvasd el a téma összefoglalót!