ページ 1 / 1
C言語の課題についての質問です。
Posted: 2021年1月21日(木) 09:36
by sawasora0410
どうしてもわからず、こちらの問題を教えていただけると嬉しいです。
/*
確認課題2(prog2_check2.c)
確認課題1で作成したprog2_check1.cを、平均点の高い順にデータをソートする
関数sort_aveを組み込んだプログラム(prog2_check1.c)を作成せよ。
最終的には、作成したprog2_check2.cのプログラムをコピー&ペーストして提出せよ。
*/
コード:
#include <stdio.h>
#include <stdlib.h>
struct student {
char name[20];
int eng;
int math;
int jap;
double ave;
char grade;
};
typedef struct student Student; /* struct student型をStudent型とする */
#define NO 4
int main(void)
{
Student data[]={{"Sato", 82,72,58},
{"Akiyama", 77, 84, 79},
{"Eida", 52, 62, 39},
{"Fujita", 41, 82, 58}};
/* 各自の平均点と評価を求める関数add_ave_grade */
add_ave_grade(data);
/* 平均点でデータをソートする関数ave_sort */
ave_sort(data);
/* 各自の成績と評価をファイル(grade2020.txt)に書き出すプログラム関数put_eva */
put_eva(data);
return 0;
}
Re: C言語の課題についての質問です。
Posted: 2021年1月21日(木) 11:13
by Meta3
丸投げ はだめ
環境(ウィンドウズ、VisualStudio2019等)
スキル
分からない事(sortのアルゴリズム等)
を列挙せよ
Re: C言語の課題についての質問です。
Posted: 2021年1月21日(木) 12:03
by sawasora0410
失礼しました!
もう少し考えてから質問を再度掲示板でします🙇♀️
Re: C言語の課題についての質問です。
Posted: 2021年1月21日(木) 16:47
by Meta3
ついでに作ったので
コード:
#include <stdio.h>
#include <stdlib.h>
#define NO 4
struct student {
char name[20];
int eng;
int math;
int jap;
double ave;
char grade;
};
typedef struct student Student; /* struct student型をStudent型とする */
void add_ave_grade(Student data[]){
int i;
for(i=0; i<NO; i++){
data[i].ave=(data[i].eng + data[i].math + data[i].jap)/3.0;
if(data[i].ave >=80){
data[i].grade = 'A';
} else if(data[i].ave >=70 && data[i].ave <80){
data[i].grade = 'B';
} else if(data[i].ave >=60 && data[i].ave <70){
data[i].grade = 'C';
} else {
data[i].grade = 'D';
}
}
}
ave_sort(Student data[]){
int i,j;
Student tmp;
for(i=0;i<NO;i++){
for(j=i+1;j<NO;j++){
if(data[i].ave<data[j].ave){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
}
}
put_eva(Student data[]){
FILE *fp;
fp = fopen("grade2020.txt", "w"); // ファイルを書き込み用にオープン(開く)
if (fp == NULL) { // オープンに失敗した場合
printf("cannot open\n"); // エラーメッセージを出して
exit(1); // 異常終了
}
int i;
for(i = 0; i <NO; i ++){
fprintf(fp, "%-10s:英語=%3d数学=%3d国語=%3d:平均=%6.2lf->生徒=%c \n",
data[i].name,data[i].eng,data[i].math,data[i].jap,
data[i].ave,data[i].grade);
}
fclose(fp);
}
int main(void)
{
Student data[]={{"Sato", 82,72,58},
{"Akiyama", 77, 84, 79},
{"Eida", 52, 62, 39},
{"Fujita", 41, 82, 58}};
/* 各自の平均点と評価を求める関数add_ave_grade */
add_ave_grade(data);
/* 平均点でデータをソートする関数ave_sort */
ave_sort(data);
/* 各自の3教科の成績と平均ならびに評価をファイル(grade2020.txt)に書き出すプログラム関数put_eva */
put_eva(data);
return 0;
}
Re: C言語の課題についての質問です。
Posted: 2021年1月21日(木) 16:51
by Meta3
grade2020.txt
コード:
Akiyama :英語= 77数学= 84国語= 79:平均= 80.00->生徒=A
Sato :英語= 82数学= 72国語= 58:平均= 70.67->生徒=B
Fujita :英語= 41数学= 82国語= 58:平均= 60.33->生徒=C
Eida :英語= 52数学= 62国語= 39:平均= 51.00->生徒=D
Re: C言語の課題についての質問です。
Posted: 2021年1月21日(木) 16:58
by Meta3
Windows10 VisualStudio2019 で実行
コード:
c:\b>cl c1.c
Microsoft(R) C/C++ Optimizing Compiler Version 19.28.29336 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
c1.c
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:c1.exe
c1.obj
c:\b>c1.exe
Re: C言語の課題についての質問です。
Posted: 2021年1月22日(金) 14:56
by Meta3
Windows10 VisualStudio2019 clang
コード:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define NO 4
struct student {
char name[20];
int eng;
int math;
int jap;
double ave;
char grade;
};
typedef struct student Student; /* struct student型をStudent型とする */
int add_ave_grade(Student data[]){
int i;
for(i=0; i<NO; i++){
data[i].ave=(data[i].eng + data[i].math + data[i].jap)/3.0;
if(data[i].ave >=80){
data[i].grade = 'A';
} else if(data[i].ave >=70 && data[i].ave <80){
data[i].grade = 'B';
} else if(data[i].ave >=60 && data[i].ave <70){
data[i].grade = 'C';
} else {
data[i].grade = 'D';
}
}
return 0;
}
int ave_sort(Student data[]){
int i,j;
Student tmp;
for(i=0;i<NO;i++){
for(j=i+1;j<NO;j++){
if(data[i].ave<data[j].ave){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
}
return 0;
}
int put_eva(Student data[]){
FILE *fp;
fp = fopen("grade2020.txt", "w"); // ファイルを書き込み用にオープン(開く)
if (fp == NULL) { // オープンに失敗した場合
printf("cannot open\n"); // エラーメッセージを出して
exit(1); // 異常終了
}
int i;
for(i = 0; i <NO; i ++){
fprintf(fp, "%-10s:eng=%3d math=%3d jap=%3d:ave=%6.2lf grade=%c \n",
data[i].name,data[i].eng,data[i].math,data[i].jap,
data[i].ave,data[i].grade);
}
fclose(fp);
return 0;
}
int main(void)
{
Student data[]={{"Sato", 82,72,58},
{"Akiyama", 77, 84, 79},
{"Eida", 52, 62, 39},
{"Fujita", 41, 82, 58}};
/* 各自の平均点と評価を求める関数add_ave_grade */
add_ave_grade(data);
/* 平均点でデータをソートする関数ave_sort */
ave_sort(data);
/* 各自の3教科の成績と平均ならびに評価をファイル(grade2020.txt)に書き出すプログラム関数put_eva */
put_eva(data);
return 0;
}
Re: C言語の課題についての質問です。
Posted: 2021年1月22日(金) 14:58
by Meta3
コード:
Akiyama :eng= 77 math= 84 jap= 79:ave= 80.00 grade=A
Sato :eng= 82 math= 72 jap= 58:ave= 70.67 grade=B
Fujita :eng= 41 math= 82 jap= 58:ave= 60.33 grade=C
Eida :eng= 52 math= 62 jap= 39:ave= 51.00 grade=D
Re: C言語の課題についての質問です。
Posted: 2021年1月22日(金) 15:06
by Meta3
Windows10 VisualStudio2019 clangv
コード:
c:\b>clang-cl c1.c
c:\b>c1.exe
c:\b>