Загрузка данных


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h> // для system()

#define MAX 100
#define LEN 64

typedef struct {
    char name[LEN];
    char capital[LEN];
    long population;
    double area;
    char president[LEN];
} Country;

void input(Country a[], int *n) {
    int k;
    printf("Сколько добавить: ");
    scanf("%d", &k);
    for (int i = 0; i < k; i++) {
        Country *c = &a[*n + i];
        printf("Название: ");   scanf(" %63[^\n]", c->name);
        printf("Столица: ");    scanf(" %63[^\n]", c->capital);
        printf("Население: ");  scanf("%ld", &c->population);
        printf("Площадь: ");    scanf("%lf", &c->area);
        printf("Президент: ");  scanf(" %63[^\n]", c->president);
    }
    *n += k;
}

void show(Country *c) {
    printf("%-15s | %-15s | %-12ld | %-12.2f | %s\n",
           c->name, c->capital, c->population, c->area, c->president);
}

void showAll(Country a[], int n) {
    printf("--- Список государств ---\n");
    for (int i = 0; i < n; i++) show(&a[i]);
}

void byName(Country a[], int n) {
    char q[LEN];
    printf("Введите название: "); scanf(" %63[^\n]", q);
    int found = 0;
    for (int i = 0; i < n; i++) {
        if (strstr(a[i].name, q)) { show(&a[i]); found++; }
    }
    if (!found) printf("Не найдено.\n");
}

void byArea(Country a[], int n) {
    double s;
    printf("Площадь больше: "); scanf("%lf", &s);
    int found = 0;
    for (int i = 0; i < n; i++) {
        if (a[i].area > s) { show(&a[i]); found++; }
    }
    if (!found) printf("Нет государств с такой площадью.\n");
}

int main() {
    system("chcp 65001 > nul"); // Включаем UTF-8 в консоли
    setlocale(LC_ALL, "Russian");
    
    Country a[MAX];
    int n = 0, ch;

    do {
        printf("\n=== МЕНЮ ===\n");
        printf("1. Ввод государств\n");
        printf("2. Вывод всех\n");
        printf("3. Поиск по названию\n");
        printf("4. Поиск по площади (больше заданной)\n");
        printf("0. Выход\n");
        printf("Выбор: ");
        scanf("%d", &ch);

        if (ch == 1) input(a, &n);
        else if (ch == 2) showAll(a, n);
        else if (ch == 3) byName(a, n);
        else if (ch == 4) byArea(a, n);
    } while (ch != 0);

    return 0;
}