Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
1

Найти среднее геометрическое значение элементов каждой строки матрицы

26.03.2011, 16:53. Показов 3059. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подскажите пожалуйста по задаче..
дан массив размерностью m,n
необходимо найти среднее геометрическое значение элементов каждой строки
и вывести элементы тех строк в которых предпоследний элемент меньше среднего геом.данной строки
*на всякий среднее геометрическое это корень n степени из данных чисел
где n количество чисел в подкоренном выражении

получается объявляю массив а как дальше реализовать вычисления ?
C#
1
2
3
4
5
6
7
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] arr = { {2,1,1,10,2},{4,7,3,9,16},{7,5,3,4,2}};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2011, 16:53
Ответы с готовыми решениями:

Среднее геометрическое значение элементов каждой строки
подскажите пожалуйста по задаче.. дан массив размерностью m,n как вычислить среднее...

Найти среднее геометрическое значение элементов матрицы
Дана матрица M*N. Найти среднее геометрическое зна¬чение элементов матрицы и выяснить, каких...

Найти минимальный элемент в каждой строке и среднее значение каждой строки матрицы
Нужно что бы программа искала мин. элемент в каждой строке и среднее значение каждой строки. ...

Для каждой строки матрицы найти среднее арифметическое ее элементов
1 Дана матрица размера M × N. Для каждой строки матрицы с нечет-ным номером (1, 3, …) найти...

10
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
26.03.2011, 18:15 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            double sr_geom = 1; ;
            int[,] arr = { { 2, 1, 1, 10, 2 }, { 4,7,3,9,16 }, { 7, 5, 3, 4, 2 } };
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                string temp="";
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    sr_geom *= arr[i, j];
                    temp+=arr[i, j] + "  ";
                }
                if (Math.Pow(sr_geom, 1 / arr.GetLength(1)) < arr[i, arr.GetLength(1) - 2])
                    Console.Write(temp+"\n");
            }
            Console.Read();
1
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
27.03.2011, 21:15  [ТС] 3
массив выводится..но ничего не считается
0
289 / 234 / 33
Регистрация: 09.02.2011
Сообщений: 435
27.03.2011, 21:32 4
Все правильно считает. Когда в чем-то не уверены, то проверяйте вручную.
В первой строке массива вместо 10 поставьте 1 и увидите, что первую строку не выведет.
1
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
27.03.2011, 21:43  [ТС] 5
спасибо за разъяснение..а как можно ещё и среднее геометрическое рядом со строкой массива вывести
чтобы нагляднее было
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
27.03.2011, 22:12 6
на самом деле, девушка права, код не без ошибки. Я не объединичиваю переменную sr_geom=1, а так же вместо 1/arr.GetLength(1) надо написать 1.0 / arr.GetLength(1)
C#
1
2
3
4
 double x = Math.Pow(sr_geom, 1.0 / arr.GetLength(1));
 if (x < arr[i, arr.GetLength(1) - 2])
         Console.Write(temp + "\n");
sr_geom = 1;
Добавлено через 27 минут
Забыл про наглядность
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            double sr_geom = 1; ;
            int[,] arr = { { 2, 1, 1, 10, 2 }, { 4,7,3,9,16 }, { 7, 5, 3, 4, 2 } };
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                string temp="";
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    sr_geom *= arr[i, j];
                    temp+=arr[i, j] + "  ";
                }
                double x=Math.Pow(sr_geom, 1.0 / arr.GetLength(1));
                temp += "Среднее геометрическое: " + x;
                if (x< arr[i, arr.GetLength(1) - 2])
                     Console.Write(temp + "\n");
                sr_geom = 1;
            }
            Console.Read();
1
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
28.03.2011, 18:16  [ТС] 7
zelen, вас бы не затруднило прокомментировать
хотя бы в кратце строки..
0
289 / 234 / 33
Регистрация: 09.02.2011
Сообщений: 435
28.03.2011, 18:30 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            double sr_geom = 1; ;
            int[,] arr = { { 2, 1, 1, 10, 2 }, { 4,7,3,9,16 }, { 7, 5, 3, 4, 2 } };//создаем и задаем массив
            for (int i = 0; i < arr.GetLength(0); i++)//проходим по всем строкам массива
            {
                string temp="";
                for (int j = 0; j < arr.GetLength(1); j++)//в каждой строке проходим по всем элементам
                {
                    sr_geom *= arr[i, j];//перемножаем все элементы в строке
                    temp+=arr[i, j] + "  ";//создаем строку с элементов массива(для дальнейшего вывода в консоль)
                }
                double x=Math.Pow(sr_geom, 1.0 / arr.GetLength(1));//находим среднее геометрическое значение
                temp += "Среднее геометрическое: " + x;//формируем строку для вывода
                if (x< arr[i, arr.GetLength(1) - 2])//проверяем(среднее геометрическое меньше предпоследнего элемента?)
                     Console.Write(temp + "\n"); //выводим результат на консоль
                sr_geom = 1;//среднее геометрическое делаем равным 1, для нахожения сред.геом. для следующей строки массива
            }
            Console.Read();//считываем с консоли(для того, чтобы консоль не закрылась после вывода результата)
1
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
28.03.2011, 18:37  [ТС] 9
большое спасибо
0
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
28.03.2011, 18:38 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от масьkа Посмотреть сообщение
а как дальше реализовать вычисления ?
Вот, imho, более понятный и "чистый" вариант:
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
        static int[] GetRow(ref int[,] array, int row_no)
        {
            var result = new int[array.GetLength(1)];
            for (int col = 0; col < array.GetLength(1); col++)
                result[col] = array[row_no,col];
            return result;
        }
 
        static void Main(string[] args)
        {
            //Задаем входной массив
            int[,]  array = { { 2, 1, 1, 2, 10 }, { 4,7,3,9,16 }, { 7, 5, 3, 4, 2 } };
 
            //Распечатываем его "как есть"
            Console.WriteLine("Input array");
            for (int row = 0; row < array.GetLength(0); row++)
            {                
                for (int col = 0; col < array.GetLength(1); col++) Console.Write(array[row, col].ToString()+' ');                
                Console.WriteLine();
            }
 
            Console.WriteLine();
            Console.WriteLine("Geometric mean");
                        
            for (int row_no = 0; row_no < array.GetLength(0); row_no++) //Проходимся по каждой строке матрицы
            {
                var row = GetRow(ref array, row_no); //В перменной row сохранены элементы строки под номером row_no
                var geometric_mean = Math.Pow(row.Aggregate((a, e) => a * e), 1F / row.Length); //Вычисляем среднее геометрическое
                foreach (var i in row) Console.Write(i.ToString() + ' '); //Распечатываем элементв строки
                Console.Write(" -> {0}", geometric_mean); //Распечатываем среднее геометрическое
 
                if (row[array.GetLength(1) - 1 - 1] < geometric_mean) Console.Write(" !"); //Если значение предпоследнего элемента меньше среднего геометрического, то выводим символ '!' в конце строки
                Console.WriteLine();
            }
 
            Console.ReadKey();
        }
1
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
28.03.2011, 19:36  [ТС] 11
да он действительно удобнее,спасибо
0
28.03.2011, 19:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2011, 19:36
Помогаю со студенческими работами здесь

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

Найти среднее геометрическое элементов каждой строки матрицы
Найти среднее геометрическое элементов каждой строки матрицы А(n*m) и запомнить их в массиве Y

Найти среднее геометрическое положительных элементов каждой строки матрицы
Найти среднее геометрическое положительных элементов каждой строки матрицы Y (5 x 6). Матрица Y -...

Найти среднее геометрическое положительных элементов каждой строки матрицы
Даны матрицы А(4,3) и В(3,5).Найти средние геометрические положительных элементов каждой строки...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru