Kezdőlap › Fórumok › Programozás › file beolvasás c++
- This topic has 154 hozzászólás, 8 résztvevő, and was last updated 16 years, 9 months telt el by
kisbetu.
-
SzerzőBejegyzés
-
2008-10-19-16:51 #2174431
Egyszerubb, ha csatolom a forraskodot es a matrix.dat file-t. Egyszeruseg kedveert csak 5 db. matrixot tartalmaz a .dat, de ez a lenyegen nem valtoztat.
A matrix.dat ertelmezese (a matrix elemei valos es kepzetes reszre vannak bontva az alabbi modon):
Code:2 <— 2×2-es matrix, N=2
1 0 0 0 <— Re=1 Im=0 Re=0 Im=0
0 0 1 0 <— Re=0 Im=0 Re=1 Im=02008-10-19-16:51 #2174432Egyszerubb, ha csatolom a forraskodot es a matrix.dat file-t. Egyszeruseg kedveert csak 5 db. matrixot tartalmaz a .dat, de ez a lenyegen nem valtoztat.
A matrix.dat ertelmezese (a matrix elemei valos es kepzetes reszre vannak bontva az alabbi modon):
Code:2 <— 2×2-es matrix, N=2
1 0 0 0 <— Re=1 Im=0 Re=0 Im=0
0 0 1 0 <— Re=0 Im=0 Re=1 Im=02008-10-19-16:59 #2174433Jól agyonkommentezted…
2008-10-19-16:59 #2174434Jól agyonkommentezted…
2008-10-19-17:06 #2174435Gyűlölöm a C-t.
Semmi kedvem végigrágni a progidat, amit te magad sem értesz.
Szeretnék inkább továbbra is kérdezni…
Tehát: mik a terveid az ezer darab mátrixszal?
(Ledefiniáltad az A-t 50×50-re, aztán használod 2×2-re!)Legszívesebben létrehoznék egy 1000 x 2 x 2-es tömböt, és az olvasódat – a már javasolt – 1000-es cilkussal hívnám.
Code:fálylnyitás
ciklus m 1… 1000
ciklus i 1..2
ciklus j 1..2
olvas A(m,i,j).R .I
j vége
i vége
m vége
fálylzárás2008-10-19-17:06 #2174436Gyűlölöm a C-t.
Semmi kedvem végigrágni a progidat, amit te magad sem értesz.
Szeretnék inkább továbbra is kérdezni…
Tehát: mik a terveid az ezer darab mátrixszal?
(Ledefiniáltad az A-t 50×50-re, aztán használod 2×2-re!)Legszívesebben létrehoznék egy 1000 x 2 x 2-es tömböt, és az olvasódat – a már javasolt – 1000-es cilkussal hívnám.
Code:fálylnyitás
ciklus m 1… 1000
ciklus i 1..2
ciklus j 1..2
olvas A(m,i,j).R .I
j vége
i vége
m vége
fálylzárás2008-10-19-17:27 #2174437Azt hiszem kezdem érteni mit szeretnél. Van egy C++ mátrix feldolgozó gyűjteményed és ahhoz szeretnél beolvasó részt készíteni.
jules wrote:Kiprobaltam 1000 helyett csak 2-re, de igy csak a 2. matrixot olvassa be 🙁Code:void BEO() {int i, j;
FILE *fp;
fp=fopen(„matrix.dat”,”r”);for(int k=0; k<2; k++){
fscanf(fp,"%d", &N);
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
fscanf(fp,"%lf %lf", &A[i][j].R, &A[i][j].I);
}
fclose(fp);};
Valami ilyesmit szeretnél: (nem kommentezem, mert ha nem érted úgyis reménytelen)
Code:typedef COMPLEX ** MATRIX;MATRIX matrix_letrehozas (int N)
{
MATRIX A;
A = new (COMPLEX*)[N];
for (int i=0;i<N;i++)
A[i] = new COMPLEX[N];
return A;
}bool matrix_beolvasas (FILE *fp, MATRIX A)
{
int N;
if (fscanf(fp,"%dn", &N) != 1)
return false;A = matrix_letrehozas (N);
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
if (fscanf(fp,"%lf %lfn", &A[i][j].R, &A[i][j].I) != 2)
return false;return true;
}void BEO() {
int i, j;
FILE *fp;
MATRIX M[2];fp=fopen("matrix.dat","r");
for(int k=0; k<2; k++)
if (matrix_beolvasas (fp, M[k]) != true) {
std::cerr << "Hibaüzenet" << std::endl;
exit (-1);
}
fclose(fp);(…) // Ide jön a mátrix feldolgozás
};Alapvető hibák:
– mindig ugyanabba a változóba olvasd be a mátrixot, ezért tudod az utolsót elérni
– nem teszed külön függvénybe a logikailag különálló részeket
– nincs alapvető hibakezelés sem, ezért nem tudod mi jó és mi nem
– fogalmad sincs mi a tömb adatszerkezet
– erősen kevered a C és C++ gondolkodásmódot (=> káosz)2008-10-19-17:27 #2174438Azt hiszem kezdem érteni mit szeretnél. Van egy C++ mátrix feldolgozó gyűjteményed és ahhoz szeretnél beolvasó részt készíteni.
jules wrote:Kiprobaltam 1000 helyett csak 2-re, de igy csak a 2. matrixot olvassa be 🙁Code:void BEO() {int i, j;
FILE *fp;
fp=fopen(„matrix.dat”,”r”);for(int k=0; k<2; k++){
fscanf(fp,"%d", &N);
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
fscanf(fp,"%lf %lf", &A[i][j].R, &A[i][j].I);
}
fclose(fp);};
Valami ilyesmit szeretnél: (nem kommentezem, mert ha nem érted úgyis reménytelen)
Code:typedef COMPLEX ** MATRIX;MATRIX matrix_letrehozas (int N)
{
MATRIX A;
A = new (COMPLEX*)[N];
for (int i=0;i<N;i++)
A[i] = new COMPLEX[N];
return A;
}bool matrix_beolvasas (FILE *fp, MATRIX A)
{
int N;
if (fscanf(fp,"%dn", &N) != 1)
return false;A = matrix_letrehozas (N);
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
if (fscanf(fp,"%lf %lfn", &A[i][j].R, &A[i][j].I) != 2)
return false;return true;
}void BEO() {
int i, j;
FILE *fp;
MATRIX M[2];fp=fopen("matrix.dat","r");
for(int k=0; k<2; k++)
if (matrix_beolvasas (fp, M[k]) != true) {
std::cerr << "Hibaüzenet" << std::endl;
exit (-1);
}
fclose(fp);(…) // Ide jön a mátrix feldolgozás
};Alapvető hibák:
– mindig ugyanabba a változóba olvasd be a mátrixot, ezért tudod az utolsót elérni
– nem teszed külön függvénybe a logikailag különálló részeket
– nincs alapvető hibakezelés sem, ezért nem tudod mi jó és mi nem
– fogalmad sincs mi a tömb adatszerkezet
– erősen kevered a C és C++ gondolkodásmódot (=> káosz)2008-10-19-17:33 #2174439Mellesleg ez egy ultra gagyi hányinger (általában agy nélküli matematikusok és fizikusok csinálnak ilyet):
Code:#define SIZE 50
#define REAL double
#define SQRT sqrt
#define ABS fabstypedef struct {
REAL R,I;
} COMPLEX;typedef COMPLEX CMat[SIZE][SIZE];
2008-10-19-17:33 #2174440Mellesleg ez egy ultra gagyi hányinger (általában agy nélküli matematikusok és fizikusok csinálnak ilyet):
Code:#define SIZE 50
#define REAL double
#define SQRT sqrt
#define ABS fabstypedef struct {
REAL R,I;
} COMPLEX;typedef COMPLEX CMat[SIZE][SIZE];
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz