一个简单的C++程序,新手
一个简单的多文件程序,a.txt如下;351245512445354245565725其中第一行是矩阵的行和列,要求将这个3*5矩阵的行列颠倒下面是main.cpp#in...
一个简单的多文件程序,a.txt如下;
3 5
12 45 51 2 4
45 3 54 2 45
5 65 7 2 5
其中第一行是矩阵的行和列,要求将这个3*5矩阵的行列颠倒
下面是main.cpp
#include <iostream>
#include <iomanip>
#include <fstream>
#include <iomanip>
#include <vector>
#include"f1.h"
using namespace std;
typedef vector<vector<int> > Mat;
Mat transpose(const Mat& a);
void print(const Mat& a);
int main(int argc, char *argv[])
{
print(transpose(input()));
cin.get();
}
Mat transpose(const Mat& a)
{
Mat b(a[0].size(),vector<int>(a.size()));
for(int i=0;i<a.size();++i)
for(int j=0;j<a[0].size();++j)
b[j][i]=a[i][j];
return b;
}
void print(const Mat& a)
{
for(int i=0;i<a.size();++i)
for(int j=0;j<a[0].size();++j)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
下面是f1.h
Mat input();
下面是f1.cpp
#include"f1.h"
#include <iostream>
#include <fstream>
#include <vector>
Mat input()
{
ifstream in("a.txt");
int row,col;
in>>row>>col;
Mat a(row,vector<int>(col));
for(int i=0;i<row;++i)
for(int j=0;j<col;++j)
in>>a[i][j];
return a;
}
编译错误:
6 E:\钱能~1\例程\f0702\main.cpp In file included from main.cpp
1 E:\钱能~1\例程\f0702\f1.h syntax error before `)' token
E:\钱能~1\例程\f0702\main.cpp In function `int main(int, char**)':
16 E:\钱能~1\例程\f0702\main.cpp `input' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
E:\钱能~1\例程\f0702\Makefile.win [Build Error] [main.o] Error 1
另外一个问题(和前面无关),上面问题已经给全了(请给出错误,而不要改变方法,因为我是在学习知识而不是解决问题),现在要将一个文件中的两个3*5矩阵
3 5
15 56 6 5 2
4 5 7 52 7
4 78 5 7 2
15 56 6 5 2
4 5 7 52 7
4 78 5 7 2
相加,第一行的3 5给出了矩阵的行和列。
主程序的代码:
int main()
{
ifstream in("a.txt");
for(int row,col;in>>row>>col;)
{
Mat a(row,vector<int>(col));
Mat b=a;
input(in,a);
input(in,a);
print(matAdd(a,b));
}
}
其中Mat的定义为typedef vector(vector<int> >Mat;
问题是:在for中,是不是只进行了一次循环,只是给row\col传递了3和5
编译环境都是dev c++ 展开
3 5
12 45 51 2 4
45 3 54 2 45
5 65 7 2 5
其中第一行是矩阵的行和列,要求将这个3*5矩阵的行列颠倒
下面是main.cpp
#include <iostream>
#include <iomanip>
#include <fstream>
#include <iomanip>
#include <vector>
#include"f1.h"
using namespace std;
typedef vector<vector<int> > Mat;
Mat transpose(const Mat& a);
void print(const Mat& a);
int main(int argc, char *argv[])
{
print(transpose(input()));
cin.get();
}
Mat transpose(const Mat& a)
{
Mat b(a[0].size(),vector<int>(a.size()));
for(int i=0;i<a.size();++i)
for(int j=0;j<a[0].size();++j)
b[j][i]=a[i][j];
return b;
}
void print(const Mat& a)
{
for(int i=0;i<a.size();++i)
for(int j=0;j<a[0].size();++j)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
下面是f1.h
Mat input();
下面是f1.cpp
#include"f1.h"
#include <iostream>
#include <fstream>
#include <vector>
Mat input()
{
ifstream in("a.txt");
int row,col;
in>>row>>col;
Mat a(row,vector<int>(col));
for(int i=0;i<row;++i)
for(int j=0;j<col;++j)
in>>a[i][j];
return a;
}
编译错误:
6 E:\钱能~1\例程\f0702\main.cpp In file included from main.cpp
1 E:\钱能~1\例程\f0702\f1.h syntax error before `)' token
E:\钱能~1\例程\f0702\main.cpp In function `int main(int, char**)':
16 E:\钱能~1\例程\f0702\main.cpp `input' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
E:\钱能~1\例程\f0702\Makefile.win [Build Error] [main.o] Error 1
另外一个问题(和前面无关),上面问题已经给全了(请给出错误,而不要改变方法,因为我是在学习知识而不是解决问题),现在要将一个文件中的两个3*5矩阵
3 5
15 56 6 5 2
4 5 7 52 7
4 78 5 7 2
15 56 6 5 2
4 5 7 52 7
4 78 5 7 2
相加,第一行的3 5给出了矩阵的行和列。
主程序的代码:
int main()
{
ifstream in("a.txt");
for(int row,col;in>>row>>col;)
{
Mat a(row,vector<int>(col));
Mat b=a;
input(in,a);
input(in,a);
print(matAdd(a,b));
}
}
其中Mat的定义为typedef vector(vector<int> >Mat;
问题是:在for中,是不是只进行了一次循环,只是给row\col传递了3和5
编译环境都是dev c++ 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询