Описать функцию которая перезапишет его таким


Download 130.37 Kb.
Sana18.01.2023
Hajmi130.37 Kb.
#1098488
Bog'liq
Дан массив размера N


Дан массив размера N. Описать функцию которая перезапишет его таким
образом, чтобы в массиве сначала были расположены простые числа, затем
сложные числа, и нулевые и единичные элементы.

#include


using namespace std;
void transform(int* va, int* vb, const size_t n) {
auto pos = 0U;
for (auto i = 0U; i < n; ++i) if (va[i] > 0) vb[pos++] = va[i];
for (auto i = 0U; i < n; ++i) if (va[i] < 0) vb[pos++] = va[i];
while (pos < n) vb[pos++] = 0;
}
void show(int* vec, const size_t n) {
for (auto i = 0U; i < n; ++i) cout << ' ' << vec[i];
cout.put('\n');
}
int main() {
int box[] = { 1, 3, -8, 3, 0, 4, -7, -3, 0, 4, -1, -5, 0, 2 };
const auto n = size(box);
int tmp[n];
transform(box, tmp, n);
show(box, n);
show(tmp, n);
system("pause");
}

#include

using namespace std;

int main() {

const int N = 5;
int Z[N] {1, -2, 0, 4, -5}, Y[N], j = 0;

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


if (Z[i] > 0) Y[j++] = Z[i];
}

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


if (Z[i] < 0) Y[j++] = Z[i];
}

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


if (Z[i] == 0) Y[j++] = Z[i];
}

for (auto n : Y) cout << n << " ";


}

Здравствуйте! На отработку структур было дано следующее задание:
"Поля структуры: Фамилия, Амплуа, Возраст, Количество игр, Количество голов.
Задание: Определить лучшего форварда, и вывести сведения о футболистах, сыгравших менее 5-ти игр."
Я только начинаю изучать С++, поэтому код наверняка выглядит очень наивно. Вопрос у меня в следующем: Как в структуре, на месте, где у меня стоит 12, например, surname[12], сделать переменное значение? Открывать 4 новых динамических массива для каждого вида? Если так, то я не понимаю, почему нам сказали, что структуры и классы призваны устранить возможные ошибки, возникаемые при множественном открытии массивов.
Если мой код программы, приведенный ниже, совсем уж ужасен, то напишите свой вариант, либо хотя бы подскажите, на что обратить внимание.

#include


#include
using namespace std;
struct Data{
string surname[12],role[12];
int games[12]{}, goals[12]{};
};
int main()
{
Data a;
for(int i=0; i<4; i++) {
cout << "Введите фамилию футболиста: " << endl;
cin >> a.surname[i];
cout << "Введите амплуа футболиста: " << endl;
cin >> a.role[i];
cout << "Введите количество игр, в которых участвовал футболист : " << endl;
cin >> a.games[i];
cout << "Введите количество голов, забитых футболистом" << endl;
cin >> a.goals[i];}
int f = a.goals[0];
string the_best;
cout<<"Игроки, сыгравшие менее 5 игр:"<for (int i=0;i<4;i++){
if (a.games[i]<3){
cout<<"Фамилия игрока: "<\t"<<"Амплуа: "<\t";
cout<<"Количество игр: "<\t"<<"Забитых голов: "<if (a.goals[i]>f){
f=a.goals[i];
the_best=a.surname[i];}}
cout<<"_____________________________________________"<cout<<"Лучший бомбардир:"<return 0;
}

Описать функцию, которая на вход получает список и возвращает копию списка, которая полностью имеет отличные адреса.




struct list
{
int integer_data = 0;
struct list *next;
};








C++Выделить код

1
2
3
4
5



void push_back(list *tmp1)
{
while(tmp1->next!=NULL)
tmp1 = tmp1->next;
tmp1->next = (list *)malloc(sizeof(list));









C++Выделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15



struct list *copy(list *tmp1)
{
list *tmp2 = (list*)malloc(sizeof(list));
list *tmp3 = tmp2;
tmp2->integer_data = tmp1->integer_data;
tmp1 = tmp1->next;
while(tmp1!=NULL)
{
push_back(tmp2);
tmp2 = tmp2->next;
tmp2->integer_data = tmp1->integer_data;
tmp1 = tmp1->next;
}
return tmp3;
}







C++Выделить код

1



list *head_second = copy(head);//head- голова списка, который копируется







Добавлено через 56 минут
Проблему решил, вот рабочая функция:

C++Выделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17



struct list *copy(list *tmp1)
{
list *tmp2 = (list *)malloc(sizeof(list));
tmp2->next = NULL;
tmp2->integer_data = tmp1->integer_data;
list *tmp3 = tmp2;
tmp1 = tmp1->next;
while(tmp1!=NULL)
{
tmp2->next = (list *)malloc(sizeof(list));
tmp2->next->integer_data = tmp1->integer_data;
tmp2->next->next = NULL;
tmp2 = tmp2->next;
tmp1 = tmp1->next;
}
return tmp3;
}







Download 130.37 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling