标题:求各位帮帮忙,谢了,连续数列的移动
取消只看楼主
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
求各位帮帮忙,谢了,连续数列的移动




输入n(n<100)个整数和一个整数m(m<n),将其中将前面各数顺序向后移动m个位置,最后m个数变成前面m个数。要求设计三个函数进行处理,要求满足如下要求:
   
编号 函数声明格式 功能描述
1 myread(int *p,int n); 将标准输入的n个整数,依次读入到p所指向的存储单元
2 process(int * p,int n) 将其中将前面各数顺序向后移动m个位置,最后m个数变成前面m个数
3 myprint(int a[],int n) 使用一行输出数组的元素值,使用一个空格隔开,


 
输入:
标准输入,第一行是一个正整数N和m,N代表在第2行有N个整数,m表示需要你将数组中的元素移动的长度,整数之间使用空格隔开。
输出:
   将处理后的数组元素值使用一行输出,两数之间使用一个空格隔开。
样例
输入:
5 3
4 6 7 2 4
 
输出:
7 2 4 4 6
#include <iostream>
using namespace std;
void myread(int *p,int n)//输入函数。
{
    int i;
    for(i=0;i<n;i++)
        cin>>*(p+i);
}
void process(int *p,int n,int m)
{  
    int b[100],i,j,k;
   
   for(i=0;i<m-1;i++)//将前m个数先储存在数组b中;

       b[i]=*(p+i);
   i=0;
   for(j=m-1;j<n;j++)
      { *(p+i)=*(p+j);i++;} //将m后的依次放在前面的储存空间里。                                    //我觉得这应该错了,但是看不出来。
   i=0;
   for(k=n-m+1;k<n;k++)//将b数组中的元素依次放在m以后的指针里
   {*(p+k)=b[i];
   i++;}
}
void myprint(int a[],int n)//输出函数。
{
    int i;
    for(i=0;i<n;i++)
    {
        if(i==0)
            cout<<a[i];
        else if(i>0)
            cout<<" "<<a[i];
    }
    cout<<endl;
}
int main()
{
  int n,m,a[100];
  cin>>n>>m;
  if(n<100 && m<n)
  {
  myread(a,n);
  process(a,n,m);
  myprint(a,n);
  }
  return 0;
}
不知道哪里错了,求解。

[ 本帖最后由 风雨123 于 2013-3-7 21:22 编辑 ]
搜索更多相关主题的帖子: 移动 process 正整数 元素 
2013-03-07 21:14
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
得分:0 
错了。


[ 本帖最后由 风雨123 于 2013-3-7 22:31 编辑 ]
2013-03-07 22:29
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
得分:0 
提交错了
2013-03-08 14:01
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
得分:0 
结果不正确
2013-03-08 14:01
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
得分:0 
回复 2楼 qunxingw
for(i=0;i<n-m;i++)//将前m个数先储存在数组b中;

        b[i]=*(p+i);
 不懂?????为什么不是for(i=0;i<m-1;i++)
                         b[i]=*(p+i);将前m个数先储存在数组b中;
2013-03-08 14:04
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
得分:0 
程序代码:
#include <iostream>
using namespace std;
void myread(int *p,int n)
{
    int i;
    for(i=0;i<n;i++)
        cin>>*(p+i);
}
void process(int *p,int n,int m)
{ 
    int b[100],i,j,k;
   for(i=0;i<m;i++)
       b[i]=*(p+n-m+i);i=0;//????不知道什么意思?
  
   for(i=n-m-1;i>=0;i--)
    {
        *(p+i+m)=*(p+i);//????不知道什么意思?

    }
    for(i=0;i<m;i++)
    {
        *(p+i)=b[i];//????不知道什么意思?

    }

}
void myprint(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(i==0)
            cout<<a[i];
        else if(i>0)
            cout<<" "<<a[i];
    }
    cout<<endl;
}
int main()
{
  int n,m,a[100];
  cin>>n>>m;
  if(n<100 && m<n)
  {
  myread(a,n);
  process(a,n,m);
  myprint(a,n);
  }
  return 0;
}
求解释???
2013-03-08 16:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-400078-1-1.html




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

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