You are on page 1of 13

1

Задача номер 1
2#include <iostream>
3using namespace std;
4
5enum
6{
7
Star,
8
Normal
9};
10
11//Функция для создания линий =)
12int line(unsigned LineType)
13{
14
switch(LineType)
15
{
16
case Star:
17
{
18
cout << endl;
19
20
for(int i = 0; i < 50; i++) {
21
cout << '*'; }

22
23
cout << endl << endl;
24
}
25
case Normal:
26
{
27
cout << endl;
28
29
for(int i = 0; i < 50; i++) {
30
cout << '_'; }
31
32
cout << endl << endl;
33
}
34
}
35}
36
37int main()
38{
39
int n;
40
cout << "Razmer matritsi A (n): "; cin >> n;
41
42
line(Normal);
43
44
//Массив для хранения данных
45
int A[n][n];
46
cout << "Zapolnite matritsu A[" << n << "][" << n << "]:" << endl;
47
48
line(Normal);
49
50
//Заполняем массив данными
51
for(int i = 0; i < n; i++)
52
{
53
for(int j = 0; j < n; j++)
54
{
55
cout << "A[" << i + 1 << "][" << j + 1 << "] = "; cin >> A[i][j];
56
}
57
}
58
59
line(Star);
60
61
cout << "Polucennaea matritsa:" << endl;

1
2Laboratotul numarul 2

1

1
2
line(Normal);
3
4
//Выводим полученную матрицу
5
for(int i = 0; i < n; i++)
6
{
7
for(int j = 0; j < n; j++)
8
{
9
cout << A[i][j] << " ";
10
}
11
cout << endl;
12
}
13
14
line(Star);
15
16
//Вводим координаты матрицы, элемент которой хотим редактировать
17
int x, y;
18
cout << "Vvedite koordinati dlea redactirovania (1 - " << n << ")" << endl;
19
cout << "Liniea (i): "; cin >> x; //Координата х
20
cout << "Kolona (j): "; cin >> y; //Координата y
21
22
line(Normal);
23
24
if((x < 1 || x > n) || (y < 1 || y > n)) //Проверяем, если элемент матрицы
25существует !
26
{
27
cout << "Element matritsi A[" << x << "][" << y << "] otsutstvuet !" <<
28endl;
29
}
30
else
31
{
32
//Выводим значение нужного нам элемента для редактирования
33
cout << "Element A[" << x << "][" << y << "] = " << A[x-1][y-1] << endl;
34
35
//Редактируем значение выбранного элемента
36
cout << "Vvidite novoe znacenie A[" << x << "][" << y << "] = "; cin >>
37A[x-1][y-1];
38
39
line(Star);
40
41
cout << "Polucennaea matritsa:" << endl;
42
43
line(Normal);
44
45
//Выводим полученную после редактирования матрицу
46
for(int i = 0; i < n; i++)
47
{
48
for(int j = 0; j < n; j++)
49
{
50
cout << A[i][j] << " ";
51
}
52
cout << endl;
53
}
54
}
55
56
cout << endl;
57
58
system("pause");
59}

1
2Laboratotul numarul 2

2

1
Задача номер 2
2#include <cstdlib>
3#include <iostream>
4
5using namespace std;
6
7enum
8{
9
Deni,
10
Meseats,
11
God,
12
Imea,
13
Familia,
14
Grupa,
15
16
TOTAL_NUM
17};
18
19struct student
20{
21
char StudentInfo[20][TOTAL_NUM]; //Массив для хранения инф. о студенте
22};
23
24enum
25{
26
Star,
27
Normal,
28
29
TOTAL_LINE
30};
31
32//Функция для создания линий =)
33int line(unsigned LineType)
34{
35
switch(LineType)
36
{
37
case Star:
38
{
39
cout << endl;
40
41
for(int i = 0; i < 50; i++) {
42
cout << '*'; }
43
44
cout << endl << endl;
45
}
46
case Normal:
47
{
48
cout << endl;
49
50
for(int i = 0; i < 50; i++) {
51
cout << '_'; }
52
53
cout << endl << endl;
54
}
55
}
56}
57
58
59
60
61int main()

1
2Laboratotul numarul 2

3

