#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENTS 100
#define MAX_RESIDENTS 100
#define MAX_LENGTH 100

// Define the structures
typedef struct {
    char student_code[MAX_LENGTH];
    char name[MAX_LENGTH];
    char id_code[MAX_LENGTH];
} Student;

typedef struct {
    char id_code[MAX_LENGTH];
    char city[MAX_LENGTH];
} Resident;

// Function to read students from F1.txt
int read_students(const char *file_name, Student students[]) {
    FILE *file = fopen(file_name, "r");
    if (file == NULL) {
        perror("Error opening file");
        return -1;
    }

    int count = 0;
    while (fscanf(file, "%[^,],%[^,],%s\n", students[count].student_code, students[count].name, students[count].id_code) != EOF) {
        count++;
    }

    fclose(file);
    return count;
}

// Function to read residents from F2.txt
int read_residents(const char *file_name, Resident residents[]) {
    FILE *file = fopen(file_name, "r");
    if (file == NULL) {
        perror("Error opening file");
        return -1;
    }

    int count = 0;
    while (fscanf(file, "%[^,],%s\n", residents[count].id_code, residents[count].city) != EOF) {
        count++;
    }

    fclose(file);
    return count;
}

// Main function
int main() {
    Student students[MAX_STUDENTS];
    Resident residents[MAX_RESIDENTS];

    int student_count = read_students("F1.txt", students);
    int resident_count = read_residents("F2.txt", residents);

    if (student_count == -1 || resident_count == -1) {
        return 1;
    }

    char residence[MAX_LENGTH];
    printf("Enter the residence: ");
    scanf("%s", residence);

    // Find matching students
    int found = 0;
    for (int i = 0; i < student_count; i++) {
        for (int j = 0; j < resident_count; j++) {
            if (strcmp(students[i].id_code, residents[j].id_code) == 0 && strcmp(residents[j].city, residence) == 0) {
                if (!found) {
                    printf("Students with residence %s:\n", residence);
                    found = 1;
                }
                printf("Student Code: %s, Name: %s, ID Code: %s\n", students[i].student_code, students[i].name, students[i].id_code);
            }
        }
    }

    if (!found) {
        printf("No students found with the given residence.\n");
    }

    return 0;
}