Постановка задачи:
1. Сформировать массив из элементов структурного типа. Структурный тип определен в варианте. Ввести данные для десяти элементов массива.
2. Вывести массив на экран.
3. Выполнить поиск элементов в массиве, удовлетворяющих заданному в варианте условию. Вывести найденные элементы на экран. В случае отсутствия таких элементов, вывести сообщение об этом.
Задание:
Определить структурный тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Определить средний рост девочек. Вывести данные по девочкам, чье имя совпадает с введенным с клавиатуры.
C/C++
C++ | Структуры и массивы структур. Помогите пожалуйста!
#include <iostream>
#include <iomanip>
#include <vector>
#include <Windows.h>
using namespace std;
struct child
{
string name{}; //имя
uint16_t height{}; //рост
bool ismale{}; //пол
};
void print(vector<child>& vec, string name = "")
{
bool chk = false;
for (auto& i : vec)
if (i.name == name || !name.length()) {
cout << setw(10) << i.name << setw(7) << i.height << endl; chk = true;
}
if (name.length() && !chk) cout << "Данного имени нет в списках\n";
}
child generator()
{
static string male[]{ "Илья","Иван","Саша","Коля","Серёжа","Олег","Миша","Ильдар","Ахмед","Вася","Толя","Витя"};
static string female[]{ "Оля","Инна","Аня","Катя","Илона","Вика","Галя","Надя","Света","Роксолана","Мадлен","Славя" };
bool imale = rand() % 2;
string name = imale ? male[rand() % 12] : female[rand() % 12];
uint16_t h = 120 + rand() % 20 + (imale ? 15 : 0);
child res{ name,h,imale };
return res;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(static_cast<unsigned int>(time(nullptr)));
size_t size;
cout << "Сколько детей?\n";
cin >> size;
vector<child>childs(size);
for (auto& i : childs) i = generator();
child *finde = &childs[0];
print(childs);
double height{};
size = 0;
for (auto& i : childs)
{
!i.ismale ? height += i.height,size++ : NULL;
}
height /= size;
if (!height) cout << "Девочек в списке нет\n"; else cout << "Средний рост девочек: " << setprecision(2) << fixed << height << " см\n";
cout << "Введите имя для поиска:\n";
string name;
cin >> name;
print(childs, name);
}
#include <iomanip>
#include <vector>
#include <Windows.h>
using namespace std;
struct child
{
string name{}; //имя
uint16_t height{}; //рост
bool ismale{}; //пол
};
void print(vector<child>& vec, string name = "")
{
bool chk = false;
for (auto& i : vec)
if (i.name == name || !name.length()) {
cout << setw(10) << i.name << setw(7) << i.height << endl; chk = true;
}
if (name.length() && !chk) cout << "Данного имени нет в списках\n";
}
child generator()
{
static string male[]{ "Илья","Иван","Саша","Коля","Серёжа","Олег","Миша","Ильдар","Ахмед","Вася","Толя","Витя"};
static string female[]{ "Оля","Инна","Аня","Катя","Илона","Вика","Галя","Надя","Света","Роксолана","Мадлен","Славя" };
bool imale = rand() % 2;
string name = imale ? male[rand() % 12] : female[rand() % 12];
uint16_t h = 120 + rand() % 20 + (imale ? 15 : 0);
child res{ name,h,imale };
return res;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(static_cast<unsigned int>(time(nullptr)));
size_t size;
cout << "Сколько детей?\n";
cin >> size;
vector<child>childs(size);
for (auto& i : childs) i = generator();
child *finde = &childs[0];
print(childs);
double height{};
size = 0;
for (auto& i : childs)
{
!i.ismale ? height += i.height,size++ : NULL;
}
height /= size;
if (!height) cout << "Девочек в списке нет\n"; else cout << "Средний рост девочек: " << setprecision(2) << fixed << height << " см\n";
cout << "Введите имя для поиска:\n";
string name;
cin >> name;
print(childs, name);
}
#include <iostream>
#include <string>
using namespace std;
const int size = 10;
struct anketa
{
string name;
string gender;
float rost;
};
void insert(anketa A[size])
{
cout << endl << "\tВвод данных:" << endl;
for(int x = 0; x < size; x++)
{
cout << endl << x + 1 << "-ая запись." << endl;
cout << "Имя: ";
cin >> A[x].name;
do
{
cout << "Пол (мальчик или девочка): ";
cin >> A[x].gender;
}while(A[x].gender != "мальчик"s && A[x].gender != "девочка"s);
do
{
cout << "Рост: ";
cin >> A[x].rost;
}while(A[x].rost <= 0.0);
}
cout << endl;
}
void print(anketa A[size])
{
cout << endl << '\t' << "Имя" << '\t' << "Пол" << '\t' << "Рост" << endl;
for(int x = 0; x < size; x++)
{
cout << x + 1 << "-ая запись." << endl << '\t';
cout << A[x].name << '\t' << A[x].gender << '\t'
<< A[x].rost << endl;
}
cout << endl;
}
bool moyen_rost(anketa A[size])
{
int count = 0;
float summa = 0.0;
for(int x = 0; x < size; x++)
{
if(A[x].gender == "девочка"s)
{
count++;
summa += A[x].rost;
}
}
if(!count) return false;
cout << "Средник рост девочек равен " << summa / count << '.' << endl;
return true;
}
void imja(anketa A[size])
{
int count = 0;
string imja_devochki;
cout << "Введите имя девочки: ";
cin >> imja_devochki;
for(int x = 0; x < size; x++)
{
if(imja_devochki == A[x].name)
{
cout << "\tЗапись " << x + 1 << ":\t";
cout << "рост -- " << A[x].rost << '.' << endl;
count++;
}
}
if(!count) cout << "Девочек с таким именем нет." << endl;
}
int main()
{
anketa A[size];
insert(A);
print(A);
if(!moyen_rost(A)) cout << "Девочек нет." << endl;
else imja(A);
return 0;
}
#include <string>
using namespace std;
const int size = 10;
struct anketa
{
string name;
string gender;
float rost;
};
void insert(anketa A[size])
{
cout << endl << "\tВвод данных:" << endl;
for(int x = 0; x < size; x++)
{
cout << endl << x + 1 << "-ая запись." << endl;
cout << "Имя: ";
cin >> A[x].name;
do
{
cout << "Пол (мальчик или девочка): ";
cin >> A[x].gender;
}while(A[x].gender != "мальчик"s && A[x].gender != "девочка"s);
do
{
cout << "Рост: ";
cin >> A[x].rost;
}while(A[x].rost <= 0.0);
}
cout << endl;
}
void print(anketa A[size])
{
cout << endl << '\t' << "Имя" << '\t' << "Пол" << '\t' << "Рост" << endl;
for(int x = 0; x < size; x++)
{
cout << x + 1 << "-ая запись." << endl << '\t';
cout << A[x].name << '\t' << A[x].gender << '\t'
<< A[x].rost << endl;
}
cout << endl;
}
bool moyen_rost(anketa A[size])
{
int count = 0;
float summa = 0.0;
for(int x = 0; x < size; x++)
{
if(A[x].gender == "девочка"s)
{
count++;
summa += A[x].rost;
}
}
if(!count) return false;
cout << "Средник рост девочек равен " << summa / count << '.' << endl;
return true;
}
void imja(anketa A[size])
{
int count = 0;
string imja_devochki;
cout << "Введите имя девочки: ";
cin >> imja_devochki;
for(int x = 0; x < size; x++)
{
if(imja_devochki == A[x].name)
{
cout << "\tЗапись " << x + 1 << ":\t";
cout << "рост -- " << A[x].rost << '.' << endl;
count++;
}
}
if(!count) cout << "Девочек с таким именем нет." << endl;
}
int main()
{
anketa A[size];
insert(A);
print(A);
if(!moyen_rost(A)) cout << "Девочек нет." << endl;
else imja(A);
return 0;
}
Владимир Зенкин
Препод сказал из прошлой практики посмотреть как надо сделать элементы массива
Владимир Зенкин
И чтобы средний рост девочек был отдельной функцией
Похожие вопросы
- C++ | Структуры и массивы структур. Помогите пожалуйста!
- Структура и массив структуры С++ Помогите пожалуйста
- Помогите пожалуйста - создать 4 массива на c++
- Динамические массивы структур. Помогите с решением.
- Такая лаба мне попалась.. Не шарю в структурах, кому не сложно помогите пожалуйста
- С++ структуры. Помогите ппжпж жпж пж ж
- Помогите, пожалуйста решить на C++, используя многомерные статические массивы
- Помогите пожалуйста со структурами. Нужно перебрать свойство структуры.
- Помогите, пожалуйста, написать программу на C++ (массивы)
- Помогите пожалуйста написать программу небольшую в C++. Одномерный массив
Препод сказал из прошлой практики посмотреть как надо сделать элементы массива
убрал поиск по имени, убрал средний рост, добавил поиск по полу, размер спика - 10