1{
2
unsigned int n;
3
cout << "Vsego studenov (n): "; cin >> n;
4
5
line(Normal);
6
7
struct student Info[n];
8
cout << "Daite inf. o " << n << "-h" << " studentah." << endl;
9
10
line(Normal);
11
12
//Цикл для записи инф. о студентах
13
for(int i = 0; i < n; i++)
14
{
15
cout << "Imea " << i + 1 << "-go studenta: "; cin >>
16Info[i].StudentInfo[Imea];
17
cout << "Familia " << i + 1 << "-go studenta: "; cin >>
18Info[i].StudentInfo[Familia];
19
cout << "Grupa " << i + 1 << "-go studenta: "; cin >>
20Info[i].StudentInfo[Grupa];
21
cout << "Deni rojdenia " << i + 1 << "-go studenta: "; cin >>
22Info[i].StudentInfo[Deni];
23
cout << "Meseats rojdenia " << i + 1 << "-go studenta: "; cin >>
24Info[i].StudentInfo[Meseats];
25
cout << "God rojdenia " << i + 1 << "-go studenta: "; cin >>
26Info[i].StudentInfo[God];
27
28
line(Normal);
29
}
30
31
line(Star);
32
33
//Выводим информацию о имеющихся студентах
34
for(int i = 0; i < n; i++)
35
{
36
for(int x = 0; x < TOTAL_NUM; x++)
37
{
38
cout << Info[i].StudentInfo[x];
39
40
if(x == God || x == Imea || x == Familia)
41
cout << " | ";
42
else if(x == TOTAL_NUM - 1)
43
cout << endl;
44
else
45
cout << "/";
46
}
47
48
line(Normal);
49
}
50
51
line(Star);
52
cout << "Vsego zapolneno inf. o " << n << "-h studentah." << endl;
53
line(Star);
54
55
//Возможность редактирования определённого студента
56
int k;
57
cout << "Kakogo studenta redaktirovati? (n): "; cin >> k;
58
59
line(Normal);
60
61

1
2Laboratotul numarul 2

4

1
2
3
4
//Редактируем инф. выбранного студента
5
cout << "Imea " << k << "-go studenta: "; cin >> Info[k-1].StudentInfo[Imea];
6
cout << "Familia " << k << "-go studenta: "; cin >> Info[k-1].StudentInfo[Familia];
7
cout << "Grupa " << k << "-go studenta: "; cin >> Info[k-1].StudentInfo[Grupa];
8
cout << "Deni rojdenia " << k << "-go studenta: "; cin >> Info[k91].StudentInfo[Deni];
10
cout << "Meseats rojdenia " << k << "-go studenta: "; cin >> Info[k111].StudentInfo[Meseats];
12
cout << "God rojdenia " << k << "-go studenta: "; cin >> Info[k-1].StudentInfo[God];
13
14
line(Normal);
15
16
//Выводим инф. о студентая, включая студента, инф. о котором была изменена
17
for(int i = 0; i < n; i++)
18
{
19
for(int x = 0; x < TOTAL_NUM; x++)
20
{
21
cout << Info[i].StudentInfo[x];
22
23
if(x == God || x == Imea || x == Familia)
24
cout << " | ";
25
else if(x == TOTAL_NUM - 1)
26
cout << endl;
27
else
28
cout << "/";
29
}
30
31
line(Normal);
32
}
33
34
line(Star);
35
36
system("pause");
37}

1
2Laboratotul numarul 2

5

1
Задача номер 3
2#include <cstdlib>
3#include <iostream>
4
5using namespace std;
6
7enum
8{
9
Star,
10
Normal,
11
12
TOTAL_LINE
13};
14
15//Функция для создания линий =)
16int line(unsigned LineType)
17{
18
switch(LineType)
19
{
20
case Star:
21
{
22
cout << endl;
23
24
for(int i = 0; i < 50; i++) {
25
cout << '*'; }
26
cout << endl << endl;
27
}
28
case Normal:
29
{
30
cout << endl;
31
32
for(int i = 0; i < 50; i++) {
33
cout << '_'; }
34
cout << endl << endl;
35
}
36
}
37}
38
39class student
40{
41
private:
42
char nume[20];
43
char prenume[20];
44
char grupa[10];
45
int day;
46
int month;
47
int year;
48
public:
49
int Vvod(int a)
50
{
51
cout << "Imea " << a + 1 << "-go studenta: ";
cin >> nume;
52
cout << "Familia " << a + 1 << "-go studenta: ";
53
cin >> prenume;
54
cout << "Grupa " << a + 1 << "-go studenta: ";
cin >>
55grupa;
56
cout << "Deni rojdenia " << a + 1 << "-go studenta: ";
cin >>
57day;
58
cout << "Meseats rojdenia " << a + 1 << "-go studenta: ";
59
cin >> month;
60
cout << "God rojdenia " << a + 1 << "-go studenta: "; cin >>
61year;

1
2Laboratotul numarul 2

6

1
2
line(Normal);
3
}
4
5
int Vivod()
6
{
7
cout
8
<<
9
nume
10
<<
11
"|"
12
<<
13
prenume
14
<<
15
"|"
16
<<
17
grupa
18
<<
19
"|"
20
<<
21
day
22
<<
23
"/"
24
<<
25
month
26
<<
27
"/"
28
<<
29
year
30
<<
31
endl;
32
33
line(Normal);
34
}
35};
36
37int main()
38{
39
unsigned int n;
40
cout << "Vsego studenov (n): "; cin >> n;
41
42
line(Normal);
43
44
student Info[n];
45
cout << "Daite inf. o " << n << "-h" << " studentah." << endl;
46
47
line(Normal);
48
49
//Цикл для записи инф. о студентах
50
for(int i = 0; i < n; i++)
51
{
52
Info[i].Vvod(i);
53
}
54
55
line(Star);
56
57
58
//Выводим информацию о имеющихся студентах
59
for(int i = 0; i < n; i++)
60
{
61
Info[i].Vivod();

1
2Laboratotul numarul 2

7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27}

}
line(Star);
cout << "Vsego zapolneno inf. o " << n << "-h studentah." << endl;
line(Star);
//Возможность редактирования определённого студента
int k;
cout << "Kakogo studenta redaktirovati? (n): "; cin >> k;
line(Normal);
//Редактируем инф. выбранного студента
Info[k-1].Vvod(k-1);
line(Normal);
//Выводим инф. о студентая, включая студента, инф. о котором была изменена
for(int i = 0; i < n; i++)
{
Info[i].Vivod();
}
line(Star);
system("pause");

