#include<stdlib.h>
#include<stdio.h>
const int MAX_INT = 2147483647;
const int BUFFER_SIZE = 100;
int main()
{
/* 変数を定義、初期化 */
int data;
int max = -1;
int min = MAX_INT;
bool data_exist = false;
int i, n;
char buf[BUFFER_SIZE], c;
printf("Please input data : ");
while(true) {
/* データ(1行分読み込み) */
fgets(buf, BUFFER_SIZE, stdin);
/* データ取り出しと計算 */
n = sscanf(buf, "%d %c", &data, &c);
if( ( n == -1 ) || ( n == 0 ) ) {
break;
}
else if (n == 1) {
// the number of data is 1.
data_exist = true;
data = abs( data );
if(max < data){ /* maxを変更 */
max = data;
}
if(min > data){ /* minを変更 */
min = data;
}
}
else if (n == 2) {
// the number of data is larger than 2.
i = 0;
while (true) {
data_exist = true;
data = abs( data );
if(max < data){ /* maxを変更 */
max = data;
}
if(min > data){ /* minを変更 */
min = data;
}
// 空白文字を読み飛ばす
while (true) {
if(buf[i] == ' ') {
i++;
}
else {
break;
}
}
// 数字(0から9)を読み飛ばす
while (true) {
if( ( buf[i] >= '0' ) && ( buf[i] <= '9' ) ) {
i++;
}
else {
break;
}
}
// 行末なら終える
if(buf[i] == '\n') {
break;
}
// データ読み込み.読み込みに成功したら次の文字へ(i++), 失敗したら終える(break).
n = sscanf(buf+i, "%d", &data);
if(n == 0) {
break;
}
i++;
}
}
if(n == 0) {
break;
}
}
/* 最大値, 最小値を出力 */
if (!data_exist) {
printf("No data.\n");
}
else {
printf("Max = %d\n",max);
printf("Min = %d\n",min);
}
return 0;
}
|