Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HOK_
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 3
#1

Рекурсия. Среднее значение в двумрном массиве - C++

07.11.2012, 15:03. Просмотров 449. Ответов 5
Метки нет (Все метки)

Доброе время суток.
Помогите пожалуйста с задачей: Напишите рекурсивную функцию, которая находит среднее арифметическое наибольшего и наименьшего элемента главной диагонали матрицы А(5х5).

Вот функция которая находит среднее арифметическое без рекурсии.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
float calc_y_(int a[n][n])
{
float y=0;
int i, min, max;
min=a[0][0];
for(i=0; i<n; i++)
{
    if(min>a[i][i]) min=a[i][i];
}
max=a[0][0];
for(i=0; i<n; i++)
{
    if(max<a[i][i]) max=a[i][i];
}
y=(float)(min+max)/2;
return y;
}
 
  Также 2 рекурсии которые находят среднее арифметическое (но не как в условии).
float rec_mas(int a[n][n],int i,int j, float k)
{
if(j==n-1) return (float)(k+a[i][j])/(j+1);
else {
    k=k+a[i][j];
    return rec_mas(a,i,j+1,k);
}
}
 
 
float recurs(int a[n][n], int i, int j, float s)
{   
if (i==n-1){
    s=s+rec_mas(a,i,0,0);
    return s/(i+1);
} 
else {
        
    s=s+rec_mas(a,i,0,0);
    return recurs(a,i+1,j,s);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 15:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия. Среднее значение в двумрном массиве (C++):

В одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение - C++
в произвольно заданном одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение

Рекурсия. Среднее значение - C++
Помогите пожалуйста с задачей: Напишите рекурсивную функцию, которая находит среднее значение элементов массива, которые больше заданного...

Среднее значение полученных чисел, количество значений в массиве, превышающих среднее - C++
Вот решаю одну задачку из книги Праты: &quot;Напишите программу, читающую в массив double до 10 значений пожертвований. Программа должна...

Найти среднее значение чисел, а также количество значений в массиве, превышающих среднее - C++
Сделал в лоб, голова совсем не варит под вечер: // sp_Ch6_Pg300_Ex02 /// Занятия по книге Стивена Праты &quot;Язык программирования С++&quot;...

Среднее значение элементов в одномерном массиве - C++
Привет! ;) Помогите, плиз решить, я в этом почти не шарю, надеюсь разобраться: В одномерном массиве, состоящем из n вещественных...

Как найти среднее значение в одномерном массиве? - C++
Тут массив из целых чисел. Среднее значение - это сумма всех элементов, деленная на кол-во элементов? А если сред. значение не является...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ExcellencE
20 / 20 / 2
Регистрация: 22.08.2011
Сообщений: 79
07.11.2012, 16:31 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int arr[5][5] = { {1,2,3,4,5},{5,4,3,2,0},{1,2,3,4,5},{5,4,3,2,0},{3,7,1,1,2}};
 
 
int maxx(int i)
{
    if(i<0) return 0;
    return (arr[i][i] > maxx(i-1)) ?arr[i][i] : maxx(i-1);
}
 
int minn(int i)
{
    if(i<0) return 0;
    return (arr[i][i] < minn(i-1)) ? arr[i][i] : minn(i-1);
}   
 
int main(int argc, char* argv[])
{
    double x = ((maxx(4)+minn(4))/2.0);
    cout<<x;
   getch();
   return 0;
}
1
HOK_
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 3
07.11.2012, 16:56  [ТС] #3
ExcellencE спасибо, но тут же 2 рекурсии + сами вычисления в главной проге. Я просто хочу узнать как записать все эти вычисления в одну рекурсию?
0
ExcellencE
20 / 20 / 2
Регистрация: 22.08.2011
Сообщений: 79
07.11.2012, 17:38 #4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//алгоритм на языке java 
  public static void qSort(int[] A, int low, int high) {
      int i = low;
      int j = high;
      int x = A[(low+high)/2];
      do {
          while(A[i] < x) ++i;
          while(A[j] > x) --j;
          if(i <= j){
              int temp = A[i];
              A[i] = A[j];
              A[j] = temp;
              i++; j--;
          }
      } while(i < j);
 
      if(low < j) qSort(A, low, j);
      if(i < high) qSort(A, i, high);
  }
думаю, модифицировав эту штуку можно получить то, что вам нужно
0
HOK_
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 3
07.11.2012, 18:26  [ТС] #5
Джава)) Если бы кто то написал на С++ было бы легче...
0
gevru
1 / 1 / 0
Регистрация: 17.03.2010
Сообщений: 29
07.11.2012, 22:39 #6
В синтаксисе могу ошибаться (давно на C++ не писал) но как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int arr[5][5] = {{1,2,3,4,5},{6,7,8,9,0},{7,8,9,0,1},{8,9,0,1,2},{9,0,1,2,3}};
 
float process(int[][] arr, int i, int n, int min, int max){
    if (i < n) {
        min = arr[i][i] < min ? arr[i][i] : min;
        max = arr[i][i] > max ? arr[i][i] : max;
        return process(arr, ++i, n, min, max);
    } else {
        return (float)( (min + max) / 2 );
    }
}
 
void main() {
    float srednee = process(arr, 0, 5, arr[0][0], arr[0][0]);
}
На JavaScript точно рабочий вариант:
Javascript
1
2
3
4
5
6
7
8
9
10
11
var arr = [[1,2,3,4,5],[6,7,8,9,0],[7,8,9,0,1],[8,9,0,1,2],[9,0,1,2,3]];
function process(arr, i, n, min, max){
    if (i < n) {
        min = arr[i][i] < min ? arr[i][i] : min;
        max = arr[i][i] > max ? arr[i][i] : max;
        return process(arr, ++i, n, min, max);
    } else {
        return (min + max) / 2;
    }
}
process(arr, 0, 5, arr[0][0], arr[0][0]);
Если в варианте на C++ ошибся, прошу поправьте где.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 22:39
Привет! Вот еще темы с ответами:

В одномерном массиве вычислить среднее значение положительных элементов массива - C++
В одномерном массиве вычислить среднее значение положительных элементов массива.Решить в с++ с помощью функций. Добавлено через 9...

Определить, сколько значений в массиве превышают среднее значение [-50.120] - C++
Сделайте три варианта программы. В первом элементы массива определяются в программе, во втором задаются пользователем, а в третьем...

Задача по функциям (сохранение данных в массиве, вывод, среднее значение) - C++
Напишите программу, которая запрашивает у пользователя 10 результатов игры в гольф, сохраняя их в массиве. При этом необходимо...

В двухмерном массиве n*m (4*4) найти среднее арифметическое значение элементов первого столбца - C++
В двухмерном массиве n*m (4*4) найти среднее арифметическое значение элементов первого столбца и количество элементов первого столбца...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.11.2012, 22:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru