| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 563 人关注过本帖
标题:麻烦大几帮忙看一下
只看楼主 加入收藏
徐宗保
Rank: 1
来 自:江苏盐城
等 级:新手上路
帖 子:45
专家分:7
注 册:2012-3-4
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:7 
麻烦大几帮忙看一下
编写一个函数,使给定的一个N维数组(N×N)行列互换(N>3)。


#include<iostream>
using namespace std;
int show(int a[5][5])
{
    int i,j;
       for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
           cout<<a[i][j]<<"  ";
        }
        cout<<endl;
    }
    return 0;
}
int exchange(int a[5][5])
{
    int i,j,temp;
       for(i=0;i<5;i++)
        for(j=0;j<=i;j++)
        {
            temp=a[i][j];
            a[i][j]=a[j][i];
            a[j][i]=temp;
        }
    return 0;
}
void main()
{
    int a[5][5]={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3},{4,4,4,4,4},{5,5,5,5,5}};
    int play(int),exchenge(int);
    play(a[5][5]);
    exchange(a[5][5]);
    play(a[5][5]);
}
搜索更多相关主题的帖子: exchange include return 
2013-09-26 22:49
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:2 
就是矩阵转置了,用双重循环,记住关系A[i][j]=A[j][i]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-09-27 07:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
你的代码是抄来的吧?否则不会能写出这样的代码,却在main中连最基本的错误都看不出。

程序代码:
#include <iostream>
#include <algorithm>

template<typename T, size_t N>
void PrintSquare( std::ostream& os, const T (&a)[N][N] )
{
    for( size_t i=0; i!=N*N; ++i )
        os << a[i/N][i%N] << ( (i+1)%N==0 ? "\n" : " " );
}

template<typename T, size_t N>
void ExchgSquare( T (&a)[N][N] )
{
    for( size_t i=0; i!=N*N; ++i )
        if( i/N > i%N )
            std::swap( a[i/N][i%N], a[i%N][i/N] );
}

using namespace std;

int main()
{
    int a[5][5] = { {1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3}, {4,4,4,4,4}, {5,5,5,5,5} };

    PrintSquare( cout, a );
    ExchgSquare( a );
    PrintSquare( cout, a );

    return 0;
}



[ 本帖最后由 rjsp 于 2013-9-27 11:17 编辑 ]
2013-09-27 08:34
默默潜水Y
Rank: 1
等 级:新手上路
帖 子:2
专家分:7
注 册:2013-9-8
收藏
得分:2 
我是新手,楼上的太高端了,楼主看得懂不- -。
程序代码:
#include<iostream>

using namespace std;

void show(int a[][5])
{
    int i,j;
       for(i=0;i<5;i++){
           for(j=0;j<5;j++){
                cout << a[i][j] << "  ";
           }
            cout << endl;
       }
       cout << endl;
}

void exchange(int a[][5])
{
    int i,j,temp;

    for(i=0;i<5;i++){
        for(j=i;j<5;j++){
            temp = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = temp;
        }
    }
    cout << endl;
    show(a);
}

int main()
{
    int a[5][5]={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3},{4,4,4,4,4},{5,5,5,5,5}};

    show(a);

    exchange(a);

    system("pause");

    return 0;
}
这样可以不?
2013-09-27 10:48
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:2 
以下是引用rjsp在2013-9-27 08:34:55的发言:

你的代码是抄来的吧?否则不会能写出这样的代码,却在main中连最基本的错误都看不出。

#include  
#include  
 
template
void PrintSquare( std::ostream& os, const T (&a)[N][N] )
{
    for( size_t i=0; i!=N*N; ++i )
        os << a << ( (i+1)%N==0 ? "\n" : " " );
}
 
template
void ExchgSquare( T (&a)[N][N] )
{
    for( size_t i=0; i!=N*N; ++i )
        if( i/N > i%N )
            std::swap( a, a );
}
 
using namespace std;
 
int main()
{
    int a[5][5] = { {1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3}, {4,4,4,4,4}, {5,5,5,5,5} };
 
    PrintSquare( cout, a );
    ExchgSquare( a );
    PrintSquare( cout, a );
 
    return 0;
}
这个代码让你越改越乱了,就这样就行了:
#include <iostream>
#include <algorithm>
template<typename T, size_t N>
void PrintSquare( std::ostream& os, const T (&a)[N][N] )
{
    for( size_t i=0; i!=N*N; ++i )
        os << a[i/N][i%N] << ( (i+1)%N==0 ? "\n" : " " );
}
template<typename T, size_t N>
void ExchgSquare( T (&a)[N][N] )
{
    for( size_t i=0; i!=N*N; ++i )
        if( i/N > i%N )
            std::swap( a[i/N][i%N], a[i%N][i/N] );
}
using namespace std;
int main()
{
    int a[5][5] = {
        {1,2,3,4,5},
       {6,7,8,9,10},
       {11,12,13,14,15},
       {16,17,18,19,20},
       {21,22,23,24,25}
    };
    PrintSquare( cout,a);
    ExchgSquare( a );
    PrintSquare( cout,a);
    return 0;
}


♂ 死后定当长眠,生前何须久睡。♀
2013-09-27 14:10
C_printf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:122
注 册:2010-1-26
收藏
得分:2 
2个版主为何要整模板? 高端大气上档次? 别人是新手,按别人代码解答就行了。
2013-09-27 15:04
徐宗保
Rank: 1
来 自:江苏盐城
等 级:新手上路
帖 子:45
专家分:7
注 册:2012-3-4
收藏
得分:0 
回复 4楼 默默潜水Y
看不懂
2013-09-27 22:07
yushuibin2
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2013-9-27
收藏
得分:2 
希望在后面加注释
便于理解
2013-09-27 22:32
快速回复:麻烦大几帮忙看一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018923 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved