?? p3.c
字號:
/// P3
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void maxmin( int d[], int n, int *max, int *min) {
int i;
*max = 0;
*min = 9999999;
for( i=0; i<n; ++i) {
if( d[i] > *max)
*max = d[i];
if( d[i] < *min)
*min = d[i];
}
}
int tenPower( int n) {
int result = 1;
for( ; n>0; --n)
result *= 10;
return result;
}
int upTo125( int n) {
int ndigit, i, n1;
int m = n;
ndigit = 1;
while( m > 10) {
++ndigit;
m /= 10;
}
n1 = tenPower( ndigit-1);
if( n == n1)
return n1;
else if( n <= 2 * n1)
return 2 * n1;
else if( n <= 5 * n1)
return 5 * n1;
else
return 10 * n1;
}
void formalize( int min, int max, int *lo, int *nstep, int *m) {
int istep = (int) ceil( (max - min) / 20.0) ;
*nstep = upTo125( istep);
*lo = min - min % *nstep;
*m = (int) ceil( (max - *lo) / *nstep) + 1;
if( *m > 20) {
*nstep = upTo125( *nstep * 2);
*lo = min - min % *nstep;
*m = (int) ceil( (max - *lo) / *nstep) + 1;
}
}
int main(void) {
int data[500];
int max, min, range;
int n, i, j;
// int isFirstCase = 1;
int lo, nstep, m;
int count[20];
scanf( "%d", &n);
while ( n > 0) {
for( i=0; i<n; ++i)
scanf( "%d", &data[i]);
maxmin( data, n, &max, &min);
/* if( isFirstCase)
isFirstCase = 0;
else
printf( "\n");
*/
if( min == max) {
printf( "All inputs equal %d.\n", min);
} else {
formalize( min, max, &lo, &nstep, &m);
for( i=0; i<20; ++i)
count[i] = 0;
for( i=0; i<n; ++i)
++count[ (data[i]-lo) / nstep ];
for( i=0; i<m; ++i) {
printf( "%8d ", lo + i*nstep);
for( j=0; j<count[i]; ++j)
putchar( '#');
putchar( '\n');
}
}
printf( "\n");
if( scanf( "%d", &n) != 1)
exit(0) ;
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -