Структура содержит информацию о странах мира : количество жителей(число), столицу(указатель), вложенную структуру – форму правления(строка фиксированной длины) и занимаемую площадь.
Найти страны с заданным количеством жителей.Удалить страну с заданной столицей
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct info
{
char stran[40];
int jit;
char *stol;
struct {
char mas[30];
int S;
}dannie;
}info;
struct info z[30];
struct info tmp;
int k, i,sch=0;
int menu();
void vvod();
void print();
void poisk();
void del();
int main()
{
printf("Vvedite kol-vo stran: ");
scanf("%d",&k);
while (1)
{
switch (menu())
{
case 1:vvod(); break;
case 2:print(); break;
case 3:poisk(); break;
case 4:del(); break;
case 5:return 0;
default: printf("Не верный выбор/n");
}
}
return 0;
}
int menu()
{
int er;
printf("Введите:\n");
printf("1-Vvoda dannih\n");
printf("2-Pechti dannih\n");
printf("3-Poiska po zad.usl\n");
printf("4-Udalenie po zad.stolice\n");
printf("5-Exit\n");
scanf("%d", &er);
return er;
}
void vvod()
{
printf("Vvedite informaciyu o stranah mira: ");
printf("\n");
printf(" Strana: ");
scanf("%s", info.stran);
printf("vvedite kol-vo jit: ");
scanf("%d", info.jit);
printf("vvedite nazvanie stolicu: ");
scanf("%s", info.stol);
printf("vvedite formu pravl: ");
scanf("%s", info.dannie.mas);
printf("vvedite zanim ploshad: ");
scanf("%d", info.dannie.S);
}
void print() //печать введенных данных
{
system("cls");
for (i = 0; i < k; i++)
{
printf("\nStrana: %s, Kol-vo jit: %d, Stolica: %s, Forma pravleniya: %s , Ploshad: %d ", info.stran, info.jit, info.stol, info.dannie.mas , info.dannie.S);
}
getch();
system("cls");
}
void poisk() //ф-ция поиска по заданному параметру
{
int sw; // переключатель
printf("\n Zadaite kol-vo jit: \n");
scanf("%d", &sw);
for (int i = 0; i < k; i++) //в цикле просматриваем все структуры из массива структур
if (info.jit == sw)
{ printf(" Strana: %s", &info.stran);
printf("\n");
}
}
void del() //ф-ция удаления записи
{
int d; //номер записи, которую нужно удалить
printf("\nVvedite Stolicu\n");
scanf("%s", &d);
if (d != 99)
{
for (int i = (d - 1); i < sch; i++) //цикл для удаления заданной записи, начинаем цикл с удаляемой записи
z[i] = z[i + 1]; //замещаем текущую запись следующей за ней
sch = sch - 1; //уменяьшаем счетчик полных записей на 1
}
if (d == *info.stol)
{
for (int i = 0; i < k; i++)
z[i] = tmp; //замещаем каждую структуру в массиве пустой структурой
sch = 0; //счетчик структур обнуляем, т.к. все записи удалены
}
}