Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

can someone help me change the program into a 2 dimensional array and without th

ID: 3926161 • Letter: C

Question

can someone help me change the program into a 2 dimensional array and without the ** please

#include <iostream>
#include<fstream>
#include<string>
using namespace std;
int number_of_crs = 0;
void input(char**, float**, char*);
void output(char**, float** , char* , float, char*);
int compute_gpa(float**, char*);
int main(){
char* name_of_student;
char* grades = new char[10];
char **course_name = new char*[10];
float **metrics = new float*[10];
float sem_gpa;
for(int i=0; i<10; i++)
{
metrics[i] = new float[3];
}
input(course_name, metrics, name_of_student);
sem_gpa = compute_gpa(metrics, grades);
return 0;
}
void input(char **course_name, float **metrics, char* name_of_student){
int i = 0;
ifstream infile;
infile.open("data.txt");
name_of_student = new char[256];
infile.getline(name_of_student, 100);
course_name[i] = new char[256];
string line;
while(infile.getline(course_name[i], 1000)){
infile >> metrics[i][0] >> metrics[i][1];
course_name[++i] = new char[256];
infile.ignore();
}
number_of_crs = i;
}
int compute_gpa(float **metrics, char* grades){
float sum_of_gpa = 0;
float sum_of_cre = 0;
for(int i=0; i< number_of_crs; i++){
if(metrics[i][0] >= 90 && metrics[i][0] <= 100){
metrics[i][2] = metrics[i][1]*4;
grades[i] = 'A';
}
else if(metrics[i][0] >= 80 && metrics[i][0] <= 89){
metrics[i][2] = metrics[i][1]*3;
grades[i] = 'B';
}
else if(metrics[i][0] >= 70 && metrics[i][0] <= 79){
metrics[i][2] = metrics[i][1]*2;
grades[i] = 'C';
}
else if(metrics[i][0] >= 60 && metrics[i][0] <= 69){
metrics[i][2] = metrics[i][1];
grades[i] = 'D';
}
else if(metrics[i][0] >= 0 && metrics[i][0] <= 59){
metrics[i][2] = 0;
grades[i] = 'F';
}
else{
cout << "Wrong Input";
}
sum_of_gpa = sum_of_gpa + metrics[i][2];
sum_of_cre = sum_of_cre + metrics[i][1];
}
return sum_of_gpa/sum_of_cre;
}
void output(char** course_name, float** metrics, char* name_of_student, float sem_gpa, char* grades){
ofstream output_file("output.txt");
output_file << name_of_student << " ";
output_file.setf(ios::left, ios::adjustfield);
output_file.width(10);
output_file << "Course";
output_file.setf(ios::left, ios::adjustfield);
output_file.width(7);
output_file << "Grades";
output_file.setf(ios::left, ios::adjustfield);
output_file.width(7);
output_file << "GPA";
output_file.setf(ios::left, ios::adjustfield);
output_file.width(7);
output_file << "Credits ";
for(int i=0; i< number_of_crs; i++)
{
output_file.setf(ios::left, ios::adjustfield);
output_file.width(10);
output_file << course_name[i];

output_file.setf(ios::left, ios::adjustfield);
output_file.width(7);
output_file << grades[i];
output_file.setf(ios::left, ios::adjustfield);
output_file.width(7);
output_file << metrics[i][2];
output_file.setf(ios::left, ios::adjustfield);
output_file.width(7);
output_file << metrics[i][1] << " ";
}
output_file.precision(4);
output_file << "Semester GPA : " << sem_gpa;
output_file.close();
return;
}

Explanation / Answer

HI, Please find my code.

I have changed every thing in compile time memory allocation.

Please let me know in case of any issue.

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int number_of_crs = 0;

// function declarations
void input(char course_name[][256], float metrics[][3], char name_of_student[]);
void output(char course_name[][256], float metrics[][3] , char name_of_student[] , float sem_gpa, char grades[]);
int compute_gpa(float metrics[][3], char grades[]);


int main(){

   char name_of_student[256];
   char grades[10];
   char course_name[10][256];
   float metrics[10][3];
   float sem_gpa;

   input(course_name, metrics, name_of_student);
   sem_gpa = compute_gpa(metrics, grades);

   return 0;
}

void input(char course_name[][256], float metrics[][3], char name_of_student[]){
   int i = 0;
   ifstream infile;
   infile.open("data.txt");
   infile.getline(name_of_student, 100);
   string line;
   while(infile.getline(course_name[i], 1000)){
       infile >> metrics[i][0] >> metrics[i][1];
       i++;
       infile.ignore();
   }
   number_of_crs = i;
}

int compute_gpa(float metrics[][3], char grades[]){
   float sum_of_gpa = 0;
   float sum_of_cre = 0;
   for(int i=0; i< number_of_crs; i++){
   if(metrics[i][0] >= 90 && metrics[i][0] <= 100){
   metrics[i][2] = metrics[i][1]*4;
   grades[i] = 'A';
   }
   else if(metrics[i][0] >= 80 && metrics[i][0] <= 89){
   metrics[i][2] = metrics[i][1]*3;
   grades[i] = 'B';
   }
   else if(metrics[i][0] >= 70 && metrics[i][0] <= 79){
   metrics[i][2] = metrics[i][1]*2;
   grades[i] = 'C';
   }
   else if(metrics[i][0] >= 60 && metrics[i][0] <= 69){
   metrics[i][2] = metrics[i][1];
   grades[i] = 'D';
   }
   else if(metrics[i][0] >= 0 && metrics[i][0] <= 59){
   metrics[i][2] = 0;
   grades[i] = 'F';
   }
   else{
   cout << "Wrong Input";
   }
   sum_of_gpa = sum_of_gpa + metrics[i][2];
   sum_of_cre = sum_of_cre + metrics[i][1];
   }
   return sum_of_gpa/sum_of_cre;
}

void output(char course_name[][256], float metrics[][3] , char name_of_student[] , float sem_gpa, char grades[]){
   ofstream output_file("output.txt");
   output_file << name_of_student << " ";
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(10);
   output_file << "Course";
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(7);
   output_file << "Grades";
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(7);
   output_file << "GPA";
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(7);
   output_file << "Credits ";
   for(int i=0; i< number_of_crs; i++)
   {
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(10);
   output_file << course_name[i];
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(7);
   output_file << grades[i];
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(7);
   output_file << metrics[i][2];
   output_file.setf(ios::left, ios::adjustfield);
   output_file.width(7);
   output_file << metrics[i][1] << " ";
   }
   output_file.precision(4);
   output_file << "Semester GPA : " << sem_gpa;
   output_file.close();
   return;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote