1

Тема: Виникла проблема із массивом

Ось завдання: https://pastenow.ru/e236cfad9219397f5954f0fe4a6de4bf
Опис проблеми: Я під час написання коду програми, а точніше функції зіткнувся із питанням як зробити так щоб максимальний елемент массиву був перший, а усі решта замінилися квадратами.
Ось код:

#include<iostream>
using namespace std;

int re_array(int arr[], int size) {
    int max = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    arr[0] = max;
    for (int j = 1; j < size; j++) {
        arr[j] = j * j;
    }
    for (int j = 0; j < size; j++) {
        printf("%d ", arr[j]);
    }
}

int main() {
    int n;
    cout << "Vvedit rozmir massuvy: ";
    cin >> n;
    int* m;
    m = new int[n];
    for (int i = 0; i < n; i++) {
        cin >> m[i];
    }
    cout << "Ytvorenuy massuv: A[" << n << "]={";
    for (int i = 0; i < n; i++) {
        printf("%d ", m[i]);
    }
    cout << "}" << endl;
        cout << "Noviy massuv: ";
    re_array(m, n);
    return 0;
}

2

Re: Виникла проблема із массивом

Завдання не відкривається. Спробуйте скористатися сервісом, що не приносить грошей у бюджет держави-агресора.
Швидше за все, вам треба не просто скопіювати максимальний в перший, а й зсунути усі інші елементи на одну позицію. Тобто шукати вам треба не (лише) значення максимального елемента, а його індекс, а потім в циклі все зсунути.

3

Re: Виникла проблема із массивом

Ось саме завдання: 1. Створити функцію для перетворення заданого одновимірного масиву А за правилом : елементи , розміщені після максимального елемента масиву замінити їх квадратами . Розмір масиву та вказівник на нього передати функції як параметри . Продемонтструвати роботу функції , викликавши її з головної функції програми .

koala написав:

Завдання не відкривається. Спробуйте скористатися сервісом, що не приносить грошей у бюджет держави-агресора.
Швидше за все, вам треба не просто скопіювати максимальний в перший, а й зсунути усі інші елементи на одну позицію. Тобто шукати вам треба не (лише) значення максимального елемента, а його індекс, а потім в циклі все зсунути.

4

Re: Виникла проблема із массивом

Ем... так а нащо переносити для цього максимальний елемент? Вам же нічого не сказано з ним робити, лише з елементами після нього.

5

Re: Виникла проблема із массивом

Погано зрозумів завдання, дякую, я буду пробувати!

koala написав:

Ем... так а нащо переносити для цього максимальний елемент? Вам же нічого не сказано з ним робити, лише з елементами після нього.

6

Re: Виникла проблема із массивом

https://dochub.com/vzaluskiy23/2GQ1NXoKy4dd1qqRDkW6bx/%D1%80%D0%B5%D0%B0%D0%BB%D1%96%D0%B7%D0%B0%D1%86%D1%96%D1%8F-png.jpg?dt=o3sweJS6Wh96z9YD5FV8
Я ніби суть зрозумів, але воно неправильно вираховує максимальний елемент, якшо не дивитися на максимальний елемент то шукає та бере квадрати правильно, ось як на скріні

#include<iostream>
#include<math.h>
using namespace std;

int re_array(int arr[], int size) {
    int max = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i] > max) {
            max = i;
        }
    }
    cout << max << endl;
    for (int i = 0; i < size; i++) {
        if (i > max) {
            arr[i] = pow(arr[i], 2);
        }
    }
    cout << "Ytvorenuy noviy massuv: A`=[" << size << "]={";
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    cout << "}";
    return max;
}

int main() {
    int n;
    cout << "Vvedit rozmir massuvy: ";
    cin >> n;
    int* m;
    m = new int[n];
    for (int i = 0; i < n; i++) {
        cin >> m[i];
    }
    cout << "Ytvorenuy massuv: A[" << n << "]={";
    for (int i = 0; i < n; i++) {
        printf("%d ", m[i]);
    }
    cout << "}" << endl;
    re_array(m, n);
    return 0;
}
koala написав:

Ем... так а нащо переносити для цього максимальний елемент? Вам же нічого не сказано з ним робити, лише з елементами після нього.

7

Re: Виникла проблема із массивом

vzaluskiy23 написав:
if (arr[i] > max) {
            max = i;

Ви заносите в max значення i, як вам і треба, але порівнюєте arr[i] з max - тобто значення елементу з індексом. Наприклад, у масиві [300, 100, 200] найбільший елемент 300 має індекс 0, але 0 менший за 100 та 200, і порівняння далі будуть справджуватися, хоча вам цього не треба. Порівнюйте не з max, а з arr[max].

Подякували: vzaluskiy231