Результат работы программы
Задание 5
Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат. Предусмотреть в программе использование функции пользователя.
Определить сумму отрицательных элементов, расположенных выше побочной диагонали матрицы.
Код программы
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
void fill_array(int **array, int*, int*);
void print_array(int **array, int*, int*);
void print_diagonal(int **array, int*, int*);
int main ()
{
int n, m ;
cout << "Vvedite N:" << endl;
cin >> n;
cout << "Vvedite M:" << endl;
cin >> m;
int **array = new int*[n]; //Выделение n блоков памяти целого типа
for(int i = 0; i < n ; i++)
{
array[i] = new int[m];
}
fill_array(array, &n, &m);
print_array(array, &n, &m);
print_diagonal(array, &n, &m);
return 1;
}
void fill_array(int **array, int *n, int *m) //?
{
cout << "\nVvedite massiv A:" << endl; // Ввод элементов двумерного массива
for (int i=0; i < *n; i++)
{
for (int j = 0; j < *m; j++)
{
cout << "Vvedite element[" << i << "][" << j << "]: "; //Ввод элемента
cin >> array[i][j];
}
}
}
void print_diagonal(int **array, int *n, int *m){ //поиск отрицательных элементов, расположенных выше побочной диагонали матрицы
double xStep =(double) *n /(double) *m;
int sum negativeElements = 0;
cout << endl << "Diagonal: " << endl;
double xDiagonal = *m - 1 ;
for (int i = 0; i< *n; i++) // Просмотр элементов массива
{
for (int j=0; j < *m; j++) // Просмотр элементов массива
{
cout << setw (9);
if(j <= ceil( xDiagonal)) // Сравнение элементов массива
{
cout << " ";
}
else //иначе
{
if(array[i][j] > 0)
{
cout << array[i][j];
negativeElements++;
}
}
}
xDiagonal -= xStep;
cout << endl;
}
cout << endl;
std::cout << "Summa negativnyh elemento: " << negativeElements << std::endl;
}
void print_array(int **array, int *n, int *m) //функция печати массива
{
cout << endl << "Massiv: " << endl; // Вывод элементов двумерного массива
for (int i = 0; i< *n; i++)
{
for (int j=0; j < *m; j++)
{
cout << setw (9) << array[i][j];
}
cout << endl;
}
cout << endl;
}
Результат работы программы
Задание 6
Код программы
#include <iostream>
#include <fstream>
#include <iomanip>
#include <curses.h>
using namespace std;
typedef basic_string<char> string; //Определение типа данных
typedef struct
{
Int number; //номер
int destination; // пункт назначения
int time of departure; // время отправления
int of afarrival ; // время прибытия
} TGood;
int Menu(); //создание меню
void new_table(); //Создание новой таблицы
void open_file(); //открытие файла
void add_entry(); //добавить запись
void add_entry(TGood); //добавление записи в список
void view_entries(); //вид записи
void view_filtered_entries(); //отфильтрованные записи
void save_file(); //сохранить файл
void save_filtered_file(); //сохранить отфильтрованные файла
void clean_screen(); //очистить экран
TGood * goods;
int goodsCount;
int main ()
{
new_table(); // Создание чистой таблицы сразу после запуска программы
while (true)
{
switch (Menu())
{
case 1: new_table(); break;
case 2: open_file(); break;
case 3: add_entry(); break;
case 4: view_entries(); break;
case 5: view_filtered_entries(); break;
case 6: save_file(); break;
case 7: save_filtered_file(); break;
case 8: return 0;
default: puts("Сделайте выбор!");
}
cout << endl << endl << "Press any key to continue...." << endl;
system("read -n1 -p ' ' key");
clean_screen(); //очистить экран
}
}
int Menu() // Меню
{
cout << "Меню:" << endl;
cout << "1. Новая таблица" << endl;
cout << "2. Открыть файл" << endl;
cout << "3. Добавить запись об информации" << endl;
cout << "4. Отобразить все записи об информации" << endl;
cout << "5. Отобразить записи об информации о рейсах прибывающих раньше заданного времени" << endl;
cout << "6. Сохранить файл" << endl;
cout << "7. Сохранить в файл записи об информации о рейсах прибывающих раньше заданного времени " << endl;
cout << "8. Выход" << endl;
int i;
cin >> i; // Ввод выбранного пункта меню
return i;
}
void new_table(){ // Создание новой таблицы
clean_screen();
cout << "Создание новой таблицы..." << endl;
goods = new TGood[0];
goodsCount = 0;
std::cout << "Новая таблица создана. Добавьте записи в новую таблицу" << std::endl;
}
void add_entry(){ // добавление записи
clean_screen();
cout << "Добавление записи" << endl;
TGood good ;
std::cout << "Введите название рейса" << std::endl;
std::cin >> good.name;
std::cout << "Введите количество пунктов назначения" << std::endl;
std::cin >> good.count;
std::cout << "Введите время прибытия" << std::endl;
std::cin >> good.price;
add_entry(good);
std::cout << "Запись успешно добавлена" << std::endl;
}
void add_entry(TGood new_entry){ // добавления записи в список всех ( новая запись)
goodsCount++;
TGood * new_goods = new TGood [goodsCount];
for(int i = 0; i < goodsCount - 1; i++)
{
new_goods[i] = goods[i];
}
new_goods[goodsCount - 1] = new_entry;
goods = new_goods;
}
void view_entries() // просмотр записей
{
clean_screen();
cout << "Все записи в таблице рейсов"<< endl;
cout << "Всего записей в таблице: " << goodsCount << endl;
cout << setw(5) << "| " << "рейсы" << setw(10)<<"| "<< "Количество пунктов назначения" << setw(10)<< "| " << "прибытие" << endl;
for(int i = 0; i < goodsCount; i ++ )
{
cout << "#" << i+1 << " | " << goods[i].name << setw(30)<<"| " << goods[i].count<< setw(30)<< "| "<< goods[i].price << endl;
}
}
void view_filtered_entries(){ //вывод отфильтрованных записей
clean_screen();
cout << "Записи в таблице с прибытием раньше заданного времени";
int expensive_goods = 0;
cout << setw(5) << "| " << "рейсы" << setw(10)<<"| "<< "Количество пунктов назначения" << setw(10)<< "| " << "прибытие" << endl;
for(int i = 0; i < goodsCount; i ++ )
{
if(goods[i].price > 1000000 )
{
expensive_goods++;
cout << "#" << expensive_goods << " | " << goods[i].name << setw(30)<<"| " << goods[i].count<< setw(30)<< "| "<< goods[i].price << endl;
}
}
cout << endl << "Всего " << expensive_goods << " из " << goodsCount << " прибывших раньше времени" << endl;
}
void open_file(){ //Чтение записей из файла
clean_screen();
cout << "Чтение записей из файла" << endl << endl;
string inputFilename;
std::cout << "Введите имя файла: " ;
std::cin >> inputFilename;
ifstream inFile;
inFile.open(inputFilename, ios::in);
if (inFile)
{
new_table();
while(!inFile.eof()){
TGood item;
inFile >> item.name >> item.count >> item.price;
if(item.name != "")
{
add_entry(item);
}
}
inFile.close();
}
std::cout << "Файл успешно прочитан. Загружено записей: "<< goodsCount << std::endl;
}
void save_file(){ // сохранение файла
clean_screen();
cout << "Сохранение всех записей в файл" << endl << endl;
string outputFilename;
std::cout << "Введите имя файла: " ;
std::cin >> outputFilename;
ofstream outFile;
outFile.open(outputFilename, ios::out);
if (outFile)
{
for(int i = 0; i < goodsCount; i ++ )
{
outFile << goods[i].name <<" " << goods[i].count<< " "<< goods[i].price << endl;
}
outFile.close();
}
std::cout << "Файл успешно сохранен. Имя файла: "<< outputFilename << std::endl;
}
void save_filtered_file(){ // сохранение отфильтрованных данных в файл
clean_screen();
cout << "Сохранение записей с рейсами прибавшими раньше заданнго времени" << endl << endl;
string outputFilename;
std::cout << "Введите имя файла: " ;
std::cin >> outputFilename;
ofstream outFile;
outFile.open(outputFilename, ios::out);
if (outFile)
{
for(int i = 0; i < goodsCount; i ++ )
{
if(goods[i].price > 1000000){
outFile << goods[i].name <<" " << goods[i].count<< " "<< goods[i].price << endl;
}
}
outFile.close();
}
std::cout << "Файл успешно сохранен. Имя файла: "<< outputFilename << std::endl;
}
void clean_screen()
{
cout << string( 100, '\n' );
}
Результат работы программы
Содержимое сохраненного файла
ne_vse.out
Сахар 20 1000001
Соль 30 2000000
vse_tovary.out
Мука 10 900000
Сахар 20 1000001
Соль 30 2000000
Крупа 40 500000
