題目:頑皮的比爾C++
由於這題題目敘述長,一言以蔽之,他要我們將排有順序的數字從中反轉,還不只反轉一次喔!
之後印出來~~
一樣流程將基本的輸入規則弄好,記得第一個輸入,之後要加 cin.ignore() cin.ignore()-->(假如C++) 躲掉跳行,把打的多筆資料切好放在陣列中
畢竟是切出來的是字串,假如你是C++,那就要用sstream的功能,atoi沒用喔~~
- #include <vector> //陣列需要
- #include <sstream>//字串分割和字串轉整數都需要
- #include<iostream>
- using namespace std;
-
- int main()
- {
- int math;
- int len;
- cout << "有幾筆資料:";
- cin >> math;
- cin.ignore();
- for(int i=0;i<math;i++)
- {
- string token;
- string abc;
- vector<int> arr;
- cout << "第" << i+1 << "筆:(空白隔開) ";
- getline(cin,abc);
- istringstream delim(abc);
- while(getline(delim,token,' '))
- {
- int num;
- stringstream ss;
- ss << token;
- ss >> num;
- arr.push_back(num);
- }
- for(int j=0;j<arr.size();j++)
- cout <<"位置arr["<<j<<"]+1= "<<arr[j]+1 << ' ';
- cout << endl;
- }
- }
轉完整數後,之後用reverse (這是啥--->點我)
針對你排好的1~n由小到大的陣列
將題目要求做改變 像是: 3 2 0
再由順序的arr陣列 = {1 ,2 ,3}
把位置2的前頭都反轉
變成arr = {2 ,1 ,3}
reverse(arr.begin(),arr.end()-1);
然而其他筆,你就要自己想了,在end()是減多少,找出關西是減多少,找出關係~~
轉完印出來,就可以了,不用一次印出來~~
end