1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
ExtremeBDS [4]
3 years ago
7

This program is to compute and write to a file the GPA for student scores read from an input file. The point values of the grade

s are 4 for A, 3 for B, 2 for C, 1 for D, and 0 for F. Except for the grade A, where '+' has no effect, a '+' after the letter increases the point value by 0.3, and except for F, where a '-' has no effect, a '-' after a letter decreases the point value by 0.3, so, for example, B- is worth 3 - 0.3 = 2.7 points. The weighted points for a course is the point value of the grade, multiplied by the number of units for the course. The weighted average for the GPA is then the sum of these weighted points, divided by sum of the units.
Prompt the user by "Enter name of input file: " for the name of an input file and open that file for reading. The two input files for the tests are already at the zyBooks site. They each have a list of student names with the course they have taken, of the form

Jacobs, Anthony
ECS10 4 B- ECS20 4 C+
ANS17 3 A
ANS49H 2 D
Wilson, Elaine
ECS10 4 B+
ECS20 4 C+
ANS17 3 A
ANS49H 2 D
ANS100 5 B-

with the student name on one line, and a list of that student's course names, units, and grades on a sequence of following lines, terminated by a blank line before the next student name line. The input will be terminated either by a second blank line where the next name would be, which will appear as just "\n", or by the file ending with either no new line character at the end of the last course line for the last student, or just one, which will result in just the empty string "" when reading in any more lines. (The input for the hidden second test ends with just one blank line after the last course.) To repeat this in a different way:
You need to correctly handle 3 cases:

a) The file ends at the end of the last course line, just after the last grade, with no \n character at all.
b) The input file ends with a single \n character at the end of the last grade line (as is normal on all other lines).
c) The file ends with two \n characters, one to end the last grade line, and one blank line, as would normally occur before another student name.

The program should open and write an output file named "GPA_output.txt" of the form:

Jacobs, Anthony 2.62
Wilson, Elaine 2.77

with each line containing a student name and the GPA, which must be computed by the program. The format of each line must have the name left adjusted, in a field with a total of 26 spaces, followed immediately by the GPA, with two decimal places. You can do this with a "%" style formatted output of the form:

f.write("%-26s%.2f\n" % (student_name, GPA))

or a "…".format() style formatted output of the form

f.write("{:<26s}{:.2f}\n".format(student_name, GPA))

Note that the "\n" is needed at the end of the quoted format specification, because unlike print(), f.write() does not automatically put a new line character at the end of the line.
The input given above is for the first test, and the file "GPA_input.txt" from which it was taken is in the canvas File Folder for "Week 9" of "Programs shown in class", so that you can use it for testing your program before submitting it. You will probably need to do such testing because unlike the other assignments if your program has problems that prevent it from getting to the stage of writing the output file, the error reported will just be "Could not find file: GPA_output.txt" which is not very useful. The output file for this input, "GPA_output.txt" is also in the Week 9 folder for you to compare, since white space is important here.
Computers and Technology
1 answer:
VARVARA [1.3K]3 years ago
3 0

Answer:

#Take input from the user

filename=input('Enter name of input file: ')

total_units=0#Total number of units for a student

total_score=0#Total score of a student

#Assign a score to each grade. I have reduced 0.33 for each grade. Change here if you need to

grade={'A':4.0,'A-':3.67,'B+':3.34,'B':3.01,'B-':2.68,'C+':2.35,'C':2.02,'C-':1.69,'D+':1.36,'D':1.03}

try:

with open(filename,"r") as input_file:#Open the file for input(reading)

output_file=open("GPA_output.txt","w") #Create and open GPA_output.txt if it doesn't exist for writing

for student_record in input_file:#read from input file

if("," in student_record):#if there is a , that means this is the student name

student_name=student_record.strip('\n')#Remove \n from student name

continue

else:

if(" " in student_record):#If a line contains spaces then its the student's grades for a course

student=student_record.split(" ")#Split to find the coursename, units and grade

#student[0]=coursename student[1]=units student[2]=grade

total_units+=int(student[1])#Calculate total units for 1 student

total_score+=int(student[1])*grade[student[2].strip('\n')]#Find the total score of a student

#grade[student[2]] will lookup for the score that we initialized earlier

#if student has a grade as A then this will look up as grade['A'] which will return 4

#Find the total score as product of this grade and units for this course

continue

else:

if(total_units>0):#Check if score has been calculated for a student earlier

print("in")

GPA=total_score/total_units#Calculate the GPA

output_file.write("%-26s%.2f\n" % (student_name, GPA))#Write the GPA and Student Name in the required format

total_units=0#reset the units

total_score=0#reset the score

if(total_units>0):#Essential for the case when the file doesn't end with a new line(Check if total_units is not 0) which means a record is pending

#to be written to the file

GPA=total_score/total_units#Calculate the GPA

output_file.write("%-26s%.2f\n" % (student_name, GPA))#Write the GPA and Student Name in the required format

total_units=0#reset the units

total_score=0#reset the score

input_file.close()#Close the input file

output_file.close()#Close the output file

except IOError as e:

print("Problem in Opening the required file")#Print a message if file cannot be opened

Explanation:

The program has been tested for all 3 scenarios mentioned i.e.

a. If the file ends without \n

b. If the file ends with 2 \n

c. If the file ends with 1 \n

PS: The Program will run irrespective of how it ends. Even if there are many \n at the end of file, the program will be fine.

You might be interested in
Each column in an access table datasheet represents a ____.
kakasveta [241]
....field while a row represents a record
4 0
3 years ago
Releasing refrigerant R-12 into the atmosphere is a criminal offense
nevsk [136]
I'm guessing you want a yes or no... I think yes.
8 0
3 years ago
Read 2 more answers
9.10: Reverse ArrayWrite a function that accepts an int array and the array ’s size as arguments . The function should create a
AleksandrR [38]

Answer:

#include <iostream>

using namespace std;

int * reverse(int a[],int n)//function to reverse the array.

{

   int i;

   for(i=0;i<n/2;i++)

   {

       int temp=a[i];

       a[i]=a[n-i-1];

       a[n-i-1]=temp;

   }

   return a;//return pointer to the array.

}

int main() {

   int array[50],* arr,N;//declaring three variables.

   cin>>N;//taking input of size..

   if(N>50||N<0)//if size greater than 50 or less than 0 then terminating the program..

   return 0;

   for(int i=0;i<N;i++)

   {

       cin>>array[i];//prompting array elements..

   }

   arr=reverse(array,N);//function call.

   for(int i=0;i<N;i++)

   cout<<arr[i]<<endl;//printing reversed array..

   cout<<endl;

return 0;

}

Output:-

5

4 5 6 7 8

8

7

6

5

4

Explanation:

I have created a function reverse which reverses the array and returns pointer to an array.I have also considered edge cases where the function terminates if the value of the N(size) is greater than 50 or less than 0.

8 0
3 years ago
You company hired you to build a network. List of technical question that you will ask?
vredina [299]

Explanation:

1. How many computers do you want to connect or how big the network should be?

This would tell us what kind of a network need to be built. It can be LAN/MAN/WAN

2. The location where network needs to be built?

We have to check the geographic condition too before creating a network

3. What is the budget?

Based on the budget only, we can decide the wires to be used if require we can negotiate the budget so that we can create effective network

4. Will I get an additional resources to work?

This is essential to estimate the time that is required to complete the task.

5. When the project needs to be completed?

This is crucial because a business might be planned thereafter.

6 0
3 years ago
What can you achieve if you divide your search engine marketing account into relevant campaigns and ad groups?.
Alchen [17]

Make sure that visitors receive relevant ads that pertain to their search query by segmenting your search engine marketing account into pertinent campaigns and ad groups.

<h3>What is search engine marketing? </h3>
  • A digital marketing tactic called search engine marketing (SEM) is used to make a website more visible in search engine results pages (SERPs).
  • The practice of promoting websites by making them more visible in search engine results pages, primarily through paid advertising, is known as search engine marketing.
  • The technique of obtaining traffic from search engines, either naturally or by paid advertising, is known as search engine marketing (also known as search marketing).
  • There are two basic sorts of search marketing: PSAs and SEOs (Search Engine Optimization) (Paid Search Advertising).

To learn more about search engine marketing, refer to:

brainly.com/question/20850124

#SPJ4

8 0
2 years ago
Other questions:
  • How does adding additional light bulbs affect a series circuit?
    10·1 answer
  • Why is a memory hierarchy of different memory types used instead of only one kind of memory?
    13·1 answer
  • Digital subscriber lines: are very-high-speed data lines typically leased from long-distance telephone companies. are assigned t
    5·1 answer
  • What type of waves in the electromagnetic spectrum has the Search for Extraterrestrial Intelligence (SETI) mostly analyzed in th
    15·1 answer
  • The used of PPE in the shop includes the following, except:
    10·2 answers
  • Which of these parts serves as the rear cross structure of a vehicle?
    12·1 answer
  • Select the correct answer from each drop-down menu. A company is recruiting for a web designer. What kind of candidate should th
    14·2 answers
  • 8.
    9·1 answer
  • You are an IT administrator troubleshooting a Windows-based computer. After a while, you determine that you need to refresh the
    10·1 answer
  • Lab 8-1: Working with Boot Loader and Runlevels what is the root password
    9·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!