Convert the Java Program to C or SmallTalk or Ada code import java.util.Scanner;
ID: 3670401 • Letter: C
Question
Convert the Java Program to C or SmallTalk or Ada code
import java.util.Scanner;
import java.io.*;
public class studentType {
final double TESTWEIGHT = 0.20, LABWEIGHT = 0.15, FINALWEIGHT = 0.30;
private String name;
private int test1, test2, lab, quiz, finalExam, total;
private String grade;
OutputStream output = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTest1() {
return test1;
}
public void setTest1(int test1) {
this.test1 = test1;
}
public int getTest2() {
return test2;
}
public void setTest2(int test2) {
this.test2 = test2;
}
public int getLab() {
return lab;
}
public void setLab(int lab) {
this.lab = lab;
}
public int getQuiz() {
return quiz;
}
public void setQuiz(int quiz) {
this.quiz = quiz;
}
public int getFinalExam() {
return finalExam;
}
public void setFinalExam(int finalExam) {
this.finalExam = finalExam;
}
public void getTotal() {
total = (int)((test1 + test2) * TESTWEIGHT + (lab + quiz) * LABWEIGHT + finalExam * FINALWEIGHT);
}
public void getGrade() {
if (total >= 90)
grade = " A ";
else if (total >= 80)
grade = " B ";
else if (total >= 70)
grade = " C ";
else if (total >= 60)
grade = " D ";
else
grade = " F ";
}
public String getStudentInfo(){
String s = String.format("%-20s %-8d %-8d %-8d %-8d %-8d %-10d %-1s ", name,test1,test2,lab,quiz,finalExam,total,grade);
return s;
}
public studentType(Scanner input) {
name = input.next()+" "+input.next()+ " "+input.next();
test1 = input.nextInt();
test2 = input.nextInt();
lab = input.nextInt();
quiz= input.nextInt();
finalExam = input.nextInt();
getTotal();
getGrade();
}
public studentType(String n, int t1, int t2, int t3, int t4, int t5) {
name = n;
test1 = t1;
test2 = t2;
lab = t3;
quiz = t4;
finalExam = t5;
getTotal();
getGrade();
}
}
Codes for Testing Student Class:
import java.io.*;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class StudentGradeProcessing {
static final int SIZE = 7;
public static void main(String[] args) throws FileNotFoundException{
studentType students[] = new studentType[SIZE];
Scanner input = new Scanner(new File("student.txt"));
for(int i = 0; i < SIZE; i++)
students[i] = new studentType(input);
input.close();
PrintWriter output = new PrintWriter( new File("studentOut.txt"));
System.out.printf("%-20s%-8s%-8s%-11s%-8s%-8s%-10s%-5s",
" NAME ", "TEST1", "TEST2", " LAB", "QUIZ", "FINAL",
" TOTAL", " GRADE ");
output.write( String.format("%-20s%-8s%-8s%-11s%-8s%-8s%-10s%-5s ",
" NAME ", "TEST1", "TEST2", " LAB", "QUIZ", "FINAL", " TOTAL", " GRADE"));
for(studentType s: students){
String out = s.getStudentInfo();
output.write(" "+out);
System.out.println(out);
}
output.close();
}
}
Explanation / Answer
Code:
#include<stdio.h>
#include<stdlib.h>
#define SIZE 7
struct studentType
{
char name[27];
int test1, test2, lab, quiz, finalExam, total;
char grade;
};
typedef struct studentType student;
double TESTWEIGHT = 0.20, LABWEIGHT = 0.15, FINALWEIGHT = 0.30;
int getTotal(student s) {
int total;
total= ((s.test1 + s.test2) * TESTWEIGHT + (s.lab + s.quiz) * LABWEIGHT + s.finalExam * FINALWEIGHT);
return total;
}
char getGrade(student s) {
char grade;
if (s.total >= 90)
grade = 'A';
else if (s.total >= 80)
grade = 'B';
else if (s.total >= 70)
grade = 'C';
else if (s.total >= 60)
grade = 'D';
else
grade ='F';
return grade;
}
student readStudentType() {
student s;
FILE *fp;
fp = fopen("student.txt","r");
fscanf(fp,"%s %d %d %d %d %d",&s.name,&s.test1,&s.test2,&s.lab,&s.quiz,&s.finalExam);
s.total=getTotal(s);
s.grade=getGrade(s);
return s;
}
int main()
{
student students[SIZE];
int i;
for( i = 0; i < SIZE; i++)
students[i] = readStudentType();
printf("%-20s%-8s%-8s%-11s%-8s%-8s%-10s%-5s"," NAME ", "TEST1", "TEST2", " LAB", "QUIZ", "FINAL"," TOTAL"," GRADE ");
FILE *fp;
fp=fopen("studentOut.txt","w");
fprintf(fp,"%-20s%-8s%-8s%-11s%-8s%-8s%-10s%-5s "," NAME ", "TEST1", "TEST2", " LAB", "QUIZ", "FINAL", " TOTAL", " GRADE");
for(i=0;i<SIZE;i++)
{
printf("%-20s %-8d %-8d %-8d %-8d %-8d %-10d %-1c ",students[i].name,students[i].test1,students[i].test2,students[i].lab,students[i].quiz,students[i].finalExam,students[i].total,students[i].grade);
fprintf(fp,"%-20s %-8d %-8d %-8d %-8d %-8d %-10d %-1c ",students[i].name,students[i].test1,students[i].test2,students[i].lab,students[i].quiz,students[i].finalExam,students[i].total,students[i].grade);
}
return 0;
}
inputfile: (student.txt)
aravind 12 34 56 78 90
vijay 1 2 3 5 78
kumar 45 78 33 44 77
aravind 12 34 56 78 90
vijay 1 2 3 5 78
kumar 45 78 33 44 77
aravind 12 34 56 78 90
outputFile(studentOut.txt):