Un tablou unidimensional de dimensiune n (n<50) memorează numele și media generală ale elevilor claselor a IX-a. Datele se citesc de la tastatură. Să se ordoneze tabloul, în ordine descrescătoare a mediilor generale. Creați fișierul text bilet25.txt, care va conține n linii, pe fiecare linie aflându-se numele și media unui elev. Prima linie va conține datele elevului cu media cea mai
mare ș.a.m.d.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
struct elev {
std::string nume;
float medie;
};
//std::fstream readwrite("date.txt"); // daca vrei sa memoreze intr-un fisier .txt foloseste in loc de std::cout<< si std::cin , readwrite<< si readwrite>>
int main()
{
unsigned int size;
std::cout << "Nr elevi: "; std::cin >> size; std::cout << "\n";
elev array[50]; //max 50 elevi
for (unsigned int i = 0; i < size; i++)
{
std::cout << i + 1 << ".Nume: "; std::cin >> array[i].nume; std::cout << " Medie: "; std::cin >> array[i].medie; std::cout << "\n";
}
//descending sort
for (unsigned int index = 0; index < size-1; index++)
{
struct elev temp; // store current elev
for (unsigned int index_next = 0; index_next < (size-1-index); index_next++)
{
//bubble sort
if (array[index_next].medie < array[index_next + 1].medie)
{
temp = array[index_next];
array[index_next] = array[index_next + 1];
array[index_next + 1] = temp;
}
}
}
for (size_t i = 0; i < size; i++)
{
std::cout << "Nume:" << array[i].nume << ", Medie:" << array[i].medie<<"\n";
}
//by N0nNaMe
}
Explicație: