пр6
.docxПрактическая работа №6
Массивы структур и массивы строк
Цель работы: получить практические навыки работы с динамическими строковыми данными.
Задания:
-
Сформировать динамический массив из элементов структурного типа:
struct pupil {
char*name;
int age;
float rating;
};
-
Распечатать сформированный массив.
-
Выполнить поиск элементов в массиве, удовлетворяющих условию: Ученики, у которых фамилия «Иванов», и сформировать из них новый массив.
-
Распечатать полученный массив.
-
Сформировать динамический массив, состоящий из динамических строк.
-
Распечатать сформированный массив.
-
Удалить К строк из начала массива.
-
Распечатать полученный массив.
Задания 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]); } |