1. 程式人生 > >輸入一串數逗號隔開,排序後n個一行輸出

輸入一串數逗號隔開,排序後n個一行輸出

題目:
輸入個數不限的數字,以逗號為分隔,以回車鍵為結束,數字大小在-32768-32767之間。從小到達排序後以4個數每行輸出
如:
輸入:12,34,-12,23,123,56,-9,789
輸出:-12 -9 12 23
34 56 128 789

標程

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

const int MAX = 10010;
string str; //存輸入字串
int result[MAX] = { 0 };//存輸入的實際值
int num = 0;//存數的個數

int main(){
	cin >> str;
	int i = 0;	
	while (i < str.length()){
		int sign = 1;//數的符號位
		if (str[i] == '-'){
			i++;
			sign = -1;
		}
		int ans = 0;//存當前數的值
		while (str[i]!=',' && i < str.length()){
			ans = ans * 10 + (str[i] - '0');
			i++;
		}
		ans = sign*ans;   //加上符號位
		result[num] = ans;  //存入結果陣列
		num++;
		ans = 0;
		if (str[i] == ',')   //若為逗號則跳過一個字元
			i++;
	}

	sort(result, result + num);   //排序

	int n = 0;
	while (n <= num){   //還有數時迴圈
		int count = 1;
		while (count < 4 && n < num){  //先輸出三個並空格隔開
			cout << result[n] << ' ';
			n++;
			count++;
		}
		if (n < num){  //如果還有再輸出一個並換行
			cout << result[n] << endl;
			n++;
		}
	}
	cin >> str; //做除錯檢查輸出
	return 0;
}