Скачиваний:
10
Добавлен:
09.12.2018
Размер:
31.65 Кб
Скачать

Практическая работа №6

Массивы структур и массивы строк

Цель работы: получить практические навыки работы с динамическими строковыми данными.

Задания:

  1. Сформировать динамический массив из элементов структурного типа:

struct pupil {

char*name;

int age;

float rating;

};

  1. Распечатать сформированный массив.

  2. Выполнить поиск элементов в массиве, удовлетворяющих условию: Ученики, у которых фамилия «Иванов», и сформировать из них новый массив.

  3. Распечатать полученный массив.

  4. Сформировать динамический массив, состоящий из динамических строк.

  5. Распечатать сформированный массив.

  6. Удалить К строк из начала массива.

  7. Распечатать полученный массив.

Задания 1-4.

#include <iostream>

#include <iomanip>

#include <cstring>

using namespace std;

struct pupil {

char* name;

int age;

float rating;

};

void make_array(pupil*, const int);

void display(const pupil*, const int);

int main()

{

setlocale(LC_ALL, "Russian");

int size = 0;

cout << "Введите size: ";

cin >> size;

pupil* mas_p = new pupil[size];

cout << "Введите значения в массив:\n";

make_array(mas_p, size);

cout << "Сформированный массив:\n";

display(mas_p, size);

pupil* mas_iv = new pupil[size];

int count_iv = 0;

for (int i = 0; i < size; i++) {

if (!strcmp(mas_p[i].name,

"Ivanov"))

mas_iv[count_iv++] = mas_p[i];

}

if (!count_iv) cout << "Нет Иванова.";

else {

cout << "Массив с Ивановыми:\n";

display(mas_iv, count_iv);

}

delete [] mas_iv;

delete [] mas_p;

return 0;

}

void make_array(pupil mas[], const int n)

{

for (int i = 0; i < n; i++){

cout << "[" << i + 1 << "]:" << endl;

cout << "Name: ";

mas[i].name = new char[60];

cin >> mas[i].name;

cout << "Age: "; cin >> mas[i].age;

cout << "Rating: ";

cin >> mas[i].rating;

}

}

void display(const pupil mas[], const int n)

{

for (int i = 0; i < n; i++){

cout << "[" << i + 1 << "]: ";

cout << "Name: " << mas[i].name

<< " Age: " << mas[i].age

<< " Rating: " << mas[i].rating << endl;

}

}

Задания 5-8.

#include <iostream>

#include <cstring>

const int size = 50;

using namespace std;

void make_array(char**, const int);

void display(char**, const int);

void delete_k_item(char**, const int,

const int);

int main()

{

setlocale(LC_ALL, "Russian");

int n, k;

cout << "Введите n: ";

cin >> n;

char** mas_str = new char*[n];

for (int i = 0; i < n; i++)

mas_str[i] = new char[size];

cout << "Введите массив:\n";

make_array(mas_str, n);

cout << "Сформированный массив:\n";

display(mas_str, n);

cout << "Введите k: ";

cin >> k;

delete_k_item(mas_str, n, k);

display(mas_str, n - k);

delete [] mas_str;

return 0;

}

void make_array(char** mas, const int n)

{

for (int i = 0; i < n; i++){

cout << "[" << i+1 << "]: ";

cin >> mas[i];

}

}

void display(char** mas, const int n)

{

for (int i = 0; i < n; i++){

cout << "[" << i+1 << "]: ";

cout << mas[i] << endl;

}

}

void delete_k_item(char** mas, const int n,

const int k)

{

for (int i = 0; i < n - k; i++)

strcpy(mas[i],mas[i + k]);

}

Соседние файлы в предмете Методы и средства проектирования информационных систем и технологий