1
2Laboratotul numarul 2

8

1
Задача номер 4
2#include <iostream>
3
4using namespace std;
5
6enum
7{
8
Star,
9
Normal,
10
11
TOTAL_LINE
12};
13
14//Функция для создания линий =)
15int line(unsigned LineType)
16{
17
switch(LineType)
18
{
19
case Star:
20
{
21
cout << endl;
22
23
for(int i = 0; i < 50; i++) {
24
cout << '*'; }
25
26
cout << endl << endl;
27
}
28
case Normal:
29
{
30
cout << endl;
31
32
for(int i = 0; i < 50; i++) {
33
cout << '_'; }
34
35
cout << endl << endl;
36
}
37
}
38}
39
40int main()
41{
42
int n; cout << "Razmer matritsi A (n): "; cin >> n;
43
44
line(Normal);
45
46
//Массив для хранения данных
47
int A[n][n];
48
cout << "Zapolnite matritsu A[" << n << "][" << n << "]:" << endl;
49
50
line(Normal);
51
52
//Заполняем массив данными
53
for(int i = 0; i < n; i++)
54
{
55
for(int j = 0; j < n; j++) {
56
cout << "A[" << i + 1 << "][" << j + 1 << "] = "; cin >> A[i][j]; }
57
}
58
59
line(Star);
60
cout << "Polucennaea matritsa:" << endl;
61

1
2Laboratotul numarul 2

9

1
line(Normal);
2
3
//Выводим полученную матрицу
4
for(int i = 0; i < n; i++)
5
{
6
for(int j = 0; j < n; j++)
7
{
8
cout << A[i][j] << " ";
9
}
10
cout << endl;
11
}
12
13
line(Star);
14
15
//Вводим координаты матрицы, элемент которой хотим редактировать
16
int x, y;
17
cout << "Vvedite koordinati dlea redactirovania (1 - " << n << ")" << endl;
18
cout << "Liniea (i): "; cin >> x; //Координата х
19
cout << "Kolona (j): "; cin >> y; //Координата y
20
21
line(Normal);
22
23
if((x < 1 || x > n) || (y < 1 || y > n)) //Проверяем, если элемент матрицы
24существует !
25
cout << "Element matritsi A[" << x << "][" << y << "] otsutstvuet !" <<
26endl;
27
else
28
{
29
//Выводим значение нужного нам элемента для редактирования
30
cout << "Element A[" << x << "][" << y << "] = ";
31
32
int *p;//Указатель (pointer)
33
p = &A[x-1][y-1];
34
35
cout << *p << endl;
36
37
//Редактируем значение выбранного элемента
38
cout << "Vvidite novoe znacenie A[" << x << "][" << y << "] = "; cin >> *p;
39
40
line(Star);
41
42
cout << "Polucennaea matritsa:" << endl;
43
44
line(Normal);
45
46
//Выводим полученную после редактирования матрицу
47
for(int i = 0; i < n; i++)
48
{
49
for(int j = 0; j < n; j++)
50
{
51
cout << A[i][j] << " ";
52
}
53
cout << endl;
54
}
55
}
56
57
cout << endl;
58
system("pause");
59}
60#include <iostream.h>
61#include <string.h>

1
2Laboratotul numarul 2

10

