I am having trouble sorting the names array with the fina score array. I was abl
ID: 3547482 • Letter: I
Question
I am having trouble sorting the names array with the fina score array. I was able to get the final score array to sort from lowest score to highest but how would I do the names with it?
#include <stdio.h>
#include <stdlib.h>
void sumScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max);
void sortScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max);
int main()
{
FILE *scoreFile;
int i,m=0;
double dScore[100], eScore[100], finalScores[100];
char names[100][50];
scoreFile = fopen("scores.txt","w");
if(scoreFile == NULL){
printf("Can't open file! ");
return 0;
}
printf("This program will print out the resluts of the gymnast. ");
printf("Enter the number of competitiors: ");
scanf("%i",&m);
for(i=0;i<m;i++){
printf("Enter the Last Name, D-Score and E-Score of the competitor. ");
scanf("%s %lg %lg",names[i],&dScore[i],&eScore[i]);
if(dScore[i] < 0){break;}
}
printf("The Final Scores are: ");
sumScore(names, dScore, eScore, finalScores, i);
fprintf(scoreFile,"The Final Results are: ");
sortScore(names, dScore, eScore, finalScores, i);
for(i=0; i<m; i++){
fprintf(scoreFile,"Name: %s Final Score: %g ", names[i],finalScores[i]);
}
fclose(scoreFile);
}
void sumScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max)
{
int i;
for(i=0;i<max;i++){
}
finalScore[i] = dScore[i] + eScore[i];
printf("Name: %s Final Score: %g ", names[i],finalScore[i]);
}
}
void sortScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max)
{
int i,j;
double swap;
for(i=0;i<max;i++){
for(j=0;j<max-i-1;j++){
if(finalScore[j]>finalScore[j+1]){
swap=finalScore[j];
finalScore[j]=finalScore[j+1];
finalScore[j+1]=swap;
}
}
}
Explanation / Answer
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sumScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max);
void sortScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max);
int main()
{
FILE *scoreFile;
int i,m=0;
double dScore[100], eScore[100], finalScores[100];
char names[100][50];
scoreFile = fopen("scores.txt","w");
if(scoreFile == NULL){
printf("Can't open file! ");
return 0;
}
printf("This program will print out the resluts of the gymnast. ");
printf("Enter the number of competitiors: ");
scanf("%i",&m);
for(i=0;i<m;i++){
printf("Enter the Last Name, D-Score and E-Score of the competitor. ");
scanf("%s %lg %lg",names[i],&dScore[i],&eScore[i]);
if(dScore[i] < 0){break;}
}
printf("The Final Scores are: ");
sumScore(names, dScore, eScore, finalScores, i);
fprintf(scoreFile,"The Final Results are: ");
sortScore(names, dScore, eScore, finalScores, i);
for(i=0; i<m; i++){
fprintf(scoreFile,"Name: %s Final Score: %g ", names[i],finalScores[i]);
}
fclose(scoreFile);
}
void sumScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max)
{
int i;
for(i=0;i<max;i++)
{
finalScore[i] = dScore[i] + eScore[i];
printf("Name: %s Final Score: %g ", names[i],finalScore[i]);
}
}
void sortScore(char names[][50], double dScore[], double eScore[], double finalScore[], int max)
{
int i,j;
double swap;
char temp[50];
for(i=0;i<max;i++){
for(j=0;j<max-i-1;j++){
if(finalScore[j]>finalScore[j+1])
{
swap=finalScore[j];
finalScore[j]=finalScore[j+1];
finalScore[j+1]=swap;
//u have to swap names also along with scores.
strcpy(temp,names[j]);
strcpy(names[j],names[j+1]);
strcpy(names[j+1],temp);
}
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.