👤

Se dau datele de naștere a n persoane, numerotate de la 1 la n, în forma an luna zi. Să se determine numărul de ordine al celei mai tinere și al celei mai în vârstă persoană dintre cele date. Date de intrare Programul citește de la tastatură numărul n, iar apoi n triplete de numere naturale a l z, reprezentând anul, luna și ziua de naștere a fiecărei persoane. Date de ieșire Programul va afișa pe ecran două numere p q, reprezentând numărul de ordine al celei mai tinere, respectiv al celei mai în vârstă persoană.

Răspuns :

#include <iostream> using namespace std; struct data{ int an , luna , zi; }; int data_cmp(data x, data y) { //returneaza 0 daca datele sunt egale // 1 daca x > y // -1 daca x < y if(x.an < y.an) return -1; if(x.an > y.an) return 1; if(x.luna < y.luna) return -1; if(x.luna > y.luna) return 1; if(x.zi < y.zi) return -1; if(x.zi > y.zi) return 1; return 0; } void citire(data & d) { cin >> d.an >> d.luna >> d.zi; } int main() { int n, p, q; data dmin, dmax, d; cin >> n; citire(d); dmin = dmax = d; p = q = 1; for(int i = 2 ; i <= n ; i ++) { citire(d); if(data_cmp(d, dmin) < 0) dmin = d, q = i; if(data_cmp(d, dmax) > 0) dmax = d, p = i; } cout << p << " " << q; return 0; }