| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2277 人关注过本帖
标题:数组对换,print函数传参有问题,请教
只看楼主 加入收藏
生命太短暂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2020-4-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
数组对换,print函数传参有问题,请教
图片附件: 游客没有浏览图片的权限,请 登录注册

#include <iostream>
using namespace std;
int *cinp(int *a)
{
    for(size_t i=0;i!=4;++i)
    {cin>>a[i];}
    return &*a;//输入
}
int *ing(int*a)
{int b[10];int max=a[0];int min=a[0];
int x=0,y=0;//替换过程
for(size_t i=0;i!=4;++i)
    { b[i]=a[i];
      if(max<b[i])
        {max=b[i];
            x=i;}
      
   }
   for(size_t j=0;j!=4;++j)
    { b[j]=a[j];
      
       if(min>b[j])
        {min=b[j];
            y=j;}      
   }
   
int tem=0;int g=0;
 tem=a[3];
a[3]=a[x];
a[x]=tem;
g=a[0];
a[0]=a[y];
a[y]=g;//替换过程对的在这里打印是可以进行最小和第一位替换,最大和最后一位替换,但是单独做成输出函数就会出错

}
int print(int *a)//单独做成的输出函数
{    for(size_t i=0;i!=4;++i)
     {cout<< a[i];}//打印
}

int main() {
int a[4];
print (ing(cinp(a)));
    return 0;
}
1 4 6 2会输出1426
6 2 3 5会输出5360
我估计print参数是错的,请求帮助
搜索更多相关主题的帖子: int for 函数 print 替换 
2020-04-30 23:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
我这里编译失败,因为 int *ing(int*a) 没写返回值。

另外,算法也不对。你有没有考虑过,将最大数与最后一个数交换时,最小数的位置可能变了?
2020-04-30 23:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;

template<typename T,size_t N>
void input( T (&arr)[N] )
{
    copy_n( istream_iterator<T>(cin), N, arr );
}

template<typename T,size_t N>
void foo( T (&arr)[N] )
{
    iter_swap( arr+0,   min_element(begin(arr),end(arr)) );
    iter_swap( arr+N-1, max_element(begin(arr),end(arr)) );
}

template<typename T,size_t N>
void output( const T (&arr)[N] )
{
    copy( begin(arr), end(arr), ostream_iterator<T>(cout," ") );
}

int main( void )
{
    int arr[4];
    input( arr );
    foo( arr );
    output( arr );
}
2020-05-01 00:00
生命太短暂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2020-4-30
收藏
得分:0 
谢谢神,我改改
我是记录最大值与最小值的下标,然后根据下标进行互换,题目10个数太多了我换成四个数,在替换过程中打印可以得到想要的结果,就没考虑数值是否可变,第一想的是打印函数传参是否是错的,根据您的建议再改改,感谢
2020-05-01 00:00
生命太短暂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2020-4-30
收藏
得分:0 
不知听谁说的今天是教师节,是的话,祝您教师节快乐,不是的话,也祝您教师节快乐
2020-05-01 00:02
生命太短暂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2020-4-30
收藏
得分:0 
根据您的建议改了一下,是我太着急了,总想着一起完工,反而没考最大值和最小值下标会变,您说的很对,然后换个地方就可以了,感谢,您的模板代码会拿来研究的
#include <iostream>
using namespace std;
int *cinp(int *a)
{
    for(size_t i=0; i!=4; ++i)
    {
        cin>>a[i];
    }
    return a;
}
int *ing(int*a)
{   int b[10];
    int max=a[0];
    int min=a[0];
    int x=0,y=0;
    for(size_t i=0; i!=4; ++i)
    {   b[i]=a[i];
        if(max<b[i])
        {   max=b[i];
            x=i;
        }

    }
    int tem=0;
    int g=0;
    tem=a[3];
    a[3]=a[x];
    a[x]=tem;

    for(size_t j=0; j!=4; ++j)
    {   b[j]=a[j];

        if(min>b[j])
        {   min=b[j];
            y=j;
        }
    }
    g=a[0];
    a[0]=a[y];
    a[y]=g;
    return a;
}
int print(int *a)
{   for(size_t i=0; i!=4; ++i)
    {
        cout<< a[i];
    }
}

int main() {
    int a[4];
    print(ing(cinp(a)));
    return 0;
}
2020-05-01 08:42
韩普通
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-5-2
收藏
得分:0 
你好,我想做个软件  但是我不会编程  有人可以合作一下吗
2020-05-02 17:21
韩普通
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-5-2
收藏
得分:0 
联系方式1007245753    我不了解这方面的事情如果有人有兴趣  还请不吝赐教
2020-05-02 17:23
快速回复:数组对换,print函数传参有问题,请教
数据加载中...
 
   



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

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