Вариант № 14 1. Двумерные_массивы Дана целочисленная прямоугольная матрица. Определить: 1) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент; 2) номера строк и столбцов всех седловых точек матрицы. Примечание. Матрица А имеет седловую точку А., если Ац является минимальным элементом в i-й строке и максимальным в j-м столбце. 2. Строки_и_файлы Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых. 3. Структуры Описать структуру с именем WORKER, содержащую следующие поля: □ фамилия и инициалы работника; □ название занимаемой должности; □ год поступления на работу. Написать программу, выполняющую следующие действия: □ ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту; □ вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; □ если таких работников нет, вывести на дисплей соответствующее сообщение. 4. Динамические_структуры_данных Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе включают: □ номер автобуса; □ фамилию и инициалы водителя; □ номер маршрута; □ признак того, где находится автобус — на маршруте или в парке. Программа должна обеспечивать: □ начальное формирование данных обо всех автобусах в виде списка; □ при выезде каждого автобуса из парка вводится номер автобуса, и программа устанавливает значение признака «автобус на маршруте»; □ при въезде каждого автобуса в парк вводится номер автобуса, и программа устанавливает значение признака «автобус в парке»; □ по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте. Задание 1: #include <iostream> #include <clocale> #include <cstdlib> #include <iomanip> using namespace std; //----- îáúÿâëåíèå ïðîòîòèïîâ èñïîëüçóåìûõ ôóíêöèé----------------int** Create(int n,int m); // ñîçäàíèå ìàòðèöû n ñòðîê m ñòîëáöîâ void Free(int** M,int n); // îñâîáîæäåíèå ìàòðèöû void Input(int** M,int n,int m); // ââîä ìàòðèöû âðó÷íóþ void InputRand(int** M,int n,int m); // ââîä ðàíäîìíî void Print(int** M,int n,int m); // âûâîä ìàòðèöû //-------------------------------------------------------------------------//void Work(int** M,int n,int m); // îáðàáîòêà ìàòðèöû int Work(int** M,int n,int m); // îáðàáîòêà ìàòðèöû - ñóììà ñòðîêè bool OtrYN(int** M,int n,int m); // îáðàáîòêà ìàòðèöû - åñòü ëè îòðèö ýëåìåíò int MinMass(int** M,int n,int m); // ìèí ñòîëáöà ìàññèâà int MaxMass(int** M,int n,int m); // ìàêñèì. ñòðîêè ìàññèâà //-------------------------------------------------------------------------//---------- main() - òî÷êà âõîäà â ïðîãðàììó êîíñîëüíîãî ïðèëîæåíèÿ int main() { setlocale(LC_ALL,"Rus"); int n,m; cout<<"Êîëè÷åñòâî ñòðîê ìàòðèöû:?"; cin>>n; cout<<"Êîëè÷åñòâî ñòîëáöîâ ìàòðèöû:?"; cin>>m; int** A=Create(n,m); //Input(A,n,m); InputRand(A,n,m); Print(A,n,m); for (int i = 0; i < n; ++i) { if (OtrYN(A,i,m)) { cout << "Ñóììà ñòðîêè ãäå åñòü õîòü 1 îòð. ýëåìåíò "<< i+1 <<" "<< (Work(A,i,m)) << endl; } //if }//for for (int i = 0; i < n; ++i) { cout << "Ìàêñèìóì ñòðîêè "<< i+1 <<" "<< (MaxMass(A,i,m)) << endl; }//for for (int j = 0; j < m; ++j) { cout << "Ìèíèìóì ñòîëáöà "<< j+1 <<" "<< (MinMass(A,n,j)) << endl; }//for // äëîâàÿ òî÷êà ìàòðèöû for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if ( (MinMass(A,n,j))==(MaxMass(A,i,m))) { cout << " Ñåäëîâàÿ òî÷êà " << "i- " << i <<" j- "<< j << endl;} }//for } cout << endl; //Print(A,n,m); Free(A,n); system("pause"); return 0; } //---- îïèñàíèå ôóíêöèé ----------------------------------------int** Create(int n,int m) { int** M=new int*[n]; for(int i=0;i<n;i++) { M[i]=new int[m]; } return M; } //---------------------------void Free(int** M,int n) { for(int i=0;i<n;i++) delete[] M[i]; delete[] M; } //---------------------------void Input(int** M,int n,int m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cout<<"M["<<i<<"]["<<j<<"]=?"; cin >> M[i][j]; } } } //---------------------------void InputRand(int** M,int n,int m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { M[i][j]=rand()%10; } } } //---------------------------void Print(int** M,int n,int m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cout << setw(4) << M[i][j] ; } cout << endl; } cout << endl; } // Ñóììà ñòðîêè ìàññèâà int Work(int** M,int n,int m) { int summ=0; for (int i=0; i < m; ++i) summ+=M[n][i]; return summ; } // Åñòü ëè îòð ýëåìåíò â ñòðîêå bool OtrYN(int** M,int n,int m) { for (int i=0; i < m; ++i) if (M[n][i]<0) return 1; return 0; } // Ìèíèìóì ñòîëáöà ìàññèâà int MinMass(int** M,int n,int m) { int min=M[0][m]; for (int i=1; i < n; ++i) if (min > M[i][m]) min = M[i][m]; return min; } // Ìàêñèìóì ñòðîêè ìàññèâà int MaxMass(int** M,int n,int m) { int max=M[n][0]; for (int i=1; i < m; ++i) if (max < M[n][i]) max = M[n][i]; return max; } Задание 2: #include <fstream> #include <iostream> #include <string> #include <windows.h> using namespace std; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); ifstream ifs("123.txt"); if (!ifs) return 1; string sentense; while (getline(ifs, sentense, '.')) if (sentense.find(',') == string::npos) cout << sentense <<endl; } Задание 3: #include <iostream> #include <fstream> #include <string> #include <cstring> using namespace std; struct WORKER // ñòðóêòóðà { string name; char surname[20]; string patronymic; // îò÷åñòâî string job_title; int year; }; int main() { const int size = 4; // êîëè÷åñòî ðàáîòíèêîâ WORKER wok[size]; // ìàññèâ ðàáîòíèêîâ int N; int flag = 0; // ñ÷¸ò÷èê ïî ñòàæó int n = 0; int i, j; ifstream infile; infile.open("Text.txt"); // îòêðûâàåì ôàéë while(!infile.eof()) // ñ÷èòûâàåì â ìàññèâ äî êîíöà ôàéëà { infile >> wok[n].surname >> wok[n].name >> wok[n].patronymic >> wok[n].job_title >> wok[n].year; n++; } for (i = 0; i < size; i++) for ( j = i + 1; j < size; j++) // ñîðòèðóåì ïî ôàìèëèÿì { if(strcmp(wok[i].surname, wok[j].surname) > 0) { WORKER temp; temp.name = wok[i].name; strcpy(temp.surname, wok[i].surname); temp.patronymic = wok[i].patronymic; temp.job_title = wok[i].job_title; temp.year = wok[i].year; wok[i].name = wok[j].name; strcpy(wok[i].surname, wok[j].surname); wok[i].patronymic = wok[j].patronymic; wok[i].job_title = wok[j].job_title; wok[i].year = wok[j].year; wok[j].name = temp.name; strcpy(wok[j].surname, temp.surname); wok[j].patronymic = temp.patronymic; wok[j].job_title = temp.job_title; wok[j].year = temp.year; } } for ( i = 0; i < size; i++) // âûâîäèì îòñîðòèðîâàííûé ñïèñîê { cout << wok[i].surname << " " << wok[i].name << " " << wok[i].patronymic << endl; cout << wok[i].job_title << " " << wok[i].year << endl; } cout << endl << endl; cout << "Inter a year " << endl; cin >> N; for ( i = 0; i < size; i++) if( N < 2012 - wok[i].year) // ñðàâíèâàåì ñòàæ îò 2012 { cout << wok[i].surname << " "<< wok[i].name << " "<< wok[i].patronymic << " " << wok[i].job_title << " " << wok[i].year << endl; flag++; // åñëè åñòü âûïîëíåíèå óñëîâèÿ óâåëè÷èâàåì ñ÷¸ò÷èê } if(flag == 0) // åñëè ñ÷¸ò÷èê ðàâåí 0 cout << "such workers aren't present " << endl; // òàêèõ ðàáîòíèêîâ íåò system("Pause"); } Задание 4: #include <iostream> #include <string> using namespace std; struct card { int nym_bus, nym_rout; bool condit; string name_driv; card *next; }; //------------------------------------------------------------------------void my_cin(int &z) { while (!(cin >> z) || (cin.peek() != '\n')) { cin.clear(); while (cin.get() != '\n'); cout << "Error input, retry input!" << endl; } } //------------------------------------------------------------------------void add_card(card *&bus_park) { card *ptr = new card; cout << "Enter name driver: "; cin >> ptr->name_driv; cout << "Enter nymber bus: "; my_cin(ptr->nym_bus); ptr->nym_rout = ptr->condit = 0; ptr->next = nullptr; if (bus_park) { for (auto ptr2 = bus_park;; ptr2 = ptr2->next) if (!ptr2->next) { ptr2->next = ptr; break; } } else bus_park = ptr; } //------------------------------------------------------------------------void send_ret(card &bus_park, int x) { int y; cout << "Enter nymber bus: "; my_cin(y); auto *time_ptr = &bus_park; for (; time_ptr; time_ptr = time_ptr->next) if (time_ptr->nym_bus == y) break; else if (!time_ptr->next) { cout << "Nymber bus " << y << " not found...\n"; return; } if (x == 2 && time_ptr->condit || x == 3 && !time_ptr->condit) { if (x == 2) cout << "(error) The bus is on the route.\n"; else cout << "(error) The bus is in park.\n"; return; } else if (x == 2) { time_ptr->condit = 0; cout << "The bus return in park.\n"; } else { time_ptr->condit = 1; time_ptr->nym_rout = rand() % 100; } } //------------------------------------------------------------------------void show_bus_card(card *&bus_card) { int c; cout << "For show bus in route input 1, to show bus in park enter 2: "; my_cin(c); for (auto time_ptr(bus_card); time_ptr; time_ptr = time_ptr->next) if (c == 1 && time_ptr->condit) cout << "\nBus nymber " << time_ptr->nym_bus << "\nDriver " << time_ptr->name_driv << "\nRoute nymber " << time_ptr->nym_rout << endl; else if (c == 2 && !time_ptr->condit) cout << "\nBus nymber " << time_ptr->nym_bus << "\nDriver " << time_ptr->name_driv << endl; } //------------------------------------------------------------------------int main() { card *bus_park(nullptr); int x(1); while (x) { cout << "//----------------------------------------------------------------------\n"; cout << "To add a driver card input 1, to send bus" << " input 2 or to return bus input 3, to show input 4. To exit enter 0: "; my_cin(x); cout << "//----------------------------------------------------------------------\n"; switch (x) { case 1: add_card(bus_park); break; case 2: case 3: if (bus_park) send_ret(*bus_park, x); else cout << "To start, add a record about buses!\n"; break; case 4: if (bus_park) show_bus_card(bus_park); else cout << "To start, add a record about buses!\n"; break; default: if (x) cout << "To enter nymber 1 of 2 or 3 or 4 or 0...\n"; } } return 0;