Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- //#pragma warning(disable:4996)
- #define N 12
- #define M 6
- typedef struct data{
- char _name[128];//球団名
- int _win;//勝利数
- float _winRate;//勝率
- int _point;//得点
- float _hitRate;//打率
- float _defRate;//防御率
- }Data;
- /*Data inputData(FILE *Pa, FILE *Se){
- Data x[N];//returndata
- int i;
- //ラベル除去
- char trashBox[N];
- for (i = 0; i < 6; i++) fscanf(Se, "%s %s %s %s %s %s", &trashBox[N], &trashBox[N], &trashBox[N], &trashBox[N], &trashBox[N], &trashBox[N]);
- for (i = 0; i < 6; i++) fscanf(Pa, "%s %s %s %s %s %s", &trashBox[N], &trashBox[N], &trashBox[N], &trashBox[N], &trashBox[N], &trashBox[N]);
- //Data構造体型配列にinput
- for (i = 0; i < (N / 2); i++){
- fscanf(Pa, "%s %d %f %d %f %f", &x[i]._name[128], &x[i]._win, &x[i]._winRate, &x[i]._point, &x[i]._hitRate, &x[i]._defRate);
- }
- for (i = N; i < N; i++){
- fscanf(Pa, "%s %d %f %d %f %f", &x[i]._name[128], &x[i]._win, &x[i]._winRate, &x[i]._point, &x[i]._hitRate, &x[i]._defRate);
- }
- for (i = N; i < N; i++){
- printf("%s %d %f %d %f %f", x[i]._name[128], x[i]._win, x[i]._winRate, x[i]._point, x[i]._hitRate, x[i]._defRate);
- }
- return x[N];//全部のデータを返す
- }*/
- //ソートして出力する関数3つ
- void outputWin(Data data[N]){
- Data x[N] = data;
- }
- void outputHit(Data data[N]){
- }
- void outputDefRate(Data data[N]){
- }
- void outputData(Data x[N], int i){
- printf("%10s %d %5.2f %d %5.2f %5.2f\n", x[i]._name, x[i]._win, x[i]._winRate, x[i]._point, x[i]._hitRate, x[i]._defRate);
- }
- void outputRavel(){
- printf(" <Team> W WR R BA ERA\n");
- }
- int main(){
- //ファイルオープン
- FILE *Pa, *Se;
- fopen_s(&Pa,"PacificLeague2019.txt", "r");
- fopen_s(&Se,"CentralLeague2019.txt", "r");
- while (Pa == NULL || Se == NULL){
- printf("ファイルが開けません\n");
- exit(1);
- }
- //入力
- Data x[N];
- int i;
- //ラベル除去
- char Ravel[128];
- fgets(Ravel, 128, Pa);
- fgets(Ravel, 128, Se);
- //Data構造体型配列にinput
- for (i = 0; i < M; i++){
- fscanf_s(Pa, "%s %d %f %d %f %f", x[i]._name,N, &x[i]._win, &x[i]._winRate, &x[i]._point, &x[i]._hitRate, &x[i]._defRate);
- }
- for (i = M; i < N; i++){
- fscanf_s(Se, "%s %d %f %d %f %f", x[i]._name,N, &x[i]._win, &x[i]._winRate, &x[i]._point, &x[i]._hitRate, &x[i]._defRate);
- }
- outputRavel();
- for (i = 0; i < N; i++){
- outputData(x, i);
- }
- //出力
- outputWin(x);
- outputHit(x);
- outputDefRate(x);
- }
- //
- //
- //
- //
- //
- //
- #include<stdio.h>
- /* 値を入れ替える関数 */
- void swap (int *x, int *y) {
- int temp; // 値を一時保存する変数
- temp = *x;
- *x = *y;
- *y = temp;
- }
- /***
- * pivotを決め、
- * 全データをpivotを境目に振り分け、
- * pivotの添え字を返す
- ***/
- int partition (int array[], int left, int right) {
- int i, j, pivot;
- i = left;
- j = right + 1;
- pivot = left; // 先頭要素をpivotとする
- do {
- do { i++; } while (array[i] < array[pivot]);
- do { j--; } while (array[pivot] < array[j]);
- // pivotより小さいものを左へ、大きいものを右へ
- if (i < j) { swap(&array[i], &array[j]); }
- } while (i < j);
- swap(&array[pivot], &array[j]); //pivotを更新
- return j;
- }
- /* クイックソート */
- void quick_sort (int array[], int left, int right) {
- int pivot;
- if (left < right) {
- pivot = partition(array, left, right);
- quick_sort(array, left, pivot-1); // pivotを境に再帰的にクイックソート
- quick_sort(array, pivot+1, right);
- }
- }
- int main (void) {
- int array[10] = { 2, 1, 8, 5, 4, 7, 9, 0, 6, 3 };
- int i;
- printf("Before sort: ");
- for (i = 0; i < 10; i++) { printf("%d ", array[i]); }
- printf("\n");
- quick_sort(array, 0, 9);
- printf("After sort: ");
- for (i = 0; i < 10; i++) { printf("%d ", array[i]); }
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement