Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Hozzászólások

(#3001) Karma válasza Mikeboy666 (#3000) üzenetére


Karma
félisten

Olvashatatlan leginkább. A fórummotor alaphelyzetben kiveszi az indentálásokat, és a [i]-t szereti dőlt formázásnak értelmezni, amitől elrontja a kódodat végig. Kérlek, használd a Programkód gombot, amikor kódot másolsz be.

(Most átformázom kézzel grátisz.)

[ Szerkesztve ]

“All nothings are not equal.”

(#3002) Mikeboy666 válasza Karma (#3001) üzenetére


Mikeboy666
csendes tag

Most itt tartok, azt, hogy 0 és 10 közé eshet (0 és 10 is lehet) hogyan tudom megcsinálni, bocs a buta kérdésért...

# include <iostream>
#include<ctime>
using namespace std;
int main()
{

srand((unsigned int)time(NULL)); // véletlen generátor inicializálása
int GURIT[10], TAR[10] = { 0 }, i; // A TAR[] -ban számoljuk, hogy az egyes dobásokból
//mennyi volt

for (i = 0; i<11; i++) //ellenőrzött dobás bekérés
{
GURIT = rand() % 11 + 1;
}
int dbparos = 0;
for (i = 0; i<10; i++) // eredmények megszámlálása
{
switch (GURIT(i))
{
case 1: TAR[0]++; break;
case 2: TAR[1]++; break;
case 3: TAR[2]++; break;
case 4: TAR[3]++; break;
case 5: TAR[4]++; break;
case 6: TAR[5]++; break;
case 7: TAR[6]++; break;
case 8: TAR[7]++; break;
case 9: TAR[8]++; break;
case 10: TAR[9]++; break;
case 11: TAR[10]++; break;
}
if (GURIT(i) % 2 == 0)dbparos++;
}
for (i = 0; i<10; i++) // eredmények kiíratása
cout << "\nA(z) " << i + 1 << "-es dobasok szama:\t" << TAR(i);
cout << endl;
cout << "\nA(z) paros dobasok szama:\t" << dbparos;

cout << endl;
system("pause");
return 0;

(#3003) sztanozs válasza Mikeboy666 (#3002) üzenetére


sztanozs
veterán

switch (GURIT(i))
{
case 1: TAR[0]++; break;
case 2: TAR[1]++; break;
case 3: TAR[2]++; break;
case 4: TAR[3]++; break;
case 5: TAR[4]++; break;
case 6: TAR[5]++; break;
case 7: TAR[6]++; break;
case 8: TAR[7]++; break;
case 9: TAR[8]++; break;
case 10: TAR[9]++; break;
case 11: TAR[10]++; break;
}

:C :F :W

btw akkor már az else ág hol marad?

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3004) sztanozs válasza Mikeboy666 (#3002) üzenetére


sztanozs
veterán

Amúgy
GURIT[i] = rand() % 11 + 1;

# include <iostream>
#include<ctime>
using namespace std;
int main()
{
srand((unsigned int)time(NULL)); // véletlen generátor inicializálása
int GURIT[10]; //10 guritas
int TAR[11] = { 0 }; // A TAR[] -ban számoljuk, hogy az egyes dobásokból [0, 10]
int i; //index
int dbparos = 0; //paros dobasok szama
//mennyi volt
for (i = 0; i<10; i++) //ellenőrzött dobás bekérés
{
GURIT[i] = rand() % 11; // [0, 10]
}
for (i = 0; i<10; i++) // eredmények megszámlálása
{
++TAR[GURIT(i)];
if (GURIT(i) % 2 == 0) ++dbparos;
}
for (i = 0; i<10; i++) // eredmények kiíratása
{
cout << "\nA(z) " << i << "-es dobasok szama:\t" << TAR(i);
cout << endl;
}
cout << "\nA(z) paros dobasok szama:\t" << dbparos;
cout << endl;
system("pause");
return 0;
}

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3005) EQMontoya válasza sztanozs (#3004) üzenetére


EQMontoya
veterán

A kolléga fordítva csinálja. Nem a dobásokat tárolja, hanem hogy melyikből mennyi volt.

Same rules apply!

(#3006) sztanozs válasza EQMontoya (#3005) üzenetére


sztanozs
veterán

Igazából pont a héten (vagy a múlt héten) volt személéltető példa a felesleges kódhalomból - ez pont szépen beleillett :D

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3007) dobragab válasza sztanozs (#3006) üzenetére


dobragab
addikt

Két hete volt, szinte pont ez :DDD annyi, hogy ott a break is fölösleges volt :))

[link]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3008) EQMontoya válasza sztanozs (#3006) üzenetére


EQMontoya
veterán

Valami init kellene annak a randomnak, hogy ne ugyanaz potyogjon belőle mindig.
Amúgy jól elbonyolítottad Te is. :)
Erre való a map.
Ugye map<int, int>, aztán index operátorral rányomulsz. Mivel van defualt initializaiton a value-ra, ha nem létezett az adott key, és ezt intnél pont 0, ezért nyugodtan lehet indexelni. Másrészt kulcs szerint rendezett, tehát az első elemre, amelyiknél nem 0 a value, megvan a legkisebb generált érték.

Valahogy így:

map<int,int> results;
int num_of_even=0;
srand (time(NULL));
for(int i=0; i<11; results[rand() % 11]++,++i);
for(int i=0; i<11; num_of_even += results[i], i+=2);
auto it = find_if(results.begin(), results.end(), [] (const std::pair<int, int>& v) { return v.second > 0; } );

És kész is. *kezét összecsapja smiley*

Nyilván a dolog még egyszerűbb amúgy, mert a minimum simán results.begin()-ben van a feltöltés után, de jól esett megírni egy lambdát. :)

[ Szerkesztve ]

Same rules apply!

(#3009) jattila48 válasza EQMontoya (#3008) üzenetére


jattila48
aktív tag

"Erre való a map"
Hogyne! Mindjárt ágyúval verébre. Így lehet egy nagyon egyszerű, jó esetben pár száz byte-ra leforduló programból több megás lomha bloatware-t csinálni. Sajnos manapság tényleg ez a tendencia, és ez nem kis részben a "mindenre jó" template könyvtáraknak köszönhetö. Semmi funkcionalitású pimfli kis programok akkorák, hogy nem is olyan régen egy op. rendszer kisebb volt. Ide pl. nagyon nem kell a map a maga red-black tree megvalósításával, erősen túllövése a dolognak.

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3010) dobragab válasza EQMontoya (#3008) üzenetére


dobragab
addikt

A vessző operátort erősnek érzem :D Olvashatóság szempontjából meg gyengének :)

Mért nem tömb vagy vector?

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3011) EQMontoya válasza jattila48 (#3009) üzenetére


EQMontoya
veterán

Ez nem a teljesítményről szólt éppen (nyilván erről 10 elemnél nem lehet beszélni), hanem arról, hogy használjuk kihasználjunk olyan működéséket, amik kényelmesek és megkönnyítik a dolgunkat.
Ha gyors kódot akarsz írni, akkor meg static array, ami alapból zero inites, és csinálod rajta ugyanezt.

dobragab: kihasználtam az int zero initjét, amit a static array ugyan tud, de tömb vagy vektor nem. Illetve ha megnézed az utolsó mondatomat, a kulcsok rendezettségét és validálását is ki tudod használni.

A map azért elég jó olyan felhasználásra, amikor a kulcsaid csak az értékkészlet kis részét (<20%) fedik le. :)

