Δημιουργήστε πρόγραμμα που διαβάζει τα ονόματα και βαθμολογίες (ακέραιοι 1 – 20) 10 μαθητών και τα τοποθετεί σε 2 παράλληλους πίνακες. Στη συνέχεια:
- Δημιουργήστε συνάρτηση που τυπώνει μορφοποιημένα το περιεχόμενο των 2 πινάκων.
- Συνάρτηση που υπολογίζει ποιος έχει την πιο ψηλή βαθμολογία;
- Ποια βαθμολογία είναι η πιο χαμηλή;
- Συνάρτηση που υπολογίζει το μέσο όρο των βαθμολογιών;
- Συνάρτηση που τυπώνει τους 2 πίνακες στην οθόνη ταξινομημένους κατά αύξουσα με βάση το όνομα. (Bubble sort)
- Τυπώστε τους 2 πίνακες στην οθόνη ταξινομημένους σε αύξουσα με βάση τη βαθμολογία. (Insertion sort)
- Συνάρτηση που υπολογίζει πόσοι μαθητές έχουν βαθμό 20; (Sequential search)
- Μπορεί να γίνει Binary search στο πίνακα των βαθμολογιών και αν ναι γιατί; Σε περίπτωση που ισχύει να βρεθεί μαθητής που έχει βαθμό 15.
#include <iostream>
#include <string>
#include <iomanip>
#define SIZE 10
using namespace std;
void printArrays(string names[], int grades[]){
for(int i=0;i<SIZE;i++){
cout<<names[i]<<setw(20)<<grades[i]<<endl;
}
}
string highestGrade(string names[],int grades[]){
int maxGrade=grades[0];
int maxi=0;
for(int i=1;i<SIZE;i++){
if(grades[i]>maxGrade){
maxGrade=grades[i];
maxi=i;
}
}
return names[maxi];
}
double average(int grades[]){
int sum=0;
for(int i=0;i<SIZE;i++){
sum+=grades[i];
}
return (double)sum/SIZE;
}
void bubbleSortName(string names[],int grades[]){
int temp;
string tempS;
for (int i = 0; i<SIZE - 1; i++) {
for (int j = i + 1; j<SIZE; j++) {
if (names[i]>names[j]) {
temp = grades[i];
grades[i] = grades[j];
grades[j] = temp;
tempS=names[i];
names[i]=names[j];
names[j]=tempS;
}
}
}
printArrays(names,grades);
}
int student20(int grades[]){
int counter=0;
for(int i = 0; i < SIZE; i++)
if (grades[i]==20)
counter+=1;
return counter;
}
int main(){
int i,j,lowestGrade, temp;
string tempS;
/*
string names[SIZE];
int grades[SIZE];
for(i=0;i<SIZE;i++){
cout<<"Name: ";
cin>>names[i];
cout<<"Grade: ";
cin>>grades[i];
}*/
string names[SIZE]={"Maria","Nikos","Popi","Mike","Nandia","Anna","Stella","Tasos","Lena","Nana"};
int grades[SIZE]={15,20,2,15,20,3,2,17,14,18};
printArrays(names,grades);
cout<<"Student with the highest grade is "<<highestGrade(names,grades)<<endl;
lowestGrade=21;
for(i=0;i<SIZE;i++){
if(grades[i]<lowestGrade){
lowestGrade=grades[i];
}
}
cout<<"The lowest grade is "<<lowestGrade<<endl;
cout<<"Average grade is "<<average(grades)<<endl;
bubbleSortName(names,grades);
for (i = 1; i<SIZE; i++) {
temp = grades[i];
tempS=names[i];
j = i - 1;
while (j >= 0 && grades[j]>temp) {
grades[j + 1] = grades[j];
names[j+1]=names[j];
j--;
}
grades[j + 1] = temp;
names[j+1]=tempS;
}
cout<<endl;
printArrays(names,grades);
cout<<endl<<"Number of students with grade 20 is "<<student20(grades)<<endl;
//Binary Search available because array is already sorted
int first = 0, last = SIZE - 1, mid;
bool found=false;
while (first <= last) {
mid = (first + last) / 2;
if (grades[mid] == 15){
found=true;
cout<<"Student with grade 15 is "<<names[mid];
break;
}
else
if (15 < grades[mid])
last = mid - 1;
else
first = mid + 1;
}
if(found==false){
cout<<"Student with grade 15 is NONE";
}
return 0;
}