首页 新闻 会员 周边 捐助

编程能力很菜,对于如下代码只能一行一行的写?请大神告知如何用for循环实现?

0
悬赏园豆:20 [待解决问题]
        for (int i = 0; i < k; i ++) {
                out << DOT << m_p1(i, 0) << " " << m_p1(i, 1) << " " << m_p1(i, 2) << endl;
        }
        for (int i = 0; i < k; i ++) {
                out << DOT << m_p2(i, 0) << " " << m_p2(i, 1) << " " << m_p2(i, 2) << endl;
        }
        for (int i = 0; i < k; i ++) {
                out << DOT << m_p3(i, 0) << " " << m_p3(i, 1) << " " << m_p3(i, 2) << endl;
        }
View Code
        m_q1 = get_matrix (q1_new, 3);
        m_q2 = get_matrix (q2_new, 3);
        m_q3 = get_matrix (q3_new, 3);
        m_q4 = get_matrix (q4_new, 3);

m_q1等是一个矩阵的数据结构,q1_new是一个文件,意思是从文件读取数据存入矩阵,主要是如何参数化这几个数字来表示不同的矩阵和文件名字?

问题补充:

上面第一段代码也是出现了类似的问题,我用的最笨的方法实现的,能用参数化各个变量名用一个循环实现?

samful的主页 samful | 初学一级 | 园豆:58
提问于:2015-11-25 19:44
< >
分享
所有回答(3)
1

m_q1~4是什么类型的?声明一个对应类型的数组不行?

XX[4];

XX[0] = get_matrix (q1_new, 3);

XX[1] = get_matrix (q2_new, 3);

XX[2] = get_matrix (q3_new, 3);

XX[3] = get_matrix (q4_new, 3);

for(foo in 0~4){

  for (int i = 0; i < k; i ++) {

     out << DOT << XX[foo](i, 0) << " " << xx[foo](i, 1) << " " << xx[foo](i, 2) << endl;

}

}

 

之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-26 08:27

m_q1~4是4个二维矩阵,功能跟二维数组差不多,如你所说可以声明为数组,但

XX[0] = get_matrix (q1_new, 3);

XX[1] = get_matrix (q2_new, 3);

XX[2] = get_matrix (q3_new, 3);

XX[3] = get_matrix (q4_new, 3);

这四行如何写循环呀,q1—4_new是四个指向特定路径文件的指针,能否写循环啊

我是这样声明的文件指针const char *q1_new = "/aa/bb/cc.txt"

支持(0) 反对(0) samful | 园豆:58 (初学一级) | 2015-11-26 09:32

@samful: 没必要全写循环吧?就算写了,能比这四行简单多少呢?

支持(0) 反对(0) 之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-26 12:39

@之奇一昂: 我只是写了其中的4行,实际上还有几十行,所以想写个循环

支持(0) 反对(0) samful | 园豆:58 (初学一级) | 2015-11-26 12:57

@samful: const char[] *q_news; 这样?

支持(0) 反对(0) 之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-26 13:20
0

string q[n] = {q1_new, q2_new, q3_new, ... };

int m_q[n];

for (int i=0; i<n; i++)

{

    m_q[i] = get_matrix (q[i], 3);

}

 

黑桃七 | 园豆:268 (菜鸟二级) | 2015-12-01 18:51
0

用wsprintf应该可以的,比如遍历你有100个文件,那么可以这么写:

char*FilePath[100];

int m_q[n];

for(int i=0;i<100;i++)

{

  FilePath[i]=new char[6];

  wsprintf(FilePath[i],"q%d_new",i);

  m_q[i]=get_matrix(FilePath[i],3);

}

Wings_翅膀 | 园豆:204 (菜鸟二级) | 2016-01-14 16:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册