提问者:小点点

三位数顺时针迭代旋转


设计一个C++代码,要求用户输入三个整数。 程序将顺时针迭代旋转这些数字。 从用户输入旋转次数。

int a,b,c,n1,n2,n3,n;
cout<<"Enter number of rotations :"<<endl;
cin>>n;
cout<<"Enter 3 integers: "<<endl;
cin>>n1;
cin>>n2;
cin>>n3;
 for(int i=1 ;i<=n; i=i+3)//1,4,7,10...
{
    a=n1;
    b=n2;
    c=n3;
    cout<<"After"<<i<<" "<<"clock cycle"<<c<<a<<b<<endl;    
}   
for(int i=2 ; i<=n ; i=i+3)//2,5,8,11...
{
    a=n1;
    b=n2;
    c=n3;
    cout<<"After"<<i<<" "<<"clock cycle"<<b<<c<<a<<endl;    
}  
for(int i=3; i<=n ; i=i+3)//3,6,9,12,15...
{
    a=n1;
    b=n2;
    c=n3;
    cout<<"After"<<i<<" "<<"clock cycle"<<a<<b<<c<<endl;
}

这是我的代码,我面临的唯一问题是旋转的数量是不对称的。


共1个答案

匿名用户

我建议您将这三个数字作为向量的元素,并使用std::rotate旋转向量:

大致如下:

std::vector<int> vec(3);
for(auto& elem : vec) {
    std::cin >> elem;
}

要旋转:

std::rotate(vec.begin(), vec.begin() + 1, vec.end());