?? matrix.cpp
字號:
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include "Matrix.h"
void Init(JUZHEN &x) {
x.a = NULL;
x.m = x.n = 0;
}
void Clear(JUZHEN &x) {
if (x.a) {
delete [ ] x.a;
x.a = NULL;
x.m = x.n = 0;
}
}
void Getin(JUZHEN &x) {
int t, i, j;
Clear(x);
do{
cout<< "m = ?"; x.m=int(Putin( ));
if(x.m<1) cout<<"ERROR!\a"<<endl;
}while(x.m<1);
do{
cout<< "n = ?"; x.n=int(Putin( ));
if(x.n<1) cout<<"ERROR!\a"<<endl;
}while(x.n<1);
t = x.m * x.n;
if(!(x.a = new JDATA [t])) {
x.m = x.n = 0;
cout<<"Not enough memory!\a\n";
}
else {
for (i=0; i<x.m; i++) {
cout << "Row " << i+1 << ": ";
for(j=0; j<x.n; j++) {
x.a[i*x.n+j]=Putin( );
}
}
}
}
void Add (JUZHEN &x, JUZHEN &y, JUZHEN &z){
int t, k;
if (x.m == y.m && x.n == y.n) {
Clear(z);
z.a = new JDATA [x.m*x.n];
z.m = x.m; z.n = x.n;
t = x.m * x.n;
for (k=0; k<t; k++) z.a[k] = x.a[k] + y.a[k];
}
else {
cout << "Error!\a\n";
}
}
void Subtration (JUZHEN &x, JUZHEN &y, JUZHEN &z){
int t, k;
if (x.m == y.m && x.n == y.n) {
Clear(z);
z.a = new JDATA [x.m*x.n];
z.m = x.m; z.n = x.n;
t = x.m * x.n;
for (k=0; k<t; k++) z.a[k] = x.a[k] - y.a[k];
}
else {
cout << "Error!\a\n";
}
}
void Mathmultiply(double r, JUZHEN &x, JUZHEN &z){
int t, k;
t=x.m*x.n;
Clear(z);
z.a = new JDATA [t];
z.m=x.m; z.n=x.n;
for (k=0; k<t; k++) z.a[k]=x.a[k]*r;
}
void Transpose (JUZHEN &x, JUZHEN &z) {
int t, j, i;
t=x.m*x.n;
Clear(z);
z.a = new JDATA [t];
z.m=x.n; z.n=x.m;
for (i=0; i<x.m; i++) {
for (j=0; j<x.n; j++) {
z.a[j*z.n+i] = x.a[i*x.n+j];
}
}
}
void Output(JUZHEN &x) {
int i, j;
for(i=0; i<x.m; i++) {
cout<<"Resaust Row " << i+1 << ": " ;
for(j=0; j<x.n; j++) {
cout<< x.a[i*x.n+j]<<" ";
}
cout << endl;
}
}
void Xmultiply (JUZHEN &x, JUZHEN &y, JUZHEN &z){
int i, j, k;
JDATA t;
Clear(z);
if (x.n==y.m){
z.m=x.m; z.n=y.n;
z.a = new JDATA [z.m*z.n];
for (i=0; i<z.m; i++) {
for (j=0; j<z.n; j++) {
for (t=k=0; k<x.n; k++) {
t+=x.a[i*x.n+k]*y.a[k*y.n+j];
}
z.a[i*z.n+j] = t;
}
}
}
else cout << "Incorrect matrix size\n";
}
void Destroy(JUZHEN &x) {
Clear(x);
}
bool Init(STRING &S) {
bool ok = false;
if(!(S = new char[1])) cout << "Not enough memory!\a\n";
else {
*S = '\0'; ok = true;
}
return ok;
}
bool Aestroy(STRING &S) {
delete [] S;
S = NULL;
return true;
}
double Putin( ) {
STRING s;
double x, y, z;
int k, n, m, i, j, l;
do{
Init(s);
delete []s;
s=new char[100];
cin>>s;
n=strlen(s);
if(s[0]==45) l=1;
else l=0;
for(j=0, i=0, k=l; k<n; k++) {
if(s[k]==46) i++;
if(s[k]>=48&&s[k]<=57||s[k]==46) ;
else j++;
}
if(j>0||i>1)cout<<"ERROR!\a"<<endl;
} while(j>0||i>1);
for(k=l; k<n&&s[k]!='.' ;k++);
m=k;
for(k=l, y=0; k<m; k++) y=(y+(int(s[k])-48))*10 ;
y/=10;
for(k=n-1, z=0; k>m; k--) z=(z+int(s[k])-48)*0.1;
if(l) x=-(y+z);
else x=y+z;
Aestroy(s);
return x;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -