Добавил:
Hist
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №1 по С++
.cpp// lab1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h" // стандартная библиотека
#include <iostream> // библиотека ввода вывода
using namespace std; // позволяет использовать имена из библиотеки ввода вывода
struct row { // объявление структуры row для строк нашего массива
int count; // переменная для хранения кол-ва элементов строке
int *elements; // переменная для хранения массива элементов строки
}; // конец структуры
void input(int &element) { // процедура ввода одного числа типа int
while (!(cin>>element)) { // цикл пока не будет нормально считана цифра
if (cin.eof()) // если введённая строка закончилась то
break; // выходим из цикла
cin.clear(); // очистка буфера ввода
cin.ignore(); // пропуск не правильного символа
} // конец цикла
} // конец процедуры
void inputrow(int *&elements, int n) { // процедура ввода массива элементов строки
int i; // объявление переменной для счётчика цикла
elements = new int[n]; // выделение памяти под массив
for (i=0; i<n; i++) { // цикл от 0 до (кол-ва элементов строки)-1
cout<<"["<<i+1<<"]: "; // вывод строки: ['номер элемента строки']:
input(elements[i]); // ввод числа в переменную элемент_строки[номер_элемента] через процедуру input
} // конец цикла
} // конец процедуры
void inputmas(row *&element, int n) { // процедура ввода массива
int i; // объявление переменной для счётчика цикла
for (i=0; i<n; i++) { // цикл от 0 до (кол-ва строк массива)-1
cout<<"{"<<i+1<<"}Vv kol-vo stolbcov: "; // вывод строки: {'номер строки'}Vv kol-vo stolbcov:
input(element[i].count); // ввод числа столбцов через процедуру input
inputrow(element[i].elements, element[i].count); // ввод столбцов через процедуру inputrow
} // конец цикла
} // конец процедуры
void outputmas(row *&element, int n) { // процедура вывода массива на экран
int i, j; // объявление переменных для счётчиков циклов
for (i=0; i<n; i++) { // цикл от 0 до (кол-ва строк массива)-1
for (j=0; j<element[i].count; j++) // цикл от 0 до (кол-ва элементов строки)-1
cout<<element[i].elements[j]<<" "; // вывод строка[номер].столбец[номер]
cout<<endl; // переход на следующую строку
} // конец цикла
cout<<endl; // переход на следующую строку
} // конец процедуры
row* restructmas(row *element, int n) { // функция сортировки строк массива
int i; // объявление переменной для счётчика цикла
row stakan; // объявление переменной для сортировки методом стакана или пузырька
for (i=0; i<n-1; i++) // цикл от 0 до (кол-ва строк массива)-1
if (element[i].elements[0] > element[i+1].elements[0]) { // условие если элемент строки под номером i > элемента строки под номером i + 1
stakan = element[i+1]; // то
element[i+1] = element[i]; // меняем
element[i] = stakan; // их местами
i = -1; // возвращаем счётчик цикла на 0
} // конец цикла
return element; // возвращаем массив с отсортированными строками
} // конец функции
void freemas(row *&element, int n) { // процедура очистки памяти выделенной под массив
int i; // объявление переменной для счётчика цикла
for (i=0; i<n; i++) // цикл от 0 до (кол-ва строк массива)-1
delete [] element[i].elements; // очищаем память выделенную под каждую строку
delete [] element; // удаляем массив
} // конец процедуры
int _tmain(int argc, _TCHAR* argv[]) //основная функция программы
{
int n; // объявление переменной для кол-ва строк массива
cout<<"Vv kol-vo strok: "; // вывод строки: Vv kol-vo strok:
input(n); // ввод кол-ва строк в переменную n через функцию input
row *mas = new row[n]; // объявление переменной под массив строк типа row размерности n
inputmas(mas, n); // ввод массива mas через функцию inputmas
cout<<endl<<"Massiv 1: "<<endl; // вывод строки: Massiv 1: и переход на новую строку
outputmas(mas, n); // вывод массива 1 через функцию outputmas
row *newmas; // объявление переменной под отсортированный массив строк типа row
newmas = restructmas(mas, n); // заполняем отсортированный массив через функцию restructmas
cout<<"Massiv 2: "<<endl; // вывод строки: Massiv 2: и переход на новую строку
outputmas(newmas, n); // вывод отсортированного массива через функцию outputmas
freemas(mas, n); // очищаем память выделенную под первый массив
return 0; // возвращаем 0, было с самого начала
} // конец функции
Соседние файлы в предмете Программирование на C++