#include <stdio.h>
#include <stdlib.h>
void readdata(int **pt,int row,int col);
void learning(int **pt,int row1,int col1,double **w,int row2,int col2);
void reverse(double temp[10][10]);
int HL(int **temp,int n);
int **init_iarry(int row,int col);
double **init_darry(int row,int col);
int main(int argc, const char * argv[]) {
printf("shit");
int ** pt=init_iarry(10,30);
double ** w=init_darry(4,30);
readdata(pt,10,30);//从文件读取数据
learning(pt,10,30,w,4,30);
free(pt);
free(w);
return 0;
}
void readdata(int **pt,int row,int col){
int i=0;
int j=0;
FILE *fp=NULL;//需要注意
fp=fopen("data.txt","r");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
fscanf(fp,"%d",*(pt+i*row)+j);
}
fscanf(fp,"\n");
}
}
void learning(int **pt,int row1,int col1,double **w,int row2,int col2){
int ** p=init_iarry(col1,row1);
int ** temp=init_iarry(row1,row1);
for(int i=0;i<col1;i++){
for(int j=0;j<row1;j++){
*(*(p+i*col1)+j)=*(*(pt+j*row1)+i);
}
}
for(int i=0;i<col1;i++){
for(int j=0;j<row1;j++)
printf("%d ",*(*(p+i*col1)+j));
printf("\n");}
for(int i=0;i<row1;i++){
for(int j=0;j<col1;j++)
printf("%d ",*(*(pt+i*row1)+j));
printf("\n");}
int t1,t2;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
for(int n=0;n<30;n++){
t1=(*(*(pt+i*10)+n));
t2=*(*(p+n*30)+j);
*(temp+i*10+j)+=t1*t2;
}
printf("jieshu\n");
}
}
for(int i=0;i<row1;i++){
for(int j=0;j<row1;j++)
printf("%d ",(*(*(temp+i*row1)+j)));
printf("\n");}
int a=HL(temp,10);
free(temp);
free(p);
printf("%d",a);
}
void reverse(double temp[10][10]){
}
int HL(int **temp,int n){
int i_1,j_1,c; //c为数组b的行
int b[10][10]; //用于存放余子式
int p=0,q=0;
int sum=0;
if(n==1) return **temp;
for(i_1=0;i_1<n;i_1++)
{
for(c=0;c<n-1;c++)
{
if(c<i_1) p=0;
else p=1;
for(j_1=0;j_1<n-1;j_1++)
{
b[c][j_1]=*(*(temp+(c+p)*(n-1))+j_1+1);
}
}
if(i_1%2==0) q=1;
else q=(-1);
sum=sum+(**(temp+i_1*n))*q*HL(temp,n-1);
}
return sum;
}
int **init_iarry(int row,int col){
int **a;
a = (int**)malloc(sizeof(int*)*row);//为二维数组分配3行
for (int i = 0; i < row; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*col);
}
//初始化
for (int i = 0; i < row; ++i){
for (int j = 0; j < col; ++j){
a[i][j] = 1;
}
}
return a;
}
double **init_darry(int row,int col){
double **a;
a = (double**)malloc(sizeof(double*)*row);//为二维数组分配3行
for (int i = 0; i < row; ++i){//为每列分配4个大小空间
a[i] = (double*)malloc(sizeof(double)*col);
}
//初始化
for (int i = 0; i < row; ++i){
for (int j = 0; j < col; ++j){
a[i][j] = 1;
}
}
return a;
}
#include <stdlib.h>
void readdata(int **pt,int row,int col);
void learning(int **pt,int row1,int col1,double **w,int row2,int col2);
void reverse(double temp[10][10]);
int HL(int **temp,int n);
int **init_iarry(int row,int col);
double **init_darry(int row,int col);
int main(int argc, const char * argv[]) {
printf("shit");
int ** pt=init_iarry(10,30);
double ** w=init_darry(4,30);
readdata(pt,10,30);//从文件读取数据
learning(pt,10,30,w,4,30);
free(pt);
free(w);
return 0;
}
void readdata(int **pt,int row,int col){
int i=0;
int j=0;
FILE *fp=NULL;//需要注意
fp=fopen("data.txt","r");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
fscanf(fp,"%d",*(pt+i*row)+j);
}
fscanf(fp,"\n");
}
}
void learning(int **pt,int row1,int col1,double **w,int row2,int col2){
int ** p=init_iarry(col1,row1);
int ** temp=init_iarry(row1,row1);
for(int i=0;i<col1;i++){
for(int j=0;j<row1;j++){
*(*(p+i*col1)+j)=*(*(pt+j*row1)+i);
}
}
for(int i=0;i<col1;i++){
for(int j=0;j<row1;j++)
printf("%d ",*(*(p+i*col1)+j));
printf("\n");}
for(int i=0;i<row1;i++){
for(int j=0;j<col1;j++)
printf("%d ",*(*(pt+i*row1)+j));
printf("\n");}
int t1,t2;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
for(int n=0;n<30;n++){
t1=(*(*(pt+i*10)+n));
t2=*(*(p+n*30)+j);
*(temp+i*10+j)+=t1*t2;
}
printf("jieshu\n");
}
}
for(int i=0;i<row1;i++){
for(int j=0;j<row1;j++)
printf("%d ",(*(*(temp+i*row1)+j)));
printf("\n");}
int a=HL(temp,10);
free(temp);
free(p);
printf("%d",a);
}
void reverse(double temp[10][10]){
}
int HL(int **temp,int n){
int i_1,j_1,c; //c为数组b的行
int b[10][10]; //用于存放余子式
int p=0,q=0;
int sum=0;
if(n==1) return **temp;
for(i_1=0;i_1<n;i_1++)
{
for(c=0;c<n-1;c++)
{
if(c<i_1) p=0;
else p=1;
for(j_1=0;j_1<n-1;j_1++)
{
b[c][j_1]=*(*(temp+(c+p)*(n-1))+j_1+1);
}
}
if(i_1%2==0) q=1;
else q=(-1);
sum=sum+(**(temp+i_1*n))*q*HL(temp,n-1);
}
return sum;
}
int **init_iarry(int row,int col){
int **a;
a = (int**)malloc(sizeof(int*)*row);//为二维数组分配3行
for (int i = 0; i < row; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*col);
}
//初始化
for (int i = 0; i < row; ++i){
for (int j = 0; j < col; ++j){
a[i][j] = 1;
}
}
return a;
}
double **init_darry(int row,int col){
double **a;
a = (double**)malloc(sizeof(double*)*row);//为二维数组分配3行
for (int i = 0; i < row; ++i){//为每列分配4个大小空间
a[i] = (double*)malloc(sizeof(double)*col);
}
//初始化
for (int i = 0; i < row; ++i){
for (int j = 0; j < col; ++j){
a[i][j] = 1;
}
}
return a;
}