如何在MATLAB中计算GPA

mi7gmzs6  于 2023-10-23  发布在  Matlab
关注(0)|答案(1)|浏览(184)

我刚刚开始学习MATLAB我在工程学校,我们得到了一个问题,在MATLAB中解决的问题如下(也附上):
名为Transcript.txt的文本文件列出了学生成绩单的课程、成绩和学分,数据以逗号分隔
编写一个脚本,读取此数据并执行以下操作:
1.计算学生所列课程的平均成绩点(GPA)。请注意,GPA的计算方法是将每门课程的学分和成绩相加,然后将结果除以学分总数:
将计算结果赋给一个名为GPA的变量。2.使用GPA结果来创建名为GPAReport的字符数组变量,该变量包含例如'The GPA is 3.25.',其中该数字被替换为从给定成绩单计算出的数字,并四舍五入到小数点后两位。3.找出学生获得最高分的课程。创建名为BestGrade的第二个字符数组变量,其中包含例如'The student earned her best grade of 3.50 in MATH 123.',其中从给定的成绩单数据中检索成绩值和课程编号。请注意,在任何测试中只有一个最高等级的示例。
我不知道如何写这段代码,所以我试着这样做:
total_weighted_points = sum(grades .* credits); int sum(int); GPA = total_weighted_points / total_credit; GPAReport = sprintf('GPA为%.2f.',GPA); [max_grade_idx] = max(grades); best_course = courses{max_idx}; BestGrade = sprintf('该学生在%s.中获得了她的最好成绩%.2f.',max_grade,best_course); disp(GPAReport); disp(BestGrade);

cczfrluj

cczfrluj1#

也许沿着这些线(可能需要一些固定)应该工作

%read file line by line
allLines=readlines('gpa.txt','EmptyLineRule','skip');

%initialize variables
sumGPA=0;
maxGrade=0;
sumCredits=0;


for ss=2:numel(allLines)
    %string extraction 
    courseLine=strsplit(allLines(ss),' ');
    currCourseName=courseLine{1};
    currCourseResults=strsplit(courseLine{2},',');
    currCourse=strcat(currCourseName," " ,currCourseResults{1});
    credits=str2double(currCourseResults{2});
    grade=str2double(currCourseResults{3});
    
    %sums
    sumGPA=sumGPA+credits*grade;
    sumCredits=sumCredits+credits;

    %max grade
    if grade>maxGrade
        maxGrade=grade;
        maxGradeCourse=currCourse;
    end

end

GPA=sumGPA/sumCredits;

fprintf('The gpa is %d\n',GPA);
fprintf('The best course is %s with a grade of %d\n',maxGradeCourse,maxGrade)

这是一个基线,它可以提高肯定在中间部分

相关问题