-
IT café
Új hozzászólás Aktív témák
-
Miért, egy nem-diplomás kezdőre rábíznál bármit? Ez természetes, hogy ha valaki frissen kerül ki egy egyetemről, még a tapasztalat hiánya miatt nem tud olyan önálló lenni, mint pár év múlva. De ha elvégez egy egyetemet, szerintem már eleve egy indikátor, hogy van benne kitartás és végig tud csinálni egy kemény projektet.
-
Én fizikusként végeztem, azon belül tanították a programozást (C, C++, aztán Matlab, hasonlók), így nyilván el sem tudom képzelni matek nélkül az egészet. Nálunk pont arról szólt, hogy algoritmusokat programozzunk le.
Weblapfejlesztés meg segédprogramok meg hasonlókhoz biztos nem kell matek, de szerintem egy programozónak nem lehet hasznosabb tudása a programozáson kívül a mateknél. Gazdaságin is. Mondjuk írni akarsz egy kereskedő progit devizára (HFT), modellezni akarsz valami folyamatot stb, ez mind-mind matek. A mi szakunkról rengetegen mennek olyan cégekhez, mnit pl. a Morgan Stanley, ahol programoznak és pont a matematikai-fizikai ismereteik miatt tudják a modellalkotási feladatokat megcsinálni. -
válasz
tboy93 #13239 üzenetére
Nekem konkrétan rémlik régről, de mikor én ezt tanultam egyetemen az már kb. 10 éve volt. Aztán a munkám során sem igazán kell használni sajnos, pedig a programozás olyan dolog, amit folyamatos gyakorlással tud elsajátítani, fejleszteni az ember. Én meg kb. 2 évente veszem elő a Visual Studio-t, hogy valami egyszerűbb algoritmust lekódoljak. Aztán el is szokott tartani vagy egy hétig, hogy összedobjak valamit, ami egy gyakorlatban lévő programozónak lenne talán 2-3 óra. Néha full alap dolgoknak utána kell néznem, úgy kimegy a fejemből.
-
Megoldás:
fájlba kiíratás elé betettem egyoutput.precision(10);
parancsot. Ha a MATRIX static double, a nonzer_val pedig double, akkor tökéletes minden.
Kíváncsiságból próbálgattam floattal is, de olyan dolgokat produkált, amit nem tudtam hova tenni... Bár ez már szigorúan véve nem a probléma része, mert a double megoldja (és nem kell a halálba optimalizálnom), de miért csinálja azt, hogy float esetén kiegészíti a számot még random, kisebb helyi értékű számjegyekkel, hogy meglegyen a 10 számjegy? Biztos hogy nem véletlenszerűen, mert kerekítés után az eredeti számot mindig visszaadja. És a forrás fájlban nincs több számjegy, nincs több információ, csak ami a fentebb linkeltben is látszik. Csak nézek és nem értem, hogy wtf? Valakinek valami tipp?
Ilyen, ha jó:
2 2 2686.361
2 3 1943.819
2 4 119.4358
2 5 119.4358
3 2 0.723588
3 3 2685.947
3 17 119.4358
3 18 119.4358
4 2 0.04446005És a float ilyet csinál belőle precision(10)-el:
2 2 2686.361084
2 3 1943.81897
2 4 119.4357986
2 5 119.4357986
3 2 0.7235879898
3 3 2685.947021
3 17 119.4357986
3 18 119.4357986
4 2 0.04446005076 -
Ja, sejtettem, hogy a mérettel lesz baja, de azt hittem, hogy ezt ki tudja rakni RAM-ba és ez nem gond.
(#13226) kovisoft
1. Megpróbálom ezt.
2. Igen(#13228) MATEO6600
Azt is átírtam, de már előtte jelentkezett a probléma. Csináltam kiíratást és a float MATRIX-ban már a kerekített számok voltak.Köszi mindenkinek
-
Sziasztok!
Lenne egy kérdésem. Írtam egy rövid programot C++ -ban, amivel .txt-ből beolvasok egy ritka mátrixot (sparse matrix), majd Matrix Market formátumban kiíratom. A probléma, hogy az output formátumban már kerekített értékek vannak. Feltételezem azért, mert a float adattípusnak túl hosszúak a számok (bár sztem abban is el kéne férniük...). Ezért a MATRIX elnevezésű DIM*DIM méretű tömböt, amibe beolvasom a mátrixot, double típusúra vettem, ebben az esetben azonban, bár gond nélkül lefordul a forráskód, futtatásnál egyszerűen nem történik semmi. Hibaüzenet sincs. Próbáltam feltárni, hogy hol hasal el, de olyan, mint ha a main függvénybe sem lépne be. Fogalmam sincs, hogy mi a baj. A forráskód alább - ha itt a MATRIX[DIM*DIM] előtt a float-ot double-re cserélem, akkor történik az anomália. Van tipp, hogy mi a gond?
#include <iostream>
#include <fstream>
#include <vector>using namespace std;
const int DIM = 385;
int main()
{
ifstream input("solveInput.txt");
ofstream output("Input_MM_precise.mtx");
float MATRIX[DIM*DIM];
unsigned int nonzeros = 0;
vector<int> nonzero_loc_row, nonzero_loc_col; //a nonzero element helye, sor és oszlop
vector<float> nonzero_val; //a nonzero element értéke
if (input.is_open())
{
for (int i = 0; i < DIM; i++)
{
for (int j = 0; j < DIM; j++)
{
input >> MATRIX[i*DIM + j];
if (MATRIX[i*DIM + j] != 0)
{
nonzeros++;
nonzero_loc_row.push_back(i);
nonzero_loc_col.push_back(j);
nonzero_val.push_back(MATRIX[i*DIM + j]);
}
}
}
}
else cout << "Nem talalhato a fajl\n";output << DIM << " " << DIM << " " << nonzeros << endl;
for (unsigned int i = 0; i < nonzeros; i++) output << nonzero_loc_row[i]+1 << " " << nonzero_loc_col[i]+1 << " " << nonzero_val[i] << endl; // +1 az 1-es alapú indexelés miattoutput.close();
cout << "\n" << "Vege" << endl;
}Példa az input mátrixból - csak egy random kimásolás, hogy látszódjon pár szám:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 2686.361 1943.819 119.4358 119.4358 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.723588 2685.947 0 0 0 0 0 0 0 0 0 0 0 0 0 119.4358 119.4358 0
0 0.04446005 0 1325.068 583.3548 119.4358 119.4358 0 0 0 0 0 0 0
0 0.04446005 0 0.4402452 1679.329 0 0 0 0 0 0 0 0 0 0 0 0 0 172.5
0 0 0 0.09013559 0 1324.239 583.3548 119.4358 119.4358 0 0 0 0 0
0 0 0 0.09013559 0 0.4405208 1678.5 0 0 0 0 0 0 0 0 0 0 0 0 0 172
0 0 0 0 0 0.09019202 0 1323.41 583.3548 119.4358 119.4358 0 0 0 0
0 0 0 0 0 0.09019202 0 0.4407968 1677.672 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0.09024853 0 1322.581 583.3548 119.4358 119.4358 0
0 0 0 0 0 0 0 0.09024853 0 0.4410731 1676.844 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.0903051 0 1321.752 583.3548 119.4358 119.4358
0 0 0 0 0 0 0 0 0 0.0903051 0 0.4413498 1676.016 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0.09036174 0 2681.386 583.3548 550.4225 0 0 stb.Végeredményben pedig ilyenek lesznek:
2 2 2686.36
2 3 1943.82
2 4 119.436
2 5 119.436
3 2 0.723588
3 3 2685.95
3 17 119.436
3 18 119.436
4 2 0.0444601
4 4 1325.07
4 5 583.355
4 6 119.436
4 7 119.436
5 2 0.0444601
stb. -
válasz
DrojDtroll #13169 üzenetére
Hát ennyi munkát már csak bele tudsz tenni, hogy a forráskódban a kiírandó szöveget átírod
-
válasz
dabadab #12966 üzenetére
És azt hol találom? Itt már meg van nyitva a project, csak nem kattintottam rá egyik fájlra sem, azért üres a képernyő. A jobb felső ablakban lévő project fájlra kattintottam jobb-al és úgy hoztam ezt elő. De ugyanez jön elő, ha bal felül a project ->properties-re kattintok.
-
Üdv!
Command line argument-tel szeretnék egy kódot debug-olni Visual Studio-ban és azt találtam mindenhol, hogy a solution explorer-ben kell a project fájlra kattintani, majd properties és ott lesz egy debug tab. Én viszont akárhogy meresztem a szemem nem találok ilyet. Hol lehet a hiba?
Remélem, hogy érthető, hogy mi a kínom
Ha nem, szóljatok, próbálok pontosítani -
Sziasztok!
Remélem nem túl off, csak azt szeretném megtudni, hogy ha van egy MS Visual Studio 2013 kulcsom, de én a 2012-t akarom telepíteni, akkor azt is be tudom aktiválni vele? Úgy tudtam, hogy igen, de nem akarja elfogadni.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Tárgyal az egyesülésről a GlobalFoundries és a UMC?
- Futás, futópályák
- Nintendo Switch 2
- Google Chromecast topic
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Formula-1
- Kerékpárosok, bringások ide!
- Kormányok / autós szimulátorok topikja
- The First Descendant (PC, PS4, PS5, XO, XSX)
- További aktív témák...
- 3DKRAFT.HU - 3D NYOMTATÁS - AZONNALI ÁRAJÁNLAT - GYORS KIVITELEZÉS - 475+ POZITÍV ÉRTÉKELÉS
- Alcatel TAB 10" 32GB LTE / Normál állapotban / 12 hónap jótállással
- LG 42C3 - 42" OLED EVO - 4K 120Hz 0.1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - A9 Gen6 CPU
- Bomba ár! Lenovo ThinkPad T440P - i7-4GEN I 8GB I 512SSD I NVIDIA I 14" HD+ I Cam I W10 I Gari!
- LG 55B3 - 55" OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest