fork download
  1. /*
  2. Pentru elevii clasei a 12-a, profesorul diriginte are nevoie de urmatoarele
  3. informatii, pentru a calcula nota la purtare a unui elev: numele, prenumele,
  4. numarul total de absente si numarul de absente motivate. Pentru fiecare 10
  5. absente nemotivate, elevul pierde un punct la nota de la purtare.
  6. Daca numarul absentelor nemotivate este mai mare decat 50, elevul primeste media 4. Realizati un program care calculeaza notele la purtare ale elevilor si
  7. afiseaza o lista a elevilor ordonata descrescator dupa media de la purtare.
  8.  
  9. Input:
  10.  
  11. n = 6
  12.   Ionescu Vlad 17 10
  13.   Popescu Ion 24 1
  14.   Ionescu Ana 8 6
  15.   Alexe Maria 20 4
  16.   Mitea Ilie 73 6
  17.   Popescu Dan 12 12
  18. Output:
  19.  
  20.   Ionescu Ana 10
  21.   Ionescu Vlad 10
  22.   Popescu Dan 10
  23.   Alexe Maria 9
  24.   Popescu Ion 8
  25.   Mitea Ilie 4
  26. */
  27. #include <iostream>
  28. #include <cstring>
  29. #define FIN "students.in"
  30. #define FOUT "students.out"
  31.  
  32. using namespace std;
  33.  
  34. typedef unsigned int uint;
  35. typedef struct Student {
  36.  
  37. char name[100];
  38. uint media;
  39. } S;
  40.  
  41. S arr[100], aux;
  42. uint total_absences, //number total of absences
  43. unmotivated_absences, //unmotivated
  44. n;
  45. char first[20],
  46. second[20];
  47.  
  48. void selectionmin(S *p, uint n) {
  49.  
  50. for(int i = 1; i <= n - 1; ++i) {
  51.  
  52. S min = p[i];
  53.  
  54. int pos = i;
  55.  
  56. for(int j = i + 1; j <= n ; ++j) {
  57.  
  58. if(p[j].media > min.media) {
  59.  
  60. min = p[j];
  61.  
  62. pos = j;
  63. }
  64. }
  65.  
  66. aux = p[pos];
  67.  
  68. p[pos] = p[i];
  69.  
  70. p[i] = aux;
  71. }
  72. }
  73.  
  74. int main(int argc, char const *argv[]) {
  75.  
  76. //freopen(FIN, "r", stdin);
  77.  
  78. //freopen(FOUT, "w", stdout);
  79.  
  80. cout<<"Number of students -> ";
  81. cin>>n;
  82.  
  83. for(int i = 1; i <= n; ++i) {
  84.  
  85. scanf("%s %s", first, second);
  86.  
  87. strcat(arr[i].name, first);
  88.  
  89. strcat(arr[i].name, " ");
  90.  
  91. strcat(arr[i].name, second);
  92.  
  93. scanf("%d %d", &total_absences, &unmotivated_absences);
  94.  
  95. arr[i].media = 10 - (total_absences - unmotivated_absences)/10;
  96.  
  97. if(arr[i].media < 5) arr[i].media = 4;
  98. }
  99.  
  100. selectionmin(arr, n);
  101.  
  102. cout<<"Output -> "<<endl;
  103.  
  104. for(int i = 1; i <= n; ++i) {
  105.  
  106. cout<<arr[i].name<<" "<<arr[i].media<<"\n";
  107.  
  108. }
  109. return(0);
  110. }
  111.  
Success #stdin #stdout 0.01s 5436KB
stdin
6
Ionescu Vlad 17 10
Popescu Ion 24 1
Ionescu Ana 8 6
Alexe Maria 20 4
Mitea Ilie 73 6
Popescu Dan 12 12
stdout
Number of students -> Output -> 
Ionescu Vlad 10
Ionescu Ana 10
Popescu Dan 10
Alexe Maria 9
Popescu Ion 8
Mitea Ilie 4