Заменить элемент в массиве в среднем - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть вопрос об упражнении из моего курса: напишите программу, которая принимает массив вещественных чисел в качестве параметра и заменяет каждый элемент, который меньше среднего первого и последнего элемента, этим средним значением. Это мой код:

#include <iostream>
#include <string>
using namespace std;

void replaverage(int arr[], int n)
{
    for (int i; i < 6; i++) {
        cout << "Enter the numbers" << endl;
        cin >> arr[i];
    }
    int f = arr[0];
    int l = arr[n - 1];
    double av = f + l / 2;
    for (int i; i < n; i++) {
        if (arr[i] < av) {
            arr[i] = av;
        }
    }
}

int main()
{
    int n;
    int arr[n];
    replaverage(arr, n);
    cout << arr << " " << endl;
    return 0;
}

Код работает, однако в качестве вывода он дает какой-то адрес "0x7fff2306a5c0". Я новичок, поэтому я прошу прощения, возможно, моя ошибка глупа, но я не знаю, как это исправить. Спасибо за помощь!

1 Ответ

1 голос
/ 17 февраля 2020
#include <iostream>
#include <string>
using namespace std;

void replaverage(int arr[], int n)
{
    for (int i = 0; i < n; i++) {
        cout << "Enter the number: "; 
        cin >> arr[i];
        cout << endl;
    }
    int f = arr[0];
    int l = arr[n - 1];
    double av = (f + l) / 2;
    for (int i = 0; i < n; i++) {
        if (arr[i] < av) {
            arr[i] = av;
        }
    }
}

int main()
{
    int n = 6; // Making 6 since you had it hardcoded
    int arr[n];
    replaverage(arr, n);
    for (int i = 0; i < n; i++) {
       cout << arr[i] << endl;
    }
    return 0;
}
  • Первая проблема: инициализировать ваши счетчики l oop равными 0;
  • Вторая проблема: инициализировать n в главном, передаваемом как параметр чему-то
  • Третья проблема: Ваш средний расчет неверен. Должно быть (f + l) / 2. В противном случае он будет выполнять l / 2 + f, что неверно.
  • Четвертая проблема: вам нужно l oop над вашим массивом, чтобы увидеть все элементы
...