首页 > 解决方案 > 顺时针迭代旋转 3 位数字

问题描述

设计一个要求用户输入三个整数的 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;
}

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

标签: c++windowsfor-looprotation

解决方案


我建议您将三个数字作为 a 的元素vector并旋转vectorwith std::rotate

以下几行:

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

旋转:_

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

推荐阅读