2007A †
回答者:ゆん #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <conio.h> int main() { //ファイル処理----------------- char FileName[256]; printf("ファイル名を入れて〜"); scanf("%256s", FileName); FILE* fpIn = fopen(FileName, "r"); FILE* fpOut = fopen("output.txt", "w"); //----------------------------- int A; while(1){ int sum = 0, max = 0, min = 1000, n, s; fscanf(fpIn, "%d", &n); if(n == 0) break; for (int j = 0; j < n; ++j){ fscanf(fpIn, "%d", &s); max = max > s? max : s; min = min < s? min : s; sum += s; } sum -= max; sum -= min; fprintf(fpOut, "%d\n", sum / (n - 2)); printf("%d\n", sum / (n - 2)); } printf("終了!"); //終了処理--------------------- fclose(fpOut); getch(); return 0; }
回答者:ほへい ゆん先輩のコードと大筋は一緒です。 #include <stdio.h> int num_sinpan, max, min; int points[100]; int answer; FILE *fp_in, *fp_out; static char *f_source = "A_in.txt"; static char *f_answer = "A_out.txt"; int main(void) { fp_in = fopen(f_source, "r"); fp_out = fopen(f_answer, "w"); while(1) { int i; fscanf(fp_in, "%d", &num_sinpan); if(num_sinpan == 0) break; answer = 0; max = 0; min = 1000; for(i = 0; i < num_sinpan; i++) { fscanf(fp_in, "%d", &points[i]); answer += points[i]; max = (max > points[i]) ? max : points[i]; min = (min > points[i]) ? points[i] : min; } answer -= (min + max); answer /= (num_sinpan - 2); fprintf(fp_out, "%d\n", answer); } fclose(fp_in); fclose(fp_out); return 0; } |