Осуществить проход по номерам квартир и выписать одинаковые квартиры и проживающих там людей

Всем доброго времени суток. Нужна ваша помощь. Программа практически полностью доделана, но не могу понять как осуществить проход именно по семьям и выписать семьи с одинаковыми номерами квартир.

#include <iostream>
#include <cstdio>
void m_print(void) // для печати файла 
{


	int oldmax_1 = 0; // используеться для определения возраста в семье 1 
	int oldmax_2 = 0; // используеться для определения возраста в семье 2 
	int oldmax_3 = 0; // используеться для определения возраста в семье 3 
	int oldmax_4 = 0; // используеться для определения возраста в семье 4
	char oldmax_name_1[32]; // используеться для имени старшего человека в семье 1 
	char oldmax_name_2[32]; // используеться для имени самого страшего человека в семье 2
	char oldmax_name_3[32]; // используеться для имени самого старшего человека в семье 3
	char oldmax_name_4[32]; // используеться для имени самого страшего человека в семье 4
	char oldmin_name_1[32]; // используеться для имени самого младшего человека в семье 1 
	char oldmin_name_2[32]; // используеться для имени самого младшего человека в семье 2
	char oldmin_name_3[32]; // используеться для имени самого младшего человека в семье 3
	char oldmin_name_4[32]; // используеться для имени самого младшего человека в семье 4
	
	struct people
	{
		char name[32];
			int old;
	};
	struct J_GEO_1
	{
		char city[32];
		char ulitsa[32];
		int kv;
		int dom;
	};
	struct Family
	{
		char name[32];
		people* fd[5];
		J_GEO_1* ad;
	};

	people a = {"dima", 15,},
		b = {"egor", 20,},
		c = {"misha" , 30,},
		n = {"ola" , 29,},
		v = {"masha" , 70,},

		d = {"sasha" , 35,},
		x = {"dasha" , 34,},
		e = {"oleg" , 15,},
		f = {"kostya" , 70,},
		q = {"ira" , 68},

		z = {"kira" , 15,},
		l = {"karina" , 34,},
		m = {"nikita" , 35,},
		s = {"vova" , 60,},
		r = {"dima" , 70,}, // no

		u = {"stas" , 29,},
		i = {"nastya" , 33,},
		p = {"vera", 40,}, // no
		o = {"mikle" , 67,}, // no
		h = {"luda" , 63,}; // no 

	J_GEO_1 a1 = {"moskva", "perovo" , 16 , 140, },
		d1 = {"moskva",  "akdemicheskaya" , 15 , 10,},
		z1 = {"ekaterinburg", "puskina", 29 , 140,},
		u1 = {"anapa", "ianovo", 16 , 48};

	// сравнение номеров домов вывод одинаковых семей 
	// сравнение квартир вывод одинаковых семей 
	// сравнение имен в семьях вывод одинаковых имен в семьях 

	Family F1, F2, F3, F4;

	strcpy(F1.name, "F1");
	F1.fd[0] = &a;
	F1.fd[1] = &b;
	F1.fd[2] = &c;
	F1.fd[3] = &n;
	F1.fd[4] = &v;

	F1.ad = &a1;

	strcpy(F2.name, "F2");
	F2.fd[0] = &d;
	F2.fd[1] = &x;
	F2.fd[2] = &e;
	F2.fd[3] = &f;
	F2.fd[4] = 0;

	F2.ad = &d1;

	strcpy(F3.name, "F3");
	F3.fd[0] = &z;
	F3.fd[1] = &l;
	F3.fd[2] = &m;
	F3.fd[3] = &s;
	F3.fd[4] = 0;

	F3.ad = &z1;

	strcpy(F3.name, "F4");
	F4.fd[0] = &u;
	F4.fd[1] = &i;
	F4.fd[2] = 0;
	F4.fd[3] = 0;
	F4.fd[4] = 0;

	F4.ad = &u1;

	for (int ic = 0; ic <= 4; ic++)
	{
		if(oldmax_1<F1.fd[ic]->old)
		{
			oldmax_1 = F1.fd[ic]->old;
			strcpy(oldmax_name_1, F1.fd[ic]->name);
		}
		for (int ic = 0; ic <= 4; ic++)
		{
			if (oldmax_2 < F2.fd[ic]->old)
			{
				oldmax_2 = F2.fd[ic]->old;
				strcpy(oldmax_name_2, F2.fd[ic]->name);
			}
			for (int ic = 0; ic <= 4; ic++)
			{
				if (oldmax_3 < F3.fd[ic]->old)
				{
					oldmax_3 = F3.fd[ic]->old;
					strcpy(oldmax_name_3, F3.fd[ic]->name);
				}
				for (int ic = 0; ic <= 4; ic++)
				{
					if (oldmax_4 < F4.fd[ic]->old)
					{
						oldmax_4 = F4.fd[ic]->old;
						strcpy(oldmax_name_4, F4.fd[ic]->name);
					} // закончили с максимальным возрастом
					for (int ic = 0; ic <= 4; ic++)
					{
						if (oldmax_1 > F1.fd[ic]->old)
						{
							oldmax_1 = F1.fd[ic]->old;
							strcpy(oldmin_name_1, F1.fd[ic]->name);
						}
						for (int ic = 0; ic <= 4; ic++)
						{
							if (oldmax_2 > F2.fd[ic]->old)
							{
								oldmax_2 = F2.fd[ic]->old;
								strcpy(oldmin_name_2, F2.fd[ic]->name);
							}
							for (int ic = 0; ic <= 4; ic++)
							{
								if (oldmax_3 > F3.fd[ic]->old)
								{
									oldmax_3 = F3.fd[ic]->old;
									strcpy(oldmin_name_3, F3.fd[ic]->name);
								}
								for (int ic = 0; ic <= 4; ic++)
								{
									if (oldmax_3 > F3.fd[ic]->old)
									{
										oldmax_4 = F4.fd[ic]->old;
										strcpy(oldmin_name_4, F4.fd[ic]->name);  
									} // закончили с минимальным возрастом
								}
							}
						}
					}
				}
			}
		}
		
	}
}

Для начала создать массив вместо

тогда и код для другой части наверняка упростится.

Хорошо, примерно массив переделан, как тогда осуществить задачу вывода жильцов проживающих в квартирах с одинаковыми номерами?

Сравнивать

у всех семей.