- btz: Internet fejlesztés országosan!
- gban: Ingyen kellene, de tegnapra
- hdanesz: Hyundai Ioniq 28kWh - Első benyomások - második felvonás
- Elektromos rásegítésű kerékpárok
- Viber: ingyen telefonálás a mobilodon
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Gurulunk, WAZE?!
- Luck Dragon: Asszociációs játék. :)
- vrob: Az IBM PC és a játékok a 80-as években
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
Jester01 #5573 üzenetére
"A tömb pedig ekvivalens a pointerrel"
Na na! Csak óvatosan! Pointernek adhatsz értéket, tömbnek nem. Ez egy igen lényeges különbség. A tömb, mint cím, fordítás idejű konstans, míg a pointer egy változó, ami futás időben kap értéket. Pointernek veheted a címét (hiszen változó), tömbnek pedig nem (mármint char array[10]; char **p=&array; utasításoknak nincs értelme, míg char *p; char **pp=&p; -nek pedig van). Az, hogy a C-ben és C++ -ban szemantikailag nincs eléggé megkülönböztetve a pointer és a tömb, az a nyelv egyik hiányossága, amellett, hogy nagyfokú rugalmasságot is biztosít.
C++ -ban például teljesen helyénvaló származtatott osztály pointert (D *) publikus ősosztály pointerként (B *) használni, míg D ** pointer B ** pointerként való használata tiltott, nyilvánvaló okok miatt. Ugyanakkor nyugodtan meg lehetne engedni D *[] típusú változó B *[]-ként való használatát, azonban ezt mégsem lehet, mivel nincs eléggé megkülönböztetve a pointer és a tömb. -
zka67
őstag
válasz
Jester01 #5552 üzenetére
Szia,
Ezzel együtt az eredeti kiindulás az volt, hogy az & operátor nem egy számot ad vissza, hanem egy megfelelő típusú pointert. Emiatt aztán (int)&x + 1 és (int)(&x + 1) az nem ugyanaz (kivéve ha véletlenül x mérete 1 byte)
Mint említettem, fizikailag a pointer egy (memória)címet tartalmaz, ami egy egyszerű szám (ez lehet 16, 32 vagy akár 64 bites érték is, rendszertől függően, de ebbe most ne menjünk bele). A pointer típusát a fordító kezeli, magából a pointer értékéből ez nem derül ki, mivel nem tárolja azt.
Az eredeti kérdés az az volt, hogy a pointer elé miért nem kell a & jel, ezt próbáltam meg konyhanyelven elmagyarázni a kérdezőnek, hogy megértse.
int main(int argc, char* argv[])
{
char c;
char *p;
p = &c;
printf("sizeof(c)=%d, sizeof(p)=%d, p=%08X\r\n", sizeof(c), sizeof(p), p);
return 0;
}Ennek az eredménye az alábbi:
sizeof(c)=1, sizeof(p)=4, p=0018FF53azaz a c változó a 0x0018FF53-as memóriacímen található. Nincs a p változóban semmilyen típus, csak a változó címe.
-
ToMmY_hun
senior tag
válasz
Jester01 #5546 üzenetére
Erre kérhetek valamilyen irodalomból származó referenciát? Amiket én néztem azokban sehol sem említik, hogy bármi egyebet csinálna a memóriacím visszaadásán kívül. Maga a létrehozott pointer nyilván nem csak egy számot tárol, azzal nem lehetne leírni egy struktúra belső szerkezetét.
-
Doctor46
csendes tag
válasz
Jester01 #5388 üzenetére
Ez a kettő lenne az!
Tudom 3-at írtam de kettő lett belőle.
4.A. Egy kis vegyesbolt vezetője felkéri, hogy készítsen egy számítógépes programot,
amely a bolt raktárkészletét tartja nyilván. Feladata, hogy határozza meg a fejlesztendő
szoftver funkcionális és minőségi követelményeit, valamint az alkalmazás szerkezeti
felépítését.
- Mutassa be a programtervezés folyamatát!
- Nevezze meg és jellemezze a tervezés során készítendő dokumentumokat!
- Határozza meg a fejlesztendő szoftver funkcionális követelményeit!
- Határozza meg a fejlesztendő szoftver minőségi követelményeit!
- Tegyen javaslatot a szoftver futtatási környezetére (platform)!
- Tegyen javaslatot a szoftver architektúra kialakítására!
- Mutasson rá az alkalmazás kritikus pontjaira!8.A. Egy áruház klimatizálási rendszeréből 10 másodpercenként érkeznek - az egyes
helyiségek hőmérsékletét jelző - monitoradatok egy adatbázisba. A megfigyelt helyiségek
(beérkező adatok) száma 100 darab. Feladata, hogy tegyen javaslatot az adatok
rögzítéséhez szükséges adatbázis és alkalmazás felépítésére.
- Tervezze meg a rendszer működéséhez szükséges architektúrát!
- Tervezze meg az adatok tárolásához szükséges adatbázis felépítését!
- Határozza meg az adatok tárolásához szükséges tárterületet!
- Tervezze meg az adatok rögzítéséhez szükséges alkalmazást!
- Határozza meg a rendszer működése során jelentkező kritikus pontokat, hibákat és
javasoljon megoldásokat! -
bandi0000
nagyúr
válasz
Jester01 #5360 üzenetére
2010.10-es érettségi
Röviden tömören, az egész anagrammákról szól
van egy tömbböm benne vannak a szavak, meg kell keresni a legtöbb karakterből állót, és amikor meg van akkor ki kell írni, persze úgy hogy az anagrammáit is vele írjam (tehát ugyan abból a 10 betűből álló szavakat ami benne van a listába)
csak ugye gondolom van több 10 karakterű szó aminek több ugyan ennyi betűből álló anagrammája van
-
don_peter
senior tag
válasz
Jester01 #5330 üzenetére
Ja értem, akkor 3 oszlopból mutatható lenne az óra, perc. és másodperc.
A baj azzal csak az, hogy igen nehéz lenne megállapítani, hogy mennyi rajta az idő.
A 4bit-es sokkal könnyebb.
Persze megoldható lenne a dolog, ha erre volna igény, nem jelent gondot.ui: szarakodott a szerver, kb egy 20 perccel előbb akartam reagálni...
-
válasz
Jester01 #5256 üzenetére
Ahogy irtam, generalt kod(kent indult).
Egyebkent meg a goto-val az a baj, hogy nagyon konnyu rosszul hasznalni. Maga a goto utasitas nem egy bun, alapvetoen. [link] (Egyebkent meg a compiler okossagatol fuggoen a while-continue lehet egy utasitassal lassabb, mint a goto..)
-
válasz
Jester01 #5200 üzenetére
> "Bizonyos mennyiség fölött garantáltan sokkal lassabb lesz, mintha ténylegesen transzponáltad volna."
Algoritmustol fugg. Ha kevesszer transzponalsz, de sokszor olvasol, akkor igen. Ha sokszor transzponalsz, es kevesszer olvasol, akkor a te megoldasod lehet drasztikusan lassabb. Ha pl. marha nagy matrixokkal dolgozol, de a transzponalt matrixot felhasznalo fel minden matrixbol csak nehany elemet vesz ki, akkor a lazy megoldas a jobb.
-
HAX
tag
válasz
Jester01 #5014 üzenetére
Köszönöm a segítséget, kijavítottam a programot így már jó.
Ez a javított függvény:
int e(int a)
{
if (a==0)
{
printf("A szam nulla\n");
} else if (a%2==0)
{
printf("A szam paros\n");
} else { printf("A szam paratlan\n");
}
return 0;
}Igazad van a kiíratással kapcsolatban is, viszont ezt a függvényes, visszatérési értékes dolgot még nem teljesen tettem magamévá. Ha nem túl nagy teher akkor megtudnád nekem írni (vagy átírni) a feladatnak megfelelő függvényt? Ez valószínűleg jó támpont lenne nekem a többi feladathoz, inkább vizuális típus vagyok így könnyebben feltudnám fogni.
-
Hani
aktív tag
válasz
Jester01 #4921 üzenetére
Köszönöm, megpróbálom akkor ezek szerint.
Még egy kérdés: ha normálisan akar C-ben programozni az ember, akkor milyen programot érdemes használni? Eddig a notepad -> notepad++ -> Eclipse+Cygwin utat jártam be, de mindegyiknek megvoltak a maga bajai. Van olyan keretrendszer, ami különösen ajánlott, vagy bármelyik jó, csak szokjak hozzá a sajátosságaihoz?
-
Hani
aktív tag
válasz
Jester01 #4906 üzenetére
Köszönöm ezt is.
2. Akkor ezek szerint gyakorlati haszna is van.. akkor mindenképpen odaírom.
A scanf-nél mondjuk ha az lenne a feladat, hogy csak számokat olvashat be, akkor mit kéne tennem? Vagy ne használjam a scanf-et, hanem mondjuk while-lal addig kérjem be a dolgokat, amíg megfelelő inputot nem kapok?
mallocnak utánaolvasok azonnal.
-
#68216320
törölt tag
-
#68216320
törölt tag
válasz
Jester01 #4890 üzenetére
Meghívtam, de az volt a gond akkor, hogy kiírni a forrásból jól tudtam, de a beolvasáskor elvesztek az ékezetek.
A végső, de eléggé csúnya megoldás forrását feltettem ide.
Ezzel a beolvasás billentyűzetről hibátlan, de a kiirás forráskódból hibás volna. Viszont egy függvénnyel konvertálom az ékezeteket és ezzel kiirni is tudok rendesen. Valahogy nem sikerül egyszerűen a kiirás-beolvasás konvertálás nélkül.
Fura volt továbbá, hogy pl. az swprintf(szoveg,L"állomás"); nem tartalmazhatott ékezetet, csak akkor, ha utf8 volt a forrásfájl tárolása. Viszont ekkor macerássá váltak újra a karakterek, mindent wprintf()-el tudtam csak kiirni. A beolvasás viszont hibássá vált.
-
don_peter
senior tag
válasz
Jester01 #4848 üzenetére
Tetszik mert kisebb memória kell neki
Köszi kicserélem illetve mutatom az egészet kompletten//A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - : .
static char ABC[40][7] ={{0b00000,//A
0b01110,
0b10001,
0b10001,
0b11111,
0b10001,
0b10001}
};
unsigned char karakteratvalto(unsigned char karakter){
static char chars[40] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-:. ";
unsigned char i, result;
for(i=0; i<40; i++){
if(karakter == chars[i]){
result = i;
break;
}
}
return result;
}
void karakter(unsigned char karakter){
unsigned char i, z;
unsigned char mask = 0x10;
for(i=0; i<7; i++){
for(z=0; z<5; z++){
if (ABC[karakter][i] & mask){
printf("o");
}else{
printf(".");
}
mask >>= 1;
}
mask = 0x10;
printf("\n");
}
}Így néz ki a teljes kód.
Az ABC az végig van írva rendesen úgy ahogyan látod a kommentált részben is. -
don_peter
senior tag
-
don_peter
senior tag
válasz
Jester01 #4842 üzenetére
for ciklusban még nem adtam meg 4. feltételt, de lehet majd kipróbálom.
A mostani kódom így néz ki://void karakter(char betu){
char i, x, y=4, z;
for(z=0; z<40; z++){
for(x=0; x<7; x++){
for(i=0; i<5; i++){
if((ABC[z][x]>>y)&1 == 1){
printf("o");
}else{
printf(".");
}
y--;
}
y=4;
printf("\n");
}
}
//}Lényege, hogy mindegyik byte első bit-jét kell kiraknom portra, vagy is, hogy 7bit-et kapjak függőlegesen.
A 7 bi-tet a 7 byte első bitjei teszik ki azért 7 bit mert 7db ledet kell kapcsolgatnom.
Vízszintesen pedig 5 bit kell jelen pillanatban, de ez ügye 8-ig gond nélkül növelhető.
Azért csak 5 mert 7x5-os a szabvány.
A függvényt úgy kell majd megírjam, hogy oda vissza ki tuja tenni a biteket.
Tehát mikor lendítem a karom akkor kapcsol a gyorsulás kapcsoló és elindul a program, mikor a lendítés eléri a holtpontot és visszafordul akkor váltani kell a programnak és az ellentétes oldalról kell végig léptetni e a biteket, így kapnék egy teljesen jó és egyletes kijelzést.
Persze itt az időzítés és a lendítés sebessége nagyon fontos.
Nem tudom mennyire volt érthető amit akartam mondani -
don_peter
senior tag
válasz
Jester01 #4840 üzenetére
Igen, igen...
Tudtam, hogy miért nem jó a kódom, csak azt nem tudtam, hogy oldjam meg az egyes helyi értékek vizsgálatát anélkül, hogy az megváltozna.
Ettől független köszönöm a magyarázatot.Egyébként egy HandClock vagy, ha jobban tetszik WandClock-nak nevezett kézi kütyüt készítettem a magam szórakoztatására és persze tanulás céljából és ehhez kell egy jobb hatásfokkal dolgozó kódot írnom, amely mátrixos multiplexeléssel rakja ki függőlegesen feltörve az egyes bitek értékeit a proci lábaira.
Sajnos a mostani kódom ugyan működik, de nem tökéletes így muszáj fejlesztenem még rajta, de már a PIC memóriáját 97%-ra tele írtamItt van egy kép majd egy két videó a kütyüről:
És a videók: DPTP System - WandClock 1.0
DPTP System - WandClock 2 -
Anakin007
aktív tag
válasz
Jester01 #4805 üzenetére
Köszönöm, a bináris működik, most is már azon a laptopon írok, amibe bios-t kellett újraírni, amihez kellett ez a progi
Igen, hiányzott a (asszem) libopenssl-dev csomag legutóbb, amiben az md5.h nevű file volt, amit hiányolt a gcc. Miután ezt is feltettem, már nem hiányolt semmit, csak kismillió hibát dobott és nem fordult le...
Mégegyszer köszönöm, lógok egy szivességgel. Tartsd evidenciában, főleg amikor majd meghal a notid -
don_peter
senior tag
válasz
Jester01 #4566 üzenetére
Közben rájöttem, hogy van a kódban még hiba így azt javítottam.:
unsigned char get_key(){
unsigned int i, k=0;
for(i=0; i<4; i++){
SOROK = (0x08>>i); //Léptetjük a sorok szintjét
k++;
if(oszlop1 == MAGAS){
while(oszlop1==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
k++;
if(oszlop2 == MAGAS){
while(oszlop2==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
k++;
if(oszlop3 == MAGAS){
while(oszlop3==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
k++;
if(oszlop4 == MAGAS){
while(oszlop4==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
if(i>0){ //Ha a második lefutásnál sincs találat
k=(i+1)*4;
}else if(i==3){ //Ha az utolsó is lepörgött nullázzuk k-t
k=0;
SOROK = 0x08; //Sorok szintjét vissza állítjuk az elejére.
}else{ //Első lefutás után a k értéke 4 lesz
k=4;
}
}
return ALACSONY;
}Arra célzol, hogy gondolkozzak 2 dimenziós tömbökbe?
-
axioma
veterán
válasz
Jester01 #4506 üzenetére
Azt mar 40+
mar ha ebben a korban nem venasszonyoztok me'g le a lany helyett
De itt a lany/no" + programozas volt a kerdes - bar teny, az se pontos datumilag. Mar 7. altalanosban jartam a titbe tanfolyamra, hogy progizni tanuljam a zx spectrumot basicben. Ha meg ugy nezem, az egyetem elejen "csak" mat.kus voltam, 4. evtol vettem fel a progmatot, bar ezt nem annyira tevedes osszemosni, a matkus szak + no" is kello csodalkozast/hitetlenkedest valtott ki...
De kit erdekelnek mar a tobb evtizedes sztoriban az ilyen reszletek. -
axioma
veterán
válasz
Jester01 #4485 üzenetére
Arrol beszeltem. De mint programozo nagysagrend szinten gondolkozom egy algoritmus gyorsasagarol (kis/nagy ordo'k). Az egyik esetben egy N bites szam eseten varhato ertekben N-szer fut le, a masiknal - ha eleg veletlenszeruek a szamok - N/2-szor (N az most ne az abrazolasi bitszam legyen, hanem a legmagasabb bittel bezarolag a szam merete). En ezt nem tartom igazan sebessegkulonbsegnek, bar teny, hogy lehetnek helyzetek ahol ez szamit - pl. AES titkositast kellett legutobb addig pofozgatni, amig abban a kornyezetben a savszelesseget a titkositas nem korlatozta mar le, itt szamitott a 6-7x-es szorzo, annak aran is, hogy a kod.szabv.-unkkal ellentetesen felhasznaltuk a pointer-aritmetikat.
dabadab: code review-zo szintjen gondoltam, en ilyenre gondoltam: "mivel az egy kivonasa a legalso 1-es bittol kezdve csinal xor muveletet, vissza-&-elve csak pontosan ez a bit valtozik"
Es igazabol ez szamabrazolasi kerdes is, mondjuk ha bcd kijelzesu orarol es megjelenitendo bitekrol beszelunk, akkor ez nem segit. -
don_peter
senior tag
válasz
Jester01 #4452 üzenetére
Thanks a segítséget:
for(i = mennyi; i >= 0; i--){
if(i == 0)
ossz += right_digit[i];
else
ossz = (ossz + right_digit[i]) * 10;
}ui: Köszi de őszintén szólva Karma bejegyzése inkább félrevezetett mint rá
Ezt ne vedd sértésnek Karma
Jester01-nek megy a pont
Köszi, most sokat tanultam... -
don_peter
senior tag
válasz
Jester01 #4448 üzenetére
Ehhez is ismerni kell a bevitt érték nagyságát nem?
"(((a*10)+b)*10+c)*10+d" mert ez összesen csak 4 változó értékét tudja felszorozni és összeadni.
Én most így oldottam meg:int number, right_digit[5], i = 0, mennyi = 0, ossz = 0;
printf("Adj meg egy számsort (1-100e közt): ");
scanf("%i", &number);
printf("Visszafelé: ");
while(number != 0) {
right_digit[i] = number % 10;
printf("%i, ",right_digit[i]);
number = number / 10;
mennyi = i;
i++;
}
printf("\n");
for(i = mennyi; i >= 0; i--){
if(i == 4)
ossz += right_digit[i] * 10000;
else if(i == 3)
ossz += right_digit[i] * 1000;
else if(i == 2)
ossz += right_digit[i] * 100;
else if(i == 1)
ossz += right_digit[i] * 10;
else if(i == 0)
ossz += right_digit[i];
else
printf("Maximum 99999-et lehet megadni!\n");
}
printf("Hány karakter: %i",mennyi+1);
printf("\nÖssz érték: %i\n", ossz);Kimenete:
Adj meg egy számsort (1-100e közt): 344
Visszafelé: 4, 4, 3,
Hány karakter: 3
Össz érték: 344 -
don_peter
senior tag
válasz
Jester01 #4446 üzenetére
A legegyszerűbb dolgok a leg-kézenfekvőbbek.
Bonyolultabban akartam megoldani és ez volt a hiba.
Itt meg már egy saját kis függvény meg eldönti, a számok számából, hogy mennyivel kell elkezdeni szorozni és utána már mehet vissza felé szépen a dolog.
Picit még parázok ettől a nyelvtől.Az strlen -re akkor gondolom érdemes egy saját rutint írni bár gondolom majd az is lassú lesz.
A string-ek esetében még mondjuk jó is, de ha számokat akarok megszámolni már parásabb a helyzet.
Vagy erre meg jó ez a megfordító dolog, csak a végeredmény majd a szétválasztott számok száma lesz és meg is van számolva -
Karma
félisten
válasz
Jester01 #4363 üzenetére
Na igen, a qemunál karcsúbban elég nehéz megúszni
Axioma, az hogy big endian valami, még nem sok mindent definiál szerintem. Kérdés az architektúra (ARM, MIPS, SuperH, MicroBlaze, stb.), meg a szoftverkörnyezet is (Linux, valamilyen RTOS, nyers kód a vason). Csak mert ettől is függ, hogy mit kéne emulálni vagy szimulálni.
Szerk.: na jó, második nekifutásra mégse olyan fontos kérdések, mert maga a program elmondásod szerint elég minimalista. Ettől függetlenül nem nagyon lehet megúszni a QEMU-t és a Limux telepítést, csak hogy legyen min futtatni.
Itt egy MIPS útmutató, és itt ugyanez SPARC-kal. Valamelyiket lenyomod, és kész is leszel
-
-
tototos
addikt
válasz
Jester01 #4238 üzenetére
Köszi.
Melyik a jobb megoldás ha veszek egy 64 bites változót, és ebbe rakom be az adatokat, majd ezt bájtokra bontva elküldöm, vagy az ha a tömbbe rakom be a fenti módszerrel az adatokat és a tömböt küldöm ki?
Ugyanezt kell visszafele is, tehát van egy uint8_t tömb[8] tömb, amiből ki kell nyernem az adat pozíciótól az adott hosszú adatokat.@dabadab: Bájtosával kell kiküldenem az adatokat, és úgy is kapom őket. Tehát vagy alapból bájt tömbben tárolom őket, vagy a 64 bites változómat darabolom bájtokra, valamint vételnél visszafele.
-
dabadab
titán
válasz
Jester01 #4205 üzenetére
Kenytelen vagyok visszakozni: megtakaritana, mivel itt csupa char lenne. Ha amugy egy csomo intje meg pointere lenne, es akoze rakna be egy-egy chart, akkor nem lenne megtakaritas, mert ott azoknak a 4 / 8 byte-os alignmentje bekavarna, de ha tenyleg mindenki char, akkor nincs ilyen gond.
-
-
alapz@j
tag
válasz
Jester01 #4166 üzenetére
Huh, nagyon jó ez a GCC Explorer, meg is adta a választ:
int main() {
for (int i = 0; i < 5; ++i) {
int x = i + 10;
}
}g++ 4.8 (-O és más kapcsolók nélkül)
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-8], 0
jmp .L2
.L3:
mov eax, DWORD PTR [rbp-8]
add eax, 10
mov DWORD PTR [rbp-4], eax
add DWORD PTR [rbp-8], 1
.L2:
cmp DWORD PTR [rbp-8], 4
jle .L3
mov eax, 0
pop rbp
retÉrdekes, ha jól olvasom, akkor a teljes stack allokálás (int i és int x is) megtörténik már a ciklus előtt, azaz nincs sem menet közbeni allokálás, sem blokk utáni deallokálás.
-
aAron_
őstag
válasz
Jester01 #4136 üzenetére
értem, akkor leírom pontosabban mit akarok kiszámolni, hátha van valami ötleted (meg kedved segíteni). sajnos most úgy érzem még nem elég a tudásom egy ilyen probléma megoldásához.
szóval az egész dolog lényege az, hogy X db részvény (ált 40<X<50) egy portfólióban való optimális eloszlását megtaláljuk. ez akkor a legjobb ha a sharpe ratio a lehető legnagyobb. ezt az alábbi módon kell kiszámolni:
sharpe_ratio=sqrt(250)*((avg_daily_rets - riskfree_daily_rets)/std_dev)
avg_daily_rets nem más mint a porfólió átlagos napi hozama pl.: 0.0002364 = 0.02364%
riskfree_rets az elérhető legnagyobb kockázatmentes napi hozam (lehet akár 10 éves lejáratú amerikai kötvény, vagy akár banki kamat, bár ez utóbbi kevésbé)
std_dev pedig standard deviation of the portfolio, tehát a szórása a napi hozamoknak (ez a kockázat a gyakorlatban)
(250 a kereskedési napok száma egy évben)
adatok amivel dolgozni kell kb így néznek ki (napi igazított árfolyam, mintha mindegyik 1-től indulna az 1. napon):
első, második, harmadik, negyedik, ..., n-edik részvény
1. 1.00000 1.00000 1.00000 1.00000 ... 1.00000
2. 0.99820 0.99930 1.00090 0.99130 ... 1.00010
3. 1.00150 0.99750 1.00140 1.00300 ... 1.00060
3. 1.00510 0.99970 1.00080 1.00380 ... 1.00070
5. 1.00830 1.00240 1.00160 1.00360 ... 1.00080
6. 1.00910 0.99050 1.00270 1.01440 ... 1.00100
7. 1.00900 0.98940 0.99970 1.01890 ... 1.00110
8. 1.00830 0.99060 0.99930 1.02240 ... 1.00170
.
.
.n-edik 1.29590 1.22330 1.13880 1.40270 ... 1.06800
napeddig úgy számoltam (X<=4 esetén), hogy leteszteltem az összes lehetőséget
egyik lehetőség pl.: első részvényt vettem 0.5x, másodikat 0.3x, harmadikat 0.1x, negyediket 0.1x és így kiszámoltam minden napra a porfólió értékét
ebben az esetben (ha az első 4 részvénnyel számolunk csak) a portfólió árfolyama a 2. nap= 0.5x0.99820+0.3x0.99930+0.1x1.00090+0.1x0.99130=0.99811
ha ez az érték megvan minden napra abból már ki tudom számolni minden egyes nap hozamát és tudok vele dolgozni
csak onnan tudom, hogy sokkal több részvény optimális allokációját is ki lehet számolni, hogy többen is több mint 500 részvénnyel dolgoztak (külföldi fórumon), és olyan algoritmust írtak amely egy évre visszamenőleges adatból kiszámolta az optimális allokációt és sharpe ratio-t, mégpedig sokkal nagyobb pontossággal mint 0.01, elmondásuk szerint egy viszonylag lassú gépen kevesebb mint 20 perc alatt lefutott az egész.
remélem érthető és nem magyaráztam túl semmit sem
-
Jester01
veterán
válasz
Jester01 #4135 üzenetére
Sőt, durvábbat mondok. Ha azokat nézzük ahol az első 19 szám a 0, 0.01, 0.02, 0.03, 0.04, 0.05 bármelyike a huszadik pedig szépen kipótolja az összeget 1-re, akkor az 6^19 lehetőség ami nagyjából 609 billió. Ezt az életben nem fogod mind végignézni, és ez még mindig csak az összes lehetőség töredéke!
-
buherton
őstag
válasz
Jester01 #4092 üzenetére
Ha a linker szerint az ex_task4.o-ban is benne van, az azt jelenti, hogy huncutság van, például az ex_task4.c-ben lehet egy #include "ex_init4.c".
Ezt nem tudom, hogy honnan tudtad, de tényleg így van. Az ex_task4.c-ben semmilyen __heap_start-os declarálás, definiálás vagy hasonló sincs. De ez miért jelent problémát?
MOD: Arra gondolsz, hogy a make környezet úgy fordítja, hogy minden c fájt fordít, és ennek az lesz a következménye, hogy az ex_task4.c-ből includálva van az ex_init4.c ezért gyakorlatilag az ex_init4.c kétszer van fordítva? És amikor a linkeléshez ér, akkor jön a felismerés, hogy két __heap_start van, mert bár az ex_task4.c nem tartalmazza, de az include miatt mégis bele kerül.
(#4093) Karma: Igen, több példa is van, viszont úgy van megcsinálva, hogy a közös dolgok 4 init fájlban vannak, és a különböző példák ezeket include-álják és így egy rakat fölös kódot nem kell ismételten leírni. Ilyen a main, a task inicializálás, deklarálások, stb..-k. Nem túl szép, de az biztos hogy hatékony, de egyelőre még nem fordul...
-
skylaner
senior tag
válasz
Jester01 #3959 üzenetére
(Gondolom az nem jutott eszedbe hogy nem a tökéletesen szép megoldás volt a célom, hanem csak az algoritmus leírása? Eredetileg main-t se akartam írni csak a fgv-t, de a jobb érthetőség miatt beletettem.)
Amúgy mi a gond a printf("%c",c)-vel?#include <stdio.h>
void text_fragmentation(const char* string, int char_num)
{
int i=1;
while (*string != '\0')
{
putchar(*string);
if (i == char_num)
{
putchar('\n');
i=0;
}
i++;
string++;
}
}
int main(int argv, char* argc[])
{
const char* string="cseresznye";
text_fragmentation(string,3);
return 0;
} -
buherton
őstag
válasz
Jester01 #3838 üzenetére
Nem jogos, ha a C99 szabványt vesszük alapul, mert a 37. oldal 16 sorától:
The type signed char was introduced in C89 to make available a one-byte signed integer type on those systems which implement plain char as unsigned char. For reasons of symmetry, the keyword signed is allowed as part of the type name of other integer types. Two varieties of the integer types are specified: signed and unsigned. If neither specifier is used, signed is assumed.
-
aAron_
őstag
válasz
Jester01 #3828 üzenetére
mintha ott se lenne, én sem értem...
kons.txt:
alma
narancsde a kons.dat-ba csak ezt íja:
almanarancs
a teljes kód így néz ki:
void csinal_dat()
{
char puff[256];
FILE *fpt=fopen("kons.txt","rt");
FILE *fpd=fopen("kons.dat","wb");
if (fpt!=NULL)
{
while(fgets(puff,256,fpt)!=NULL)
{
fprintf(fpd,"%s\n",puff);
}
}
else
printf("hibas megnyitas: kons.txt");
fclose(fpd);
fclose(fpt);
} -
artiny
őstag
válasz
Jester01 #3806 üzenetére
A cliens kuld valamit a servernek , a server tovabb kuldi egy masik kliensenk ami a kerest vegre hajtja majd vissza kuldi a szerver a kapott eredmenyt. (összeadást , pl. 1 + 1)
Ezen az oldalon van egy server-kliens
http://www.prasannatech.net/2008/07/socket-programming-tutorial.html
C tipusu
tcpserver.c
tcpcliens.c
Ezeket lefutattam,mukodnek (szoveget tudok kuldeni ide oda. Ubuntu alatt teszteltem) -
Ú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!
- Iphone 13 Pro Max 128 GB /// 86% Akku // Számlával és Garaniával
- Iphone 12 Pro Max 128 GB /// 88% Akku // Számlával és Garanciával
- Xiaomi Redmi 9A 32GB Kártyafüggetlen 1Év Garanciával
- Apple iPhone 12 Pro Max 128GB Kártyafüggetlen 1Év Garanciával
- Samsung Galaxy S23PLUS 256GB Kártyafüggetlen 1Év Garanciával
- Új Apple iPhone 16 Pro Max 256GB, Kártyafüggetlen, 3 Év Garanciával
- DELL PowerEdge R730xd 16LFF+2SFF rack szerver - 2xE5-2680v3,64GB RAM,4x1GbE,H730 RAID v ZFS
- Csere-Beszámítás! Sapphire Pulse RX 9070 XT 16GB Videokártya! Bemutató darab!
- Samsung Galaxy A12 64GB, Kártyafüggetlen, 1 Év Garanciával
- Huawei Nova Y70 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest