Răspuns :
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("bursa.in");
ofstream out("bursa.out");
usigned int n; // n este numar natural
// Declarare structura student cu variabilele aferente
struct student{
int nr_matricol, ex1, ex2, ex3;
float nme; // media notelor
int b; // bursa
} a[100];
void rezolvare()
{
// citim numarul de studenti
in>>n;
// in timpul citirii rezolvam si cerinta.
// pentru fiecare rand din fisierul bursa.in executam
for(int i=1;i<=n;i++)
{
/* citire date student*/
in>>a[i].nr_matricol;
in>>a[i].ex1;
in>>a[i].ex2;
in>>a[i].ex3;
/*
Pentru fiecare student in parte vom calcula media si bursa aferenta, in functie de formula data in cerinta
*/
a[i].nme=(a[i].ex1+a[i].ex2+a[i].ex3)/3; // calculam media notelor. Media aritmetica inseamna suma numerelor date impartite la cate sunt
/*
Vom folosi formula din cerinta pentru a determina bursa fiecarui student.
Daca media calculata mai sus este mai mica decat 6, atunci bursa va fi 0;
Altfel
Daca media este intre 6 si 7 atunci bursa va fi 150 pentru studentii care au media intre notele 6 si 7;
Altfel
Daca media este mai mare decat 7 atunci bursa va fi egala cu 40 * media obtinuta
*/
if(a[i].nme<6)
a[i].b=0;
else
if(a[i].nme>=6 && a[i].nme <7)
a[i].b=150;
else
if(a[i].nme>=7)
a[i].b=40*a[i].nme;
}
/*
Ordonam descrescator toata structura in functie de media fiecarui student ( de la cel mai mare la cel mai mic )
Dar ca sa facem aceasta ordonare corect trebuie ca si celelalte date ale studentilor sa fie ordonate pentru a afisa datele fiecarui student corect.
*/
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
{
if(a[i].nme<a[j].nme)
{
int aux=a[i].nr_matricol;
a[i].nr_matricol=a[j].nr_matricol;
a[j].nr_matricol=aux;
int aux1=a[i].ex1;
a[i].ex1=a[j].ex1;
a[j].ex1=aux1;
int aux2=a[i].ex2;
a[i].ex2=a[j].ex2;
a[j].ex2=aux2;
int aux3=a[i].ex3;
a[i].ex3=a[j].ex3;
a[j].ex3=aux3;
int aux4=a[i].nme;
a[i].nme=a[j].nme;
a[j].nme=aux4;
int aux5=a[i].b;
a[i].b=a[j].b;
a[j].b=aux5;
}
}
// afisare
for(int i=1;i<=n;i++)
out<<"[ "<<a[i].nr_matricol<<" ] [ "<<a[i].ex1<<" "<<a[i].ex2<<" "<<a[i].ex3<<" ] [ "<<a[i].nme<<" ] [ "<<a[i].b<<" ]"<<endl;
}
int main()
{
rezolvare(); // apelul subprogramului.
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!