Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2023, 02:24   #1
BringerLuck
Новичок
Джуниор
 
Регистрация: 14.03.2023
Сообщений: 4
По умолчанию Найти среднее арифметическое больше alfa

Здравствуйте, мне нужна помощь, задание в общем звучит так
Создать динамические массивы, используя указатели. Задан
одномерный массив а(п). Найти номер последнего элемента равного 5
и переставить его с первым элементом массива. Найти среднее
арифметическое элементов массива больших заданного числа alfa.
такое задание мне дали, помогите пожалуйста
Я смог разобраться со всем кроме последнего, а точнее с суммой было просто, проблемой стала деление так как в программе количество элементов в массиве надо вводить с клавиатуры, и я не могу понять как мне сделать что бы программа понимала кол. элементов больше числа alfa
Код:
#include <iostream>				
 

using namespace std;
 

int main()
{
 const int MAX_SIZE = 20; 
 int n; 
 int *r; 
 
 
 setlocale(LC_ALL, "Rus");
 
 
 do
 {
 cout << "Введите количество элементов массива из отрезка [1 .. " << MAX_SIZE << "]: ";
 cin >> n;
 }
 while((n < 1) || (n > MAX_SIZE));
 
 
 r = new int[n];
 

 cout << endl << "Вам предстоит ввести с клавиатуры " << n << " элем. целого типа" << endl;
 for(int i = 0; i < n; i++)
 {
 cout << "\t - введите элемент r[" << (i + 1) << "]: ";
 cin >> r[i];
 }
 

 cout << endl << "Элементы исходного массива:\n";
 for(int i = 0; i < n; i++)
 cout << "\t" << r[i];
 

 for(int i = 0; i < n; i++)
 if(r[i] == 5) 
 r[0] = 5; 
 

 cout << endl << "\nЭлементы обработанного массива:\n";
 for(int i = 0; i < n; i++)
 cout << "\t" << r[i];
 

 
 
 int idx=-1;
 int alfa;
 int msre;
 int msum=0;
 cout << " \nВведите число alfa = " ;
 cin >> alfa;
 
 for (int i = 0; i < n; ++i) if (r[i] == alfa) idx = i;
 
  for(int i = 0; i < n; i++)
  if(r[i] > alfa) 
  msum += r[i];
  msre = msum / idx;
  
  cout << "\nСредне арифметическое будет равно: " << msre << endl;
  
  

 delete []r;
 
 return 0; 
}
BringerLuck вне форума Ответить с цитированием
Старый 16.03.2023, 07:36   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от BringerLuck Посмотреть сообщение
и я не могу понять как мне сделать что бы программа понимала кол. элементов больше числа alfa
Пройдитесь циклом по всему массиву и увеличивайте (другую) переменную каждый раз, когда элемент массива соответствует условию.
В принципе можно даже оптимизировать и проверять элемент еще на вводе.
Ключевое здесь что нужна отдельная переменная-счетчик.
waleri вне форума Ответить с цитированием
Старый 16.03.2023, 11:48   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от BringerLuck Посмотреть сообщение
Код:
for (int i = 0; i < n; ++i) if (r[i] == alfa) idx = i;
 
  for(int i = 0; i < n; i++)
  if(r[i] > alfa) 
  msum += r[i];
  msre = msum / idx;
Вы написали почти правильно (читай не правильно). Первый цикл не нужен, и условие в нем не верное, да и не количество вы считаете.
Код:
// for (int i = 0; i < n; ++i) if (r[i] > alfa) idx++;
 
  for(int i = 0; i < n; i++)
  if(r[i] > alfa) {
    msum += r[i];
    idx++;
  }
  msre = msum / idx;
macomics вне форума Ответить с цитированием
Старый 16.03.2023, 12:11   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Сообщение от BringerLuck Посмотреть сообщение
Найти номер последнего элемента равного 5 и переставить его с первым элементом массива.
Для этого задания тоже код неверен.
Код:
for (int i = n - 1; i >= 0; i--)
  if (r[i] == 5) {
    r[i] = r[0];
    r[0] = 5;
    break;
  }
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.04.2023, 18:31   #5
BringerLuck
Новичок
Джуниор
 
Регистрация: 14.03.2023
Сообщений: 4
По умолчанию Поиск среднего арифметического

Мне задали задание в университете, я сделал но вышло неправильно, я пробовал найти решение сам но не получилось помогите пожалуйста
Задание:Найти среднее арифметическое элементов массива больших заданного числа alfa
Я там комментарием пометил где начало моего варианта
Код:
#include <iostream>				
 

using namespace std;
 

int main()
{
 const int MAX_SIZE = 20; 
 int n; 
 int *r; 
 
 
 setlocale(LC_ALL, "Rus");
 
 
 do
 {
 cout << "Введите количество элементов массива из отрезка [1 .. " << MAX_SIZE << "]: ";
 cin >> n;
 }
 while((n < 1) || (n > MAX_SIZE));
 
 
 r = new int[n];
 

 cout << endl << "Вам предстоит ввести с клавиатуры " << n << " элем. целого типа" << endl;
 for(int i = 0; i < n; i++)
 {
 cout << "\t - введите элемент r[" << (i + 1) << "]: ";
 cin >> r[i];
 }
 

 cout << endl << "Элементы исходного массива:\n";
 for(int i = 0; i < n; i++)
 cout << "\t" << r[i];
 

int ilast=-1;
for(int i = 0; i < n; i++)
{
    if(r[i] == 5)
         ilast=i;
}
if(ilast!=-1)
{
   int tmp=r[0];
   r[0] = r[ilast]; 
   r[ilast] = tmp;
}


 cout << endl << "\nЭлементы обработанного массива:\n";
 for(int i = 0; i < n; i++)
 cout << "\t" << r[i];
 

 
 
 int idx=-1;
 int alfa;
 int msre;
 int msum=0;
 cout << " \nВведите число alfa = " ;
 cin >> alfa;
  
  for (int i = 0; i < n; ++i) if (r[i] > alfa) idx++;
  
// Вот здесь начало моего варианта   
 
   for(int i = 0; i < n; i++)
  if(r[i] > alfa) {
    msum += r[i];
    idx++;
  }
  msre = msum / idx;
  
  cout << "\nСредне арифметическое будет равно: " << msre << endl;
  
  

 delete []r;
 
 return 0; 
}
BringerLuck вне форума Ответить с цитированием
Старый 08.04.2023, 18:58   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А это ничего, что вы дополнительно изменяете idx в цикле выше комментария. Поэтому количество элементов не совпадает с посчитанным...
Код:
int idx=0;
 int alfa;
 int msre;
 int msum=0;
 cout << " \nВведите число alfa = " ;
 cin >> alfa;
  
//   for (int i = 0; i < n; ++i) if (r[i] > alfa) idx++;
  
// Вот здесь начало моего варианта   
 
   for(int i = 0; i < n; i++)
  if(r[i] > alfa) {
    msum += r[i];
    idx++;
  }
  msre = msum / idx;
  
  cout << "\nСредне арифметическое будет равно: " << msre << endl;

Последний раз редактировалось macomics; 08.04.2023 в 19:04.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++]: Даны три числа. Если сумма двух наименьших из них больше третьего, найти среднее геометрическое всех трех чисел, иначе - среднее арифметическое LanaTsvik Помощь студентам 2 08.10.2016 15:05
Как найти среднее арифметическое и среднее геометрическое элементов массива M(9)? VBA Ramzi Помощь студентам 1 26.06.2016 20:19
Если кол-во нечетных элементов массива A(n,m) больше 5, то найти среднее арифметическое отрицательных элементов каждой строки, ина qwerty321456 Помощь студентам 7 24.12.2014 16:46
Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. (Турбо паскаль) erte Помощь студентам 1 30.10.2012 13:08
С++ Найти среднее арифметическое положительных и среднее арифметическое отрицательных чисел, минимальное по модулю число. Юрик 530 Помощь студентам 4 03.12.2011 16:26