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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Елена Н.
Сообщения: 6
Зарегистрирован: 28 ноя 2013, 17:06

Столкнулась с проблемой нахождения среднего арифметического всех элементов массива и удаления всех элементов больше среднего арифметического. Все нужно написать в методе класса.

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

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

#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;
}
Очень прошу помочь :(
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

1. Не хватает delete.
2. Переменные i, j не должны быть полями класса. Зачем каждому объекту нашего класса иметь свои счётчики, при чём помнить все их состояния во время всей своей жизни?
3. Среднее арифметическое считается, как сумма элементов делённая на их количество. В чём проблема её посчитать?
4. Что в задании подразумевается под удалением? Обнуление? Если так, то опять-таки в чём проблема сравнить меньше ли элемент, чем заранее вычесленное среднее число и если да, то записать в него ноль?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Елена Н.
Сообщения: 6
Зарегистрирован: 28 ноя 2013, 17:06

Проблема в написании суммы всех элементов
Что я пишу не так? :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;
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

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

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

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

int sum = 0,FloatArray[i][j];
Я имею в виду запись FloatArray[j]. Она точно не мешает компиляции? Что ты такой записью хотела сказать?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Елена Н.
Сообщения: 6
Зарегистрирован: 28 ноя 2013, 17:06

Честно, я не знаю...преподаватель сказала написать
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Может преподаватель что-то другое имел в виду? В общем, вот так работает?

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

   int sum = 0;

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

   cout << sum;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Елена Н.
Сообщения: 6
Зарегистрирован: 28 ноя 2013, 17:06

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

У меня еще вопрос. Как описываются свойства get и set?
Свойства:
• возвращающее общее количество четных положительных элементов в массиве (доступное только для чтения);
• позволяющее домножить значение всех элементов массива на скаляр (доступное только для записи).
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

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

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

Судя по заданию, речь идёт о написании геттера, который вернёт количество чётных положительных элементов в массиве (скажем GetCountOfPositiveElements) и, даже не сеттере, а просто методе, который умножит все элементы массива на некое значение (дадим ему кодовое имя Multiply).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Елена Н.
Сообщения: 6
Зарегистрирован: 28 ноя 2013, 17:06

и все таки как можно удалить элементы из массива? среднее значение описано
Ответить