Hozzászólások
-
SzerzőBejegyzés
-
uzsolt wrote:1. Van egy olyan függvény, hogy eof, nézz utána! Biztosan c++ is ismer ilyet…
Létezik egy ‘bool std::ifstream::eof()’ metódus, már csak az a kérdés, hogy hol kell megadni hogy ‘FILE*’ típust használjon. 😮
uzsolt wrote:2. Dos/win alatt írtad? Tele van ^M-mel…Talán ez a legkisebb probléma. Bár csak ez lenne a legnagyobb.
uzsolt wrote:De látom, gabaman is hasonlóan gondolkodik…Ez most jó vagy rossz? ;D
uzsolt wrote:Biztosan így szól a házi feladat 😉Milyen legyen a megoldás ha már a feladatban megadott dolgok ordítanak és mentális fájdalmat okoznak? Ha a tanító bácsi nem tanulta meg a C++ használatát, akkor mit vár a kisdiáktól? :rolleyes:
kisbetu wrote:Pedig idáig még értettem is…Ilyesmi kellene (C++ szemlélettel):
Code:template struct Complex {
T R,I;
};template class MatrixRow {
friend class Matrix;
private:
int N;
Complex *V;
MatrixRow (int n, T* v);
public:
MatrixRow (); // Nem implementált
Complex operator [] (int num);
MatrixRow& operator = (const MatrixRow &m);
};template class Matrix {
private:
int N;
Complex **V;
public:
MatrixRow (); // Nem implementált
MatrixRow (int n);
MatrixRow operator [] (int num);
Matrix& operator = (const Matrix &m);
bool operator != (const Matrix &m);
bool operator == (const Matrix &m);
};Így már nem olyan egyszerű, de akkor már miért kell C++ a C helyett?
kisbetu wrote:Pedig idáig még értettem is…Ilyesmi kellene (C++ szemlélettel):
Code:template struct Complex {
T R,I;
};template class MatrixRow {
friend class Matrix;
private:
int N;
Complex *V;
MatrixRow (int n, T* v);
public:
MatrixRow (); // Nem implementált
Complex operator [] (int num);
MatrixRow& operator = (const MatrixRow &m);
};template class Matrix {
private:
int N;
Complex **V;
public:
MatrixRow (); // Nem implementált
MatrixRow (int n);
MatrixRow operator [] (int num);
Matrix& operator = (const Matrix &m);
bool operator != (const Matrix &m);
bool operator == (const Matrix &m);
};Így már nem olyan egyszerű, de akkor már miért kell C++ a C helyett?
Mellesleg 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];
Mellesleg 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];
Azt 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)Azt 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)Nekem úgy tűnik, hogy nagyon sok emberkét becsapnak ezek a szándékosan túlzó és félelmet keltő (FUD) cikkek. Az hogy ilyesmi itt is előfordul azt bizonyítja – szerintem – hogy nagyon kezd leépülni ez a közösség. Elég megnézni még a linux vírusokról szóló témákat.
Idézek a Linux e1000e meghajtó forráskódjából:
Copyright(c) 1999 – 2008 Intel Corporation.
Forrás: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/net/e1000e;
Tehát:
1. van egy Intel termék a sok ezerből (e10000e)
2. a gyártó (Intel) fejleszti a nyílt forráskódú meghajtót hozzá
3. nem stabil, fejlesztés alatt levő meghajtóról van szó
4. egyes disztribek használják a nem stabil, fejlesztés alatt levő verziókban
5. van elérhető javítás hozzáKövetkeztetés: a Linux kernel megeszi a chip-eket ezért veszélyes, tehát kerülendő
Nekem úgy tűnik, hogy nagyon sok emberkét becsapnak ezek a szándékosan túlzó és félelmet keltő (FUD) cikkek. Az hogy ilyesmi itt is előfordul azt bizonyítja – szerintem – hogy nagyon kezd leépülni ez a közösség. Elég megnézni még a linux vírusokról szóló témákat.
Idézek a Linux e1000e meghajtó forráskódjából:
Copyright(c) 1999 – 2008 Intel Corporation.
Forrás: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/net/e1000e;
Tehát:
1. van egy Intel termék a sok ezerből (e10000e)
2. a gyártó (Intel) fejleszti a nyílt forráskódú meghajtót hozzá
3. nem stabil, fejlesztés alatt levő meghajtóról van szó
4. egyes disztribek használják a nem stabil, fejlesztés alatt levő verziókban
5. van elérhető javítás hozzáKövetkeztetés: a Linux kernel megeszi a chip-eket ezért veszélyes, tehát kerülendő
Véletlenül nem települt fel a beagle? Az képes ilyesmit csinálni, főleg ha rosszul van beállítva. Viszont ha egyszer végigfut akkor nagyon hasznos tud lenni.
-
SzerzőBejegyzés

legutóbbi hsz