• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: c语言  完成转置  

资源简介

本程序用c实现,在不知道行列的情况,下从文件中读取矩阵,并完成矩阵的转置

资源截图

代码片段和文件信息

//西安科技大学*********软件工程1102****************学习交流674083554
//本程序用于从文件中读取矩阵,并求出他的转置矩阵,主要难点不在于矩阵的转置而在于,在不知道
//行数列数的情况下从文件中读取矩阵,并赋给二维数组。
#include 
#include 

int readfile(int matrix[10][10]int &mint &n)
//文件中矩阵存储时不要在矩阵之前打回车,并且不要连续打回车。
{
FILE *p;
int i=0j=0;
char data[100];
int flag=0;
char temp[10];
int lenh=1l=1;
if((p=fopen(“matrix.txt““r+“)) == NULL)
{
return 1;
}
fseek(p02);
fputc(0p);//在文件末尾加上null便于识别文件是否结束
len=ftell(p);//测量出文本大小
fseek(p00);
fread(data1lenp);//将所有数据以字符的形式读入data数组
while (data[i])
{
while(data[i] !=‘ ‘&&data[i] != 10)
//若不是空格或回车则将数据读入temp数组,此数组是分割data数据用的
{
temp[j]=data[i];
i++;
j++;
flag=1;
if(data[i]==0)//如果读到null则数据读完跳出此循环
break;
}
if(flag)
//flag作为标志位,标志temp是否被赋过值
{
matrix[h][l]=atoi(temp);//将temp的字符串转换为整型赋给矩阵
l++;//矩阵的列移到下一位置
for (int k=0;k < j;k++)//清空temp
{
temp[k]=‘ ‘;
}
j=0;
}
if (data[i]==10)//遇到回车说明矩阵一行赋值完成,移向下一行
{
n=l-1;//记录矩阵有几列
h++;
l=1;
}
flag=0;
if(data[i]==0)
break;
i++;
}
m=h;//记录矩阵行数
fclose(p);
}

void change(int matrix[10][10]int c_matrix[10][10]int mint n)
{
int temp;
for (int i=1;i<=m;i++)
{
for (int j=1;j<=n;j++)
{
c_matrix[j][i]=matrix[i][j];
}
}
}
void show(int matrix[10][10]int mint n)
{
for (int h=1;h<=m;h++)
{
for (int l=1;l<=n;l++)
{
printf(“%d\t“matrix[h][l]);
}
printf(“\n“);
}
}
void main()
{
int matrix[10][10]c_matrix[10][10];
int mn;
readfile(matrixmn);
printf(“原矩阵:\n“);
show(matrixmn);
change(matrixc_matrixmn);
printf(“转置矩阵:\n“);
show(c_matrixnm);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-03-31 00:56  转置矩阵\
     文件        1974  2013-03-31 00:56  转置矩阵\matrix.cpp
     文件          24  2013-03-30 23:20  转置矩阵\matrix.txt
     文件        4306  2013-03-28 20:27  转置矩阵\转置矩阵.dsp
     文件         524  2013-03-28 19:52  转置矩阵\转置矩阵.dsw

评论

共有 条评论