close

hw1 Sorting:

input.txt
----------------------
N: number of sequence
SEQ1
SEQ2

output.txt
----------------------
sorted SEQ1
sorted SEQ2

Example.
input.txt
----------------------
2
8 5 9
2 1 

output.txt
----------------------
5 8 9
1 2


讀檔:如何快速將字串轉成int

int n=0;
int v[32768];
char s[100000]; 
FILE* fin = fopen("input.txt", "r"); 
fgets(s, 16, fin);

for(int cnt=0; s[cnt] != '\n'; ++cnt) 
    n=n*10 + s[cnt] - '0' 

從ascii 著手,'0' 為 48,之後是1,2,3....所以可以依此轉換,不過一次只能一個digit,所以每次要 n*10來得到實際正確的值   

相同的應用

while(n --) {
	fgets(s, 100000, fin);
	int tmp=0;
	int size = 0;
	for(int = 0; s[cnt] != '\n'; cnt++) {
		if(s[cnt] == ' ' ) {
			v[size] = tmp;
			tmp=0;
		} else {
			tmp = tmp *10 + s[cnt] - '0';
		}
	}
}

 然後此題直接用 <algorithm>裡面的sorting 即可,c的sorting已經有最佳化 O(n*logn)

 寫檔:也可用同樣方式

cnt = 0;
char tmp_s[12];for(int I =0; I < size; ++I) {
	int index = -1;
	if(v[i] == 0)
		s[cnt++] = '0';
	while(v[i] > 0) {
		temp_s[++index] = v[i] %10 + '0';
		v[i] /= 10;
	}
	for(int j = index; j >= 0;--j) {
		s[cnt++] = tmp_s[j];
	}
	s[cnt++] = ' ';
}
s[cnt] = '\n';
s[cnt+1] = '\0';
fputs(s, fout);

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 angledark0123 的頭像
    angledark0123

    CONY的世界

    angledark0123 發表在 痞客邦 留言(0) 人氣()