Страница 1 из 2

Написать метод класса для удаления элементов массива больше среднего арифметического

Добавлено: 28 ноя 2013, 17:14
Елена Н.
Столкнулась с проблемой нахождения среднего арифметического всех элементов массива и удаления всех элементов больше среднего арифметического. Все нужно написать в методе класса.

Вот мой класс:

Код: Выделить всё

#include <cstdlib>
#include <iostream>

using namespace std;

class Array
{
      public:
      float**FloatArray;
      int n,m;
      int i,j;
      void vvod()
      {
           
           cout<<"vv n=";
           cin>>n;
           cout<<"vv m=";
           cin>>m;
           cout<<"vivod massiva"<<endl;
           FloatArray = new float*[n];
           for (i=0;i<n;i++)
           {
            FloatArray[i]=new float[m];
            for(j=0;j<m;j++)
            { 
              cin>>FloatArray[i][j];
           }

           
    }
           }
      void print()
      {
           for (i=0;i<n;i++)
           {
           for(j=0;j<m;j++)
           cout<<FloatArray[i][j]<<" ";
           cout<<endl;
           }
      }
     
};



int main()
{
    
    Array mas;
    mas.vvod();
    mas.print();
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Очень прошу помочь :(

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 17:46
Romeo
1. Не хватает delete.
2. Переменные i, j не должны быть полями класса. Зачем каждому объекту нашего класса иметь свои счётчики, при чём помнить все их состояния во время всей своей жизни?
3. Среднее арифметическое считается, как сумма элементов делённая на их количество. В чём проблема её посчитать?
4. Что в задании подразумевается под удалением? Обнуление? Если так, то опять-таки в чём проблема сравнить меньше ли элемент, чем заранее вычесленное среднее число и если да, то записать в него ноль?

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 17:54
Елена Н.
Проблема в написании суммы всех элементов
Что я пишу не так? :confused:

Код: Выделить всё

int sum = 0,FloatArray[i][j];
      for (i=0; i<n; i++)
       { for(j=0; j<m; j++)
           { sum += FloatArray[i][j];
               cout<<sum<<"sum=";}
      cout<<endl;

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:00
Romeo
Ну если ты планировала выписывать много раз слово sum после каждого прибавления, то всё так. В конце переменная sum действительно будет содержать сумму.

А зачем, если не секрет, вот эта хитрая запись?

Код: Выделить всё

int sum = 0,FloatArray[i][j];
Я имею в виду запись FloatArray[j]. Она точно не мешает компиляции? Что ты такой записью хотела сказать?

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:04
Елена Н.
Честно, я не знаю...преподаватель сказала написать

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:08
Romeo
Может преподаватель что-то другое имел в виду? В общем, вот так работает?

Код: Выделить всё

   int sum = 0;

   for (i=0; i<n; i++)
      for (j=0; j<m; j++)
         sum += FloatArray[i][j];

   cout << sum;

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:13
Елена Н.
Спасибо, работает) у нас преподаватель такой что хуже некуда: объяснить ничего не может, а лабы вовремя требует сдавать. Вот и мучаюсь.

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:22
Елена Н.
У меня еще вопрос. Как описываются свойства get и set?
Свойства:
• возвращающее общее количество четных положительных элементов в массиве (доступное только для чтения);
• позволяющее домножить значение всех элементов массива на скаляр (доступное только для записи).

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:54
Romeo
Второй человек уже пишет о свойствах в С++... Скажите своему преподавателю (видимо он у вас общий), что нет и не было в С++ свойств. Ну нужно путать C++ и C#!

В С++ есть методы. Среди методов выделяются так называемые сеттеры и геттеры (от слов set/get). Которые позволяют записывать/читать поля класса, накладывая на этот процес дополнительную валидацию (validate - проверять действительность). Как правило, такие методы начинаются на Set/Get или на set/get (в зависимости от принятых соглашений об именовании методов и функций). Но никакого специального синтаксиса (как для свойств в C#) для сеттеров/геттеров нету.

Судя по заданию, речь идёт о написании геттера, который вернёт количество чётных положительных элементов в массиве (скажем GetCountOfPositiveElements) и, даже не сеттере, а просто методе, который умножит все элементы массива на некое значение (дадим ему кодовое имя Multiply).

Re: Написать метод класса для удаления элементов массива больше среднего арифметическ

Добавлено: 28 ноя 2013, 18:58
Елена Н.
и все таки как можно удалить элементы из массива? среднее значение описано