Фрилансеры предложат свои варианты уже через несколько минут!
Публикация заказа не займет много времени.

Ппрограммировании С++

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
using namespace std;
HANDLE hConsole;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

void SetColor(int text, int background)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
void GotoXY(int X, int Y)
{
COORD coord = { X, Y };
SetConsoleCursorPosition(hStdOut, coord);
}

struct state
{
char name[100];
char capital[100];
char language[100];
int population;
int area;
char currency[100];
char State_system[100];
char mainn[100];
bool operator <(state t){
return t.population < population? true : false;
}
}State;

char File[] = "countries.txt"; //Имя файла cantries
int Count;
FILE *F_co; //Логическое имя файла
char Fileх[40] = {};
template <class T>
void add_array(T*& a, int& n, T val)
{
T *temp = new T[++n];
for (int i = 0; i < n; i++)
temp = i < n - 1 ? a : val;
if(a)
delete[]a;
a = temp;
}
void sort(state*&a, int n) //Record*&a= N;int size=i;
{
int min, j;
state temp;// для связи с полями
temp.population = 0;//обнуляем
temp.area = 0;
for (int i = 0; i < n - 1; i++)//цикл по всему массиву
{
min = i;//первым этапом индекс минимума равен 0
for (j = i + 1; j < n; j++)//цикл для сравнения со следующей ячейкой масива
if (a[j] < a[min])//если следующ
min = j;//запоминаем индекс
swap(a, a[min]);//меняем местами
}
}

void Show(state*& n)//n массив записей стран который надо отсортировать перед выводом
{/*
1) После считывания очередной записи в State добавить копию в массив n
2) После сформирования массива n отсортировать его функцией сорт
3) вывести отсортированый масив n
*/
int i,N=0;
char str[100]={};
strcpy(State.name,str);
strcpy(State.capital,str);
strcpy(State.language,str);
State.population = 0;
State.area = 0;
strcpy(State.currency,str);
strcpy(State.State_system,str);
strcpy(State.mainn,str);
//Если файл невозможно открыть для чтения, то завершение работы программы
if ((F_co = fopen(File, "r")) == NULL)
{
fprintf(stderr, "\"%s\" : невозможно открыть\n", File);

}
//Чтение числа записей (Count) в файле
if (fread(&Count, sizeof(int), 1, F_co) != 1)
{
fprintf(stderr, "\"%s\" : ошибка чтения\n", File);

}
//В цикле осуществляется вывод всех записей
for (i = 0; i < Count; i++)
{
fread(&State, 1, sizeof(State), F_co); //Читается имя
if (ferror(F_co)) //Проверяется отсутствие ошибки
{
fprintf(stderr, "\"%s\" : ошибка чтения\n", File);
return;
}
add_array(n, N, State);
strcpy(State.name,str);
strcpy(State.capital,str);
strcpy(State.language,str);
State.population = 0;
State.area = 0;
strcpy(State.currency,str);
strcpy(State.State_system,str);
strcpy(State.mainn,str);
}

sort(n, N);
for (int i = 0; i < N; i++)
{
cout << n.name << endl;
cout << n.capital << endl;
cout << n.language << endl;
cout << n.population << endl;
cout << n.area << endl;
cout << n.currency << endl;
cout << n.State_system << endl;
cout << n.mainn << endl;
cout << endl;
}
delete n;
n=nullptr;
fclose(F_co);
_getch();
}

int menuBegin()
{
int key = 0;
int code;
do {
system("cls");
GotoXY(22, 4);
SetColor(3, 0);
cout << "Выбор действия из меню";
GotoXY(20, 6);
SetColor(15, 0);
cout << "Выберите действие (используя стрелки):";
key = (key + 5) % 5;
if (key == 0)
{
GotoXY(24, 8);
cout << ">> ";
SetColor(0, 2);
cout << "Вывод данных о странах" << endl;
SetColor(15, 0);
}
else
{
GotoXY(24, 8);
SetColor(15, 0);
cout << " Вывод данных о странах" << endl;
}
if (key == 1)
{
GotoXY(24, 10);
cout << ">> ";
SetColor(0, 2);
cout << "Добавить страну" << endl;
SetColor(15, 0);
}
else
{
GotoXY(24, 10);
SetColor(15, 0);
cout << " Добавить страну" << endl;
}
if (key == 2)
{
GotoXY(24, 12);
cout << ">> ";
SetColor(0, 2);
cout << "Изменить данные о стране" << endl;
SetColor(15, 0);
}
else
{
GotoXY(24, 12);
cout << " Изменить данные о стране" << endl;
}
if (key == 3)
{
GotoXY(24, 14);
cout << ">> ";
SetColor(0, 2);
cout << "Сохранить в новом файле" << endl;
SetColor(15, 0);
}
else
{
GotoXY(24, 14);
cout << " Сохранить в новом файле" << endl;
}
if (key == 4)
{
GotoXY(24, 16);
cout << ">> ";
SetColor(0, 2);
cout << "Выход" << endl;
SetColor(15, 0);
}
else
{
GotoXY(24, 16);
cout << " Выход" << endl;
}
code = _getch();
if (code == 224)// проверка нажатия одной из управляющих клавиш
{
code = _getch();
if (code == 80) key++;//cрелка вниз
if (code == 72) key--;//cрелка вверх
}
} while (code != 13);// нажат enter (сделан выбор)- выходим из цикла
system("cls");
return key;
}

void Find(char *s)
{
int i;

char str[100]={};
strcpy(State.name,str);
strcpy(State.capital,str);
strcpy(State.language,str);
State.population = 0;
State.area = 0;
strcpy(State.currency,str);
strcpy(State.State_system,str);
strcpy(State.mainn,str);
//Если файл невозможно открыть для чтения, то завершение работы программы
if ((F_co = fopen(File, "r+")) == NULL)
{
fprintf(stderr, "\"%s\" : невозможно открыть\n", File);

}
//Чтение числа записей (Count) в файле
if (fread(&Count, sizeof(int), 1, F_co) != 1)
{
fprintf(stderr, "\"%s\" : ошибка чтения\n", File);

}
//В цикле for осуществляется поиск нужной записи
for (i = 0; i < Count; i++)
{
fread(&State, 1, sizeof(State), F_co); //Чтение имени
if (ferror(F_co)) //Проверка отсутствия ошибки
{
fprintf(stderr, "\"%s\" : ошибка чтения\n", File);
return;
}

if (strcmp(s, State.name) == 0)//если такая Страна уже есть выводяться данные о ней
{ //и запрашивается ввод данных для редактирования
SetConsoleCP(866);
cout << State.name << endl;
cout << State.capital << endl;
cout << State.language << endl;
cout << State.population << endl;
cout << State.area << endl;
cout << State.currency << endl;
cout << State.State_system << endl;
cout << State.mainn << endl;
cout << "Введите страну\n"; SetConsoleCP(1251);
gets(State.name); SetConsoleCP(866);
cout << "Введите столицу\n"; SetConsoleCP(1251);
gets(State.capital); SetConsoleCP(866);
cout << "Введите государственный язык\n"; SetConsoleCP(1251);
gets(State.language); SetConsoleCP(866);
cout << "Введите количество населения\n"; SetConsoleCP(1251);
cin >> State.population; SetConsoleCP(866);
cout << "Введите площадь\n"; SetConsoleCP(1251);
cin >> State.area; SetConsoleCP(866);
cout << "Введите валюту страны\n"; SetConsoleCP(1251);
gets(str);
gets(State.currency); SetConsoleCP(866);
cout << "Введите систему правления\n"; SetConsoleCP(1251);
gets(State.State_system); SetConsoleCP(866);
cout << "Введите имя правителя страны\n"; SetConsoleCP(1251);
gets(State.mainn); SetConsoleCP(866);
if (fseek(F_co, (sizeof(state)*i + 4), SEEK_SET)!=0)
{
fprintf(stderr, "\"%s\" : ошибка поиска\n", File);

}
fwrite(&State, 1, sizeof(state), F_co);
fclose(F_co);
return;
}
}
cout << "Такой страны в Вашем справочниек нет\n";
fclose(F_co);
_getch();
return;
}

void Create(void) //Создает файл, если его не существует
{
if ((F_co = fopen(File, "w+")) == NULL)
{
fprintf(stderr, "\%s\" : невозможно открыть\n", File);
return;
}
Count = 0;
if (!fwrite(&Count, sizeof(Count), 1, F_co))
{
fprintf(stderr, "\"%s\" : ошибка записи\n", File);
return;
}
fclose(F_co);
}
//---------------------------------------------------------------------
int Choice(char *str)
{
int i;

if ((F_co = fopen(File, "r")) == NULL)
{
Create();
return 1;
}
if (fread(&Count, sizeof(int), 1, F_co) != 1)
{
fprintf(stderr, "\"%s\" : ошибка чтения\n", File);

}
for (i = 0; i < Count; i++)
{
fread(&State, 1, sizeof(State), F_co);
if (ferror(F_co))
{
fprintf(stderr, "\"%s\" : ошибка чтения\n", File);
return 1;
}
if (strcmp(str, State.name) == 0)
{
fclose(F_co);
return 0; //Строка str есть в файле
}
}
fclose(F_co);
return 1; //Строки str нет в файле
}

void Add(char* s) //Добавляет запись в файл
{ //
int i;
char str[100]={};
strcpy(State.name,str);
strcpy(State.capital,str);
strcpy(State.l...


#include "Matrix.h"
#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
class Matrix{

int **Ar;
int n;
int m;
public:
void obnul();
void zapol(int s);
int dostyp(int &i, int & j);
int output(int i, int j);
void Create();
void first_column(int &imin, int &imax, int &jmin,int &i, int &k);
void last_stroka(int&size, int&jmin, int&jmax, int&imax,
int&j, int&k);
void last_column(int &imax, int&imin, int&jmax,int&i, int&k);
void first_line(int&size, int &jmax, int&jmin, int&imin, int&j, int&k);
int size();
void prov();
~Matrix();
/*Matrix(int a, int b);*/
int N = 0;
Matrix(int i, int j);

};
void Matrix:: Create()
{
Ar = new int*[n];
for (int z = 0; z < n; z++)
Ar[z] = new int[m];
obnul();
}Matrix::Matrix (int i, int j) : n(i), m(j) { Create(); }

Matrix::~Matrix ()
{
for (int z = 0; z < m; z++)
delete[] Ar[z];
delete[] Ar;
}
void Matrix::obnul(){
int N = (n*m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Ar[j] = 0;

}
}
int Matrix::size(){
return N;
}
void Matrix::prov(){
if (N == 0)
cout << " Матрица пустая\n";
}
int Matrix::dostyp(int &i, int &j){
for (int a = 0; i < n; i++)
{
for (int b = 0; j < m; j++)
if (i == a&&b == j)
return Ar[a];
}
}
int Matrix::output(int i,int j)
{
//выход по 10 в строке последняя строка может быть не полная


return Ar[j];
}
void Matrix:: first_column( int &imin, int &imax, int &jmin,int &i, int &k){
for (i = imin; i <=imax; i++) //pervii stolbec
{
Ar[jmin] = k++;
}
jmin++;
}
void Matrix::zapol(int s){
s = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
this->Ar[j]=s++;
}
}
void Matrix:: last_stroka(int&size,int&jmin, int&jmax, int&imax,
int&j, int&k){

/*if ((size / 10) > 0){
jmax = 10;
size = size - 10;
}
else
jmax = size;*/
for (j = jmin; j <= jmax; j++) //posledniaia stroka
{
Ar[imax][j] = k++;

}
imax--;
}
void Matrix:: last_column( int &imax, int&imin, int&jmax, int&i, int&k){
for (i = imax; i >= imin; i--) //poslednii stolbec
{
Ar[jmax] = k++;

}
jmax--;
}
void Matrix::first_line(int&size, int &jmax, int&jmin, int&imin, int&j, int&k){
for (j = jmax; j >= jmin; j--) //pervaia stroka
{
Ar[imin][j] = k++;

}
imin++;
}
void main()
{
setlocale(0, "");
int n, m, col = 0, res = 0;
cin >> n >> m;
int size = (n*m);
int jmin = 0, imin = 0, jmax=m-1,
imax = n-1, i, k=0,j;
Matrix A(n, m);

if (n*m == 0)
cout << "Матрица пустая\n";
else
{
A.obnul();
A.zapol(0);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << A.output(i, j)<<" ";
col++;
if (col % 10 == 0){
cout << endl;
}
}

}

int size = (n*m);
do{
A.first_column(imin, imax, jmin, i, k);
A.last_stroka(size, jmin, jmax, imax, j, k);
A.last_column(imax, imin, jmax, i, k);
A.first_line(size, jmax, jmin, imin, j, k);
} while (k < (n*m));
col = 0;
cout << endl;

for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << A.output(i, j)<<" ";
col++;
/*if (col % 10 == 0){

}*/
}
cout << endl;
}
}

system("pause");
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
void zero(int **a, int &n, int &m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
a[j] = 0;
cout << endl;
}

}
void first_column(int**a, int &imin, int &imax, int &jmin, int &i, int &k){
for (i = imin; i <= imax; i++) //pervii stolbec
{
a[jmin] = k++;
}
jmin++;
}
void last_stroka(int**a, int&jmin, int&jmax, int&imax, int&j, int&k){
for (j = jmin; j <= jmax; j++) //posledniaia stroka
{
a[imax][j] = k++;
}
imax--;
}
void last_column(int**a, int &imax, int&imin, int&jmax, int&i, int&k){
for (i = imax; i >= imin; i--) //poslednii stolbec
{
a[jmax] = k++;
}
jmax--;
}
void first_line(int**a, int &jmax, int&jmin, int&imin, int&j, int&k){
for (j = jmax; j >= jmin; j--) //pervaia stroka
{
a[imin][j] = k++;
}
imin++;
}
void show(int **a, int&m, int&j){
for (j = 0; j<m; j++)
{
cout << setw(3) << a[0][j] << " ";
}
cout << endl;
}
void show_2(int **a, int&i, int&m, int&n, int&j){
for (i = 1; i<n; i++)
{
for (j = 0; j<m; j++)
{
cout << setw(3) << a[j] << " ";
}
cout << endl;
}
}
void del(int** a, int n)
{
for (int i = 0; i < n; i++)
{
delete a;
}
delete[] a;
}
void main()
{
setlocale(0, "");
int k = 0, j, i, n = 0,m=0;

do{
cout << "Введите размер массива\n не больше чем 30*30\n";
cin >> n >> m;

} while (n > 30 || m == 0);

int jmin = 0, imin = 0, jmax = m - 1,
imax = n - 1;
int ** a = new int*[n];
for (int i = 0; i < n; i++)
{
a = new int[m];

for (int j = 0; j < m; j++)
cout<<setw(3)<<(a[j] = k++)<<" ";

cout << endl;
}

cout << "****Imput\n";
cout << " Строк " << n << " Столбцов" << m << endl;
cout << "Output, 2-2. \n";
k = 0;
zero(a, n, m);

do
{
first_column(a, imin, imax, jmin, i, k);
last_stroka(a, jmin, jmax, imax, j, k);
last_column(a, imax, imin, jmax, i, k); //poslednii stolbec
first_line(a, jmax, jmin, imin, j, k); //pervaia stroka

} while (k<(n*m));
show(a, m, j);
show_2(a, i, m, n, j);
cout << "*******\n";
del(a, n);
system("pause");
}