- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- Fogkefe: elektromos vagy manuális?
- sziku69: Szólánc.
- gban: Ingyen kellene, de tegnapra
- Lalikiraly: Astra kalandok @ Harmadik rész
- hdanesz: 50. Debrecen Nagydíj - nemzetközi salakmotorverseny - életemben másodjára
- Magga: PLEX: multimédia az egész lakásban
-
LOGOUT
Új hozzászólás Aktív témák
-
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.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Samsung Galaxy A56 - megbízható középszerűség
- HP notebook topic
- Csendben mutatkozott be a Galaxy S10 Lite
- Clair Obscur: Expedition 33 teszt
- HiFi műszaki szemmel - sztereó hangrendszerek
- GTA VI
- LEGO klub
- Epson nyomtatók
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- Telefon felvásárlás!! Huawei P20 Lite/Huawei P20/Huawei P30 Lite/Huawei P30/Huawei P30 Pro
- LG 32GS94UX - 32" OLED / UHD 4K / 240Hz - 480Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- Új Dell 13 Inspiron 5310 FHD+ IPS i5-11300H 4.4Ghz 8GB 256GB Intel Iris XE Graphics Win11 Garancia
- MacBook Pro 16 i7-9750H 16GB RAM 512GB SSD RX 5300M 1 év garancia
- Xiaomi Redmi Note 10 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: FOTC
Város: Budapest