[ Szerkesztve ]

Same rules apply!

(#3012) jattila48 válasza EQMontoya (#3011) üzenetére


jattila48
aktív tag

Nekem úgy tűnt, hogy a kérdező erre a konkrét feladatra volt kíváncsi, nem pedig az STL rejtelmeire. Szerintem ez számára nem könnyíti meg a dolgot. Annál is inkább, hogy alapvető dolgokkal van problémája (ld. case szerkezet), inkább ezekben kéne segíteni neki. Itt többen, többször elkövetitek azt a hibát (akinek nem inge ne vegye magára), hogy nem a kérdésre válaszoltok, hanem egyfajta összekacsintós bennfentes módon csillogtatjátok a magas szintű tudásotokat, ami a kérdezőnek ugyan nem segít, viszont fellengzőssé és lekezelővé teszi a hozzászólásotokat.

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3013) EQMontoya válasza jattila48 (#3012) üzenetére


EQMontoya
veterán

Jah, jah, nyilván. :)
Mindenki lekezelő köcsög, csak Te vagy tökéletes. Kicsit unalmas már...

Same rules apply!

(#3014) dobragab válasza jattila48 (#3012) üzenetére


dobragab
addikt

Ha észrevetted, kapott már olyan választ, amilyet te elvársz. EQ megmutatta, hogy ezt igazán C++-osan hogyan illik. Pl. tőlem mindenképpen kapott volna egyszerű választ.

Ajánlom figyelmedbe Stroustrup intelmeit az Újszövetségből. (The C++ Programming Language 4th Edition)

[8] Minimize the use of arrays and C-style strings. C++ standard-library strings (§4.2), arrays (§8.2.4), and vectors (§4.4.1) can often be used to write simpler and more maintainable code compared to the traditional C style. In general, try not to build yourself what has already been provided by the standard library.

[10] Do not assume that something laboriously written in C style (avoiding C++ features such as classes, templates, and exceptions) is more efficient than a shorter alternative (e.g., using standard-library facilities). Often (but of course not always), the opposite is true.

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3015) jattila48 válasza dobragab (#3014) üzenetére


jattila48
aktív tag

És ezt szerinted " igazán C++-osan" map-pel "illik" megoldani? Szerintem nem, de hát ízlések és pofonok... Az "Újszövetségben": minimize!=avoid, often!=always, in general!= in all circumstances.

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3016) dobragab válasza jattila48 (#3015) üzenetére


dobragab
addikt

Ebben a konkrét példában, ha észrevetted, szerintem sem map kell. Viszont általánosságban igen, illik STL tárolókat, algoritmusokat használni. Ha szerinted nem, a C topikban a helyed :D

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3017) jattila48 válasza dobragab (#3016) üzenetére


jattila48
aktív tag

De ugye nem akarsz kitiltani? :)

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3018) dobragab válasza jattila48 (#3017) üzenetére


dobragab
addikt

Jó ötlet ;]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3019) Mikeboy666 válasza sztanozs (#3004) üzenetére


Mikeboy666
csendes tag

Bocsi még kezdő vagyok... Csak próbálkozom.... Abban tudnál segíteni még, hogyan kellene a tömböket összeadás, pontosan arra gondolok, hogy mennyi a guritások összege, azt, hogy csinalnád??? Illetve, hogy kiírja a legkisebb dobás sorszámát... Maxindex és minindex értékadással??? Sorry a hülye kérdésekért...

(#3020) jattila48 válasza dobragab (#3018) üzenetére


jattila48
aktív tag

Köszi! A viccben az a jó, hogy csak félig vicc :O

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3021) jattila48 válasza Mikeboy666 (#3019) üzenetére


jattila48
aktív tag

srand(time(NULL)); // véletlen generátor inicializálása
int GURIT[10], TAR[11] = { 0 }, i; // A TAR[] -ban számoljuk, hogy az egyes dobásokból mennyi volt

for (i = 0; i<10; i++) //ellenőrzött dobás bekérés
{
GURIT[i] = rand() % 11 ;
}
int dbparos = 0, guritasok_osszege=0,legkisebb_dobas=GURIT[0],legkisebb_dobas_sorszama=0;
//kezdetben feltetelezed, hogy az elso guritas a legkisebb
for (i = 0; i<10; i++) // eredmények megszámlálása
{
int gi=GURIT[i]; //segedvaltozo, hogy ne kellje mindig kiindexelni az i. guritast (hatekonyabb)
++TAR[gi];
if (gi % 2 == 0)dbparos++;
guritasok_osszege+=gi;
if(gi<legkisebb_dobas){
//a most vizsgalt guritas kisebb, mint az eddig megtalalt legkisebb, most mar ez lesz a legkisebb
legkisebb_dobas=gi;
legkisebb_dobas_sorszama=i;
}
}
for (i = 0; i<11; i++) // eredmények kiíratása
cout << "\nA(z) " << i << "-es dobasok szama:\t" << TAR[i];
cout << endl;
cout << "A paros dobasok szama:\t" << dbparos;
cout << endl;
cout << "A dobasok osszege:\t" << guritasok_osszege;
cout << endl;
cout << "Az (elso) legkisebb dobas erteke:\t" << legkisebb_dobas << "sorszama: " << legkisebb_dobas_sorszama+1;
cout << endl;

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3022) EQMontoya válasza jattila48 (#3021) üzenetére


EQMontoya
veterán

Légyszi ne szoktasd magyar változónevekre legalább, mert jobb helyen hirtelen felindulásból leggépuskáznak érte!

A legkisebb dobás és a sorszámának külön eltárolása meg elég béna, ha egy egyszerű tömbindexeléssel elérhető hozzá az adat.

[ Szerkesztve ]

Same rules apply!

(#3023) jattila48 válasza EQMontoya (#3022) üzenetére


jattila48
aktív tag

Nem szoktatom én sehogy, de hát a GURIT és TAR neveket nem én adtam, pedig szerintem magyarul vannak. Egyébként fogd fel úgy, hogy komment helyett adtam ilyen neveket. Vagy magyarul kommentezni is főbenjáró bűn?
"jobb helyen hirtelen felindulásból leggépuskáznak érte!" Ilyen helyekre én nem járok.

"A legkisebb dobás és a sorszámának külön eltárolása meg elég béna, ha egy egyszerű tömbindexeléssel elérhető hozzá az adat."
Ezt nem értem. Elmagyaráznád?

[ Szerkesztve ]

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3024) EQMontoya válasza jattila48 (#3023) üzenetére


EQMontoya
veterán

Ezt nem értem. Elmagyaráznád?

legkisebb_dobas nevű változód felesleges, mert GURIT[legkisebb_dobas_sorszama] pontosan ezt adja. :)

Same rules apply!

(#3025) jattila48 válasza EQMontoya (#3024) üzenetére


jattila48
aktív tag

Részben igazad van, viszont az if feltételben megspóroltam egy tömb indexelést. Talán ez a megoldás hatékonyabb, és jobban átlátható. A gi-t sem kellett volna bevezetni, de ugyanezért lett az is. Nem tartozik ide, de szoktál assembly kódot debuggolni? Ott látszik, hogy egy tömb indexelés költségesebb mint egy sima változó elérés. Az értékadás pedig csak az if törzsében történik meg, ami feltehetően jóval ritkábban fut le, mint a feltétel kiértékelése.

[ Szerkesztve ]

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3026) EQMontoya válasza jattila48 (#3025) üzenetére


EQMontoya
veterán

Jaja, így keletkezik a bloatware. ;)

Same rules apply!

(#3027) jattila48 válasza EQMontoya (#3026) üzenetére


jattila48
aktív tag

Persze, nem attól, hogy tömb helyett fölöslegesen map-et használsz, hanem egy szerinted (bár ahogy írtam, szerintem nem egészen) fölöslegesen bevezetett lokális változótól. Nagyon megsértődtél attól a hozzászólásomtól, ugye? Azért annyira ne vedd a szívedre!

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3033) LordX válasza EQMontoya (#3008) üzenetére


LordX
veterán

rand() % 11

(...)
random_device rnd;
uniform_int_distribution dist(0, 10);
for(int i=0; i<11; results[dist(rnd)]++,++i);
(...)

(#3034) LordX válasza EQMontoya (#3008) üzenetére


LordX
veterán

Én is inkább használnék array<int, 10> results{};-t a map helyett. map nem igazán a go-to konténer, ha 0-N indexel a kulcs :)

(#3035) EQMontoya válasza LordX (#3033) üzenetére


EQMontoya
veterán

Falura jó az. :) Egyébként közel egyenletes eloszlást is ad.
Map: azt szeretjük benne, hogy zseniális a [] operátora.
Ugyanerre a feladatra, ha mondjuk nem 1-10, hanem 1-100 intervallumban dobunk 10 randomot, már sokkal inkább a map való, mint a vektor.

Same rules apply!

(#3036) LordX válasza EQMontoya (#3035) üzenetére


LordX
veterán

Lehet jó falura, de ugyanannyit kell írni (na jó, a függvény/osztálynevek hosszabbak), ha rendesen használsz <random>-ot.

Map: Nem értek egyet: mivel a map node-okban tárolja az adatot, amiben benne van a kulcs, az érték, és jellemzően 3 pointer (left, right, parent), ezért masszívan több memóriát foglal, mint a vector: Az összes általam ismert 64 bites implementációban 32 byte + sizeof(pair<K,V>) a node méret + allocation overhead. Win x64-en a sizeof 16 bye, tehát 40 byte a blokk, ahol az overhead átlagosan 56 byte (!!), azaz 96 byte. Per node. Ja, és a map-nek kell egy extra node (az end node). Szóval 10 elemhez kell 1056 byte heap memória map-el.

Vector esetében ez N*sizeof(int) + overhead, ami most 10*4+56 = 96, összesen a 10 elemre. 100 elemre ez 9696 vs 449 byte.

Szóval ha a cellák több, mint ~9%-át használod ki, akkor a vector nyer map ellen. És még nem is beszéltünk mennyire cache-friendly a vector, és mennyire cache-ellenséges a map; hogy a vektorban indexelsz, nem keresel.

Azért ha tényleg el kell tárolnod a kulcsot, egy kategóriával szebben áll a map, de még mindig vesztésre áll, nem véletlen van a flat_map a boost-ban (ami gyakorlatilag egy map interfész vector felett).

(#3037) jattila48 válasza jattila48 (#3025) üzenetére


jattila48
aktív tag

Kissé off topic, de azért érdekes:
A legkisebb dobás meghatározásakor EQMontoya kifogásolta, hogy fölöslegesen vezettem be a legkisebb_dobas változót, mert tömb indexeléssel is megoldható lett volna. Ez igaz, azonban ahogy írtam, valószínűleg hatékonyabb így, mert a feltétel kiértékelésben megspórolom az egyébként költséges tömb indexelést, ezzel szemben az if törzsben "bevásárolok" egy értékadást. Ha az értékadások össz költsége kisebb mint a tömbindexelések össz költsége, akkor ez megéri (itt most figyelmen kívül hagyom az egyetlen tömb indexelés, és értékadás közötti költségek viszonyát). Mivel a feltétel jóval ritkábban értékelődik igazra, ezért az értékadás is jóval ritkábban lesz végrehajtva. Nos, kiszámoltam, hogy mennyi is az annyi. A konkrét feladatban [0,10] intervallumból generáltunk egyenletes eloszlással egy 10 elemű tömböt. Ekkor nyilván a generált sorozatok eloszlása is egyenletes. Kiszámoltam, hogy a konkrét feladatban mi a várható értéke a feltétel igazra értékelődésének, és 2,55 adódott, bele számolva a legkisebb_dobas kezdő értékadását is. A tömb indexelős megoldással ezzel szemben 10 indexelés adódik. Tehát tényleg hatékonyabb az értékadós megoldás.

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3038) dobragab


dobragab
addikt

Nyissunk nektek Optimalizálás topikot? ;]

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3039) dobragab


dobragab
addikt

Napi mitírki. Az első C, a második C++. Feltéve, hogy a char 1, az int 4 bájtos.

1.

printf("%d", sizeof('a'));
printf("%d", sizeof(+'a'));

2.

std::cout << sizeof('a');
std::cout << sizeof(+'a');

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3040) LordX válasza dobragab (#3039) üzenetére


LordX
veterán

1. Undefined behavior ;] A sizeof size_t-t ad vissza, ami egy nem-specifikált méretű unsigned integer vs a %d signed int-et vár. Variadic függvény, nem olyan típust olvas, amit átadsz, goto Launch_nuclear_missiles; "%zu" kell oda :)

(#3041) dobragab válasza LordX (#3040) üzenetére


dobragab
addikt

Oké, első language lawyer megjött :D Igazad van.

3.

printf("%zu", sizeof('a'));
printf("%zu", sizeof(+'a'));

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3042) EQMontoya válasza dobragab (#3041) üzenetére


EQMontoya
veterán

Akkor fejeljük meg a dolgot egy ilyennel is:
printf("%zu", sizeof("a"));

Same rules apply!

(#3043) dobragab válasza EQMontoya (#3042) üzenetére


dobragab
addikt

Rendben :D Rálicitálok.

4.

printf("%zu", sizeof("hello"));
printf("%zu", sizeof("hello"+0));

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3044) cattus


cattus
őstag

Ha már mindenki bedobálja a "mit ír ki" kódjait, itt egy tőlem is: ;]

#include <stdio.h>
main(t, _, a) char *a; {
return!0<t ? t<3 ? main(-79, -13, a + main(-87, 1 - _, main(-86, 0, a + 1) + a)) :
1, t<_ ? main(t + 1, _, a) : 3, main(-94, -27 + t, a) && t == 2 ? _<13 ?
main(2, _ + 1, "%s %d %d\n") : 9 : 16 : t<0 ? t<-72 ? main(_, t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#\
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
: t<-50 ? _ == *a ? putchar(31[a]) : main(-65, _, a + 1) : main((*a == '/') + t, _, a + 1)
: 0<t ? main(2, 2, "%s") : *a == '/' || main(0, main(-61, *a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"), a + 1);
}

[ Szerkesztve ]

Do the thing!

(#3045) dobragab válasza cattus (#3044) üzenetére


dobragab
addikt

Ez klasszikus :P

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3046) mrhitoshi


mrhitoshi
veterán

Üdv! Írtam egy programot arra, hogy hogyan fog repülni egy ágyúgolyó a kilövés után. A program figyelembe veszi a légellenállást is, elvileg.
Az lenne a gond, hogy a program gyorsan lefut, ha nincs légellenállás... ki hitte volna, az matematikailag könnyebb feladat. A kódot úgy írtam meg, hogy fogtam a dolog fizikáját, és megoldottam a differenciálegyenletet, majd pedig a kapott függvényeket leprogramoztam. A program jól működik, ha nincs légellenállás, szépen megadja a kilövési sebességhez, és a távolsághoz tartozó szöget, és szépen ki is rajzolja, tehát ezzel nincs gond. A légellenállásos egyenletekkel viszont nem tud megbirkózni. 16 percen keresztül számolt, közben 1 GB memóriát elhasznált, és semmi eredmény. Igaz sajnos, csak egy szálon fut a program.
Van valami ötlet esetleg erre a problémára ? Nem tudom linkeljek programkódot ?

A vicces a dologban az, hogy még így is csak közelítek a valósághoz. ;]

[ Szerkesztve ]

PS4

(#3047) emvy válasza mrhitoshi (#3046) üzenetére


emvy
nagyúr

Linkelj kodot.

while (!sleep) sheep++;

(#3048) mrhitoshi válasza emvy (#3047) üzenetére


mrhitoshi
veterán

[link] :)

[ Szerkesztve ]

PS4

(#3049) EQMontoya válasza mrhitoshi (#3048) üzenetére


EQMontoya
veterán

Nem fogtam fel teljesen a kódot, de ha jól értem a ciklust, csak akkor áll le a program, ha x==s && y==0 állapot áll fenn egyszerre. (legalábbis egymás epszilon sugarú környezetében van)
Valószínűleg ez nem teljesül valamilyen számítási hiba miatt soha.
Az 1g ram pedig azért van, mert mindig eltárolod az eredményt, de a végtelenségig tárolgatsz.
Valamelyik képleted lesz rossz, ennek pillanatok alatt kellene lefutnia.

Erre a részre gondolok:
for (t = 0; 1; t += TIME_STEP)
{
x = get_x(type, v_0, t, alfa, k, m);
y = get_y(type, v_0, t, alfa, k, m);

//A MARGIN szerepe, hogy hova kerüljön a koordináta rendszer, margóként szolgál, és a SIZE adja meg a nagyságát.
draw_x = (int)round(SIZE * (x / s)) + MARGIN;
draw_y = (int)round(fabs(SIZE * (y / max_y) - SIZE)) + MARGIN;

graph_x = (int)round((x / s) * GRAPH);
graph_y = (int)round((y / max_y) * GRAPH);

graph_set(&graph, graph_x, graph_y);
//Itt kapja meg a koordinátákat az .svg fájloknak megfelelő stílusban.
fprintf(f, "%s %d %d ", (t == 0 ? "M" : "L"), draw_x, draw_y);

if (comp(x, s) && comp(y, 0))
{
graph_draw(&graph);
break;
}
}

[ Szerkesztve ]

Same rules apply!

(#3050) ToMmY_hun


ToMmY_hun
senior tag

OFF: Gyakorlati szempontokat figyelembe véve, úgy mint megszerzett tudás (ami fel is használható), fizetés illetve későbbi előbbre lépési lehetőség szerint érdemes MSc-re menni? (Számomra a legfontosabb paraméter a megszerezhető ismeretanyag, a többi csak plusz tényezőként lett felsorolva jóval kisebb súllyal.)
Felvetődött ötletként, hogy jelentkeznék villamosmérnöki diploma után mérnök informatika MSc képzésre a BME-re, de egyelőre még csak puhatolózok a témában. Úgy érzem hasznos lenne az a matematikai ismeretanyag, amit ott meg lehet szerezni (Óbudain tanultam és itt elég gyenge a matek oktatás), nem beszélve a többi szakmához szorosan kapcsolódó ismeretről. Csinálta valaki az MSc-t munka mellett? Vannak esetleg erről tapasztalatok?

Előre is köszönöm a válaszokat, akár privátban is megkereshet akinek lenne információja. :)

[ Szerkesztve ]

C programmers never die, they are just cast into void.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.