1#include <stdlib.h>
2
3/*СТРУКТУРА СТУДЕНТ*/
4struct Student
5{
6 char Name[20]; //Имя
7
char NameLast[30]; //Фамилия
8 int Age; //Возраст
9 char School[30]; //Место учебы
10
11 void Input(Student &student); //Функция ввода данных в структуру
12 Student *Next; //Адрес на следующий элемент
13};
14class List
15{
16 Student *Head; //Указатель на начало списка
17public:
18 List():Head(NULL){}; //Конструктор по умолчанию (Head=NULL)
19 ~List();//Деструктор
20 void Add(Student &student);
21 void Show();
22};
23
24/*ФУНКЦИЯ ЗАПОЛНЕНИЯ ДАННЫХ ПО СТУДЕНТУ*/
25void Student::Input(Student &student)
26{
27 cout<<endl; //Небольшой разрыв при каждом новом вводе
28 cout<<"Имя: "; cin.getline(Name,20); //Ввод имени
29 cout<<"Фамилия: ";cin.getline(NameLast,30); //Ввод фамилии
30 cout<<"Полных лет ";cin>>Age; //Ввод возраста
31 cin.ignore(); //Игнорируем символ
32 cout<<"Где учится ";cin.getline(School,30); //Ввод места учебы
33}
34
35 List::~List() //Деструктор класса List
36{
37
while (Head!=NULL) //Пока по адресу есть хоть что-то
38
{
39
Student *temp=Head->Next; //Сразу запоминаем указатель на адрес
40следующего элемента структуры
41
delete Head; //Освобождаем память по месту начала списка
42
Head=temp; //Меняем адрес начала списка
43
}
44}
45/*ФУНКЦИЯ ДОБАВЛЕНИЯ НОВОЙ СТРУКТУРЫ В СПИСОК*/
46 void List::Add(Student &student)
47 {
48
Student *temp=new Student; //Выделение памяти под новую структуру
49
temp->Next=Head; //Указываем, что адрес следующего элемента это начало списка
50
51//Копирование содержимого параметра student в только что созданную переменную
52
strcpy(temp->Name,student.Name);
53
strcpy(temp->NameLast,student.NameLast);
54
temp->Age=student.Age;
55
strcpy(temp->School,student.School);
56
57
Head=temp; //Смена адреса начала списка
58 }
59/*ФУНКЦИЯ КЛАССА LIST ДЛЯ ВЫВОДА СПИСКА НА ЭКРАН*/
60 void List::Show()
61 {

1
2Laboratotul numarul 2

11

1
Student *temp=Head; //Объявляем указатель и изначально он указывает на начало
2
3
while (temp!=NULL) //Пока по адресу на начало хоть что-то есть
4
{
5
//Выводим все элементы структуры
6
cout<<temp->Name<<"tt"; //Вывод имени
7
cout<<temp->NameLast<<"tt"; //Вывод фамилии
8
cout<<temp->Age<<"tt"; //Вывод возраста
9
cout<<temp->School<<endl; //Вывод места учебы
10
11
temp=temp->Next; //Указываем на следующий адрес из списка
12
}
13
cout<<endl;
14 }
15
16int main ()
17{
18 Student student; //Обяъвили переменную, тип которой Студент
19 int N; //Объявили переменную - число студентов
20 List lst; //Объявили переменную типа Список. Она выступает как контейнер данных
21
22 cout<<"N = ";cin>>N; //Ввели число студентов
23 cin.ignore(); //Игнорируем клавишу Enter
24
25 for (int i=0;i<N;i++)
26 {
27
student.Input(student); //Передаем в функцию заполнения переменную студент
28
lst.Add(student); //Добавляем заполненную структуру в список
29 }
30
31 cout<<endl;
32 lst.Show(); //Показываем список на экране
33 system("PAUSE");
34}
35
36

37http://ci-plus-plus-snachala.ru/?p=57

1
2Laboratotul numarul 2

12

1Лабораторная работа 2 „Использование различных структур данных”
2(Обязательно)
3
4
1. Создать двумерную таблицу целого типа. Исходные данные вводятся с клавиатуры.
5
Предусмотреть возможность изменения (обновления) значений необходимых
6
элементов, при помощи клавиатуры, для случая когда известны координаты
7
(строка, столбец) и значение элемента или же только значение элемента. В
8
последнем случае вывести на экран координаты всех элементов которые были
9
заменены. Вывести на экран первоначальную и измененную матрицы.
10
11
2. Создать вектор (одномерная таблица), элементы которого являются структурами
12
содержащими следующую информацию о студенте:
13
 Имя;
14
 Фамилия;
15
 Год, Месяц, День рождения;
16
 Номер группы где обучается.
17
Введите с клавиатуры информацию касающуюся каждого студента. Предусмотреть
18
возможность изменения информации на запрос пользователя при помощи
19
клавиатуры.
20
21
3. Реализовать предыдущий пункт используя классы.
22
23
4. Реализовать первый пункт используя указатели.
24

1
2Laboratotul numarul 2

13