Код:
#include<iostream>
using namespace std;
struct Hospital {
char name[64];
char s_name[64];
char diagnose[64];
int days;
};
int n;
char your_diagnose[64];
Hospital a[128];
bool cmp(char c1[],char c2[]) { //не можем да сравняваме 2 масива, затова трябва да си напишем функция, която прави това
int n1=strlen(c1),n2=strlen(c2); //намираме дължината на 2те думи
if(n1!=n2) return 0; //ако са с различна дължина значи нe еднакви
for(int i=0;i<n1;i++) { //ако са с еднаква дължина обхождаме и двете думи и ако срещнем различна буква значи не са еднакви
if(c1[i]!=c2[i]) return 0;
}
return 1; //ако дължините са равни и всички букви са еднакви значи 2те думи са еднакви
}
int main() {
Hospital ans;
int i,maxd=-1;
cin>>n;
for(int i=0;i<n;i++) {
cin>>a[i].name>>a[i].s_name>>a[i].diagnose>>a[i].days;
}
cin>>your_diagnose;
for(int i=0;i<n;i++) {
if(cmp(your_diagnose,a[i].diagnose)) cout<<a[i].name<<" "<<a[i].s_name<<endl; //подаваме на горната функция 2те думи и ако върне 1 значи са еднакви
if(a[i].days>maxd) { //проверяваме дали текущите максимални дни прекарани в болницата не са по-малки от дните прекарани от i-тия човек
maxd=a[i].days; //ако е така на максималните дни присвояваме дните прекарани от i-тия човек
ans=a[i]; //за да можем да изкараме накрая човека с максимални дни в болницата ни трябва ans, където ще запишем неговите данни
}
}
cout<<ans.name<<" "<<ans.s_name<<" "<<ans.diagnose<<" "<<ans.days<<endl;
return 0;
}
Ако не разбираш нещо кажи.