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

Найти среднее арифметическое двух диагоналей массива - C++

Восстановить пароль Регистрация
 
Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 108
14.07.2014, 14:41     Найти среднее арифметическое двух диагоналей массива #1
Сложная задачка разобраться не могу! ну нада чтобы была формула вычисления а не тупо добавить диагонали и пощитать размер массива может быть любой! Помогите пожалуйста
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2014, 14:41     Найти среднее арифметическое двух диагоналей массива
Посмотрите здесь:

Найти среднее арифметическое двух чисел C++
C++ Найти среднее арифметическое и геометрическое двух чисел
Найти среднее арифметическое положительных элементов главной и побочной диагоналей матрицы C++
C++ Найти среднее арифметическое элементов массива, сравнить два массива поэлементно
C++ Найти среднее арифметическое массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
14.07.2014, 14:59     Найти среднее арифметическое двух диагоналей массива #2
Antosha, массив как я понимаю двумерный? и является ли он динамическим?

Добавлено через 13 минут
Вот тут код программы, которую я в универ писал, здесь создается двумерный динамический массив, размеры вводятся пользователем, после чего считается сумма в строках и выводится на экран, каждая часть(создание массива, считание сумм и вывод на экран) выполняется через функцию
Думаю сможешь изменить как тебе надо, если что пиши)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
 
void sozdanie(int **&massiv1,int &a,int &b,int &tru1);//объявление функций
void summa(int **&massiv1,int *&massiv2,int &a,int &b);
void vivod(int *&massiv2,int &a);
 
void main(void)
{
int** massiv=0;//это у нас будет двумерный массив
int* summ=0;//тут массив с суммами в строках
int stl=0,str=0,tru=0;
 
sozdanie(massiv,str,stl,tru);
if (tru==0) {
summa(massiv,summ,str,stl);
vivod(summ,str);
}
else cout«"poshel na hui"«endl;
_getch();
}
void sozdanie(int **&massiv1,int& a,int& b,int &tru1)
{
cout«"vvedite razmer massiva: stroki,stolbci"«endl;
cin»a»b;
if ((a>0)&&(b>0)) {
massiv1=new int*[a];
for(int i=0;i<a;i++)
massiv1[i]=new int[b];
for(int i=0;i<a;i++)
{
cout«i+1«".";
for(int j=0;j<b;j++)
{
massiv1[i][j]=i+j;
cout«massiv1[i][j]«'\t';
}
cout«endl;
}}
else tru1=1;
}
void summa(int **&massiv1,int *&massiv2,int &a,int &b)
{
massiv2 = new int[a];
for(int i=0;i<a;i++)
{
massiv2[i]=0;
for(int j=0;j<b;j++)
{
massiv2[i]+=massiv1[i][j];
}
}
}
void vivod(int *&massiv2,int &a)
{
cout«"summa v strokah"«endl;
for(int i=0;i<a;i++)
{
cout«i+1«".";
cout«massiv2[i]«endl;
}
}
Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 108
14.07.2014, 15:01  [ТС]     Найти среднее арифметическое двух диагоналей массива #3
frostyfull, да массив двухкамерный заполняется рандомными числами

Добавлено через 1 минуту
frostyfull, функции мы еще не учили можно как-то без функций?
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
14.07.2014, 15:02     Найти среднее арифметическое двух диагоналей массива #4
Antosha, и да, забыл упомянуть, в моей проге он просто забивается числами "номер строки"+"номер столбца"
Скажи мне тогда, что вы проходили уже?
Меня тут конкретно интересуют указатели и операторы ввода вывода cin, cout были у вас уже?
Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 108
14.07.2014, 15:06  [ТС]     Найти среднее арифметическое двух диагоналей массива #5
frostyfull, операторы учили массивы проходим циклы прошли условия if и wail
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
14.07.2014, 16:16     Найти среднее арифметическое двух диагоналей массива #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Antosha, ну тогда подожди не множк, адаптирую код под тебя)

Добавлено через 54 минуты
Antosha, держи
я постарался все закоментировать, чтобы тебе было понятно, в проге создается двумерный динамический массив, кол-во строк и столбцов одинаковое, иначе я хз как диагонали считать
все элементы забиваются рандомно, так же присутствует проверка на ввод отрицательных чисел
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
41
42
43
44
45
46
47
#include <conio.h>
#include <ctime>
#include <iostream>
using namespace std;
 
void main(void)
{
    int** massiv = 0;
    float summ = 0;
    int razm = 0, tru = 0;
    srand(time(0));//это для правильной работы рандома
    //создание двумерного динамического массива с проверкой, но то, что числа больше нуля
        cout << "vvedite razmer massiva" << endl;
        cin >> razm;
        if (razm>0)  {
            massiv = new int*[razm];
            for (int i = 0; i<razm; i++)
                massiv[i] = new int[razm];
            for (int i = 0; i<razm; i++)
            {
                cout << i + 1 << ".";
                for (int j = 0; j<razm; j++)
                {
                    massiv[i][j] = rand() % 10;
                    cout << massiv[i][j] << '\t';
                }
                cout << endl;
            }
    //суммирование элементов диагоналей
    for (int i = 0; i<razm; i++)
    {
        summ += massiv[i][i]+massiv[razm-i-1][razm-i-1];
        
    }
    //само среднее арифметическое, если размер массива четный, то общее кол-во элементов равно размер*2, если наоборот то еще -1
    if (razm % 2 == 0) summ = summ / (razm * 2);
    else summ = summ/((razm * 2) - 1);
    //вывод
    cout << "Srednee arifmeticheskoe diagonalei:" << endl; 
    cout << summ << endl;
            
    }
        
    
    else cout << "Poprobuite esche razok";
    _getch();
}
Добавлено через 14 минут
Прошу меня простить, там был косяк, несколько неправильно считалась сумма диагоналей, вот тут вроде все работает как надо)
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
41
42
43
44
45
46
47
48
49
50
51
#include <conio.h>
#include <ctime>
#include <iostream>
using namespace std;
 
void main(void)
{
    int** massiv = 0;
    float summ = 0;
    int razm = 0, tru = 0;
    srand(time(0));//это для правильной работы рандома
    //создание двумерного динамического массива с проверкой, но то, что числа больше нуля
        cout << "vvedite razmer massiva" << endl;
        cin >> razm;
        if (razm>0)  {
            massiv = new int*[razm];
            for (int i = 0; i<razm; i++)
                massiv[i] = new int[razm];
            for (int i = 0; i<razm; i++)
            {
                cout << i + 1 << ".";
                for (int j = 0; j<razm; j++)
                {
                    massiv[i][j] = rand() % 10;
                    cout << massiv[i][j] << '\t';
                }
                cout << endl;
            }
    //суммирование элементов диагоналей
            for (int i = 0; i<razm; i++)
                {
 
                    summ += massiv[i][i] + massiv[razm - i - 1][i];
 
                }
        if (razm % 2 == 1) summ -= massiv[((razm - 1) / 2)][((razm - 1) / 2)];
    
    cout << summ << endl;
    //само среднее арифметическое, если размер массива четный, то общее кол-во элементов равно размер*2, если наоборот то еще -1
    if (razm % 2 == 0) summ = summ / (razm * 2);
    else summ = summ/((razm * 2) - 1);
    //вывод
    cout << "Srednee arifmeticheskoe diagonalei:" << endl; 
    cout << summ << endl;
            
    }
        
    
    else cout << "Poprobuite esche razok";
    _getch();
}
Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 108
17.07.2014, 10:54  [ТС]     Найти среднее арифметическое двух диагоналей массива #7
frostyfull, спасибо большое
zss
17.07.2014, 11:07
  #8

Не по теме:

Цитата Сообщение от Antosha Посмотреть сообщение
массив двухкамерный
В одну камеру загоняем содержимое массива, а в другую что?

Ilot
17.07.2014, 11:09
  #9

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
В одну камеру загоняем содержимое массива, а в другую что?
Иприт?

Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 108
17.07.2014, 11:24  [ТС]     Найти среднее арифметическое двух диагоналей массива #10
frostyfull, Сума диагоналей не правильно сумируеться на скрине сума диагоналей 36 а я перещитал сума 34.7
Миниатюры
Найти среднее арифметическое двух диагоналей массива  
SatanaXIII
17.07.2014, 12:18
  #11

Не по теме:

Ilot, шутка пор иприт очень понравилась.

frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
17.07.2014, 13:14     Найти среднее арифметическое двух диагоналей массива #12
Antosha, лол, как у тебя интересно получилась сумма 34,7 , когда в матрице только целые числа?)
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,171
Завершенные тесты: 1
17.07.2014, 14:44     Найти среднее арифметическое двух диагоналей массива #13
Цитата Сообщение от frostyfull Посмотреть сообщение
как у тебя интересно получилась сумма 34,7
Смотрим:
Цитата Сообщение от frostyfull Посмотреть сообщение
float summ = 0;
Цитата Сообщение от frostyfull Посмотреть сообщение
if (razm % 2 == 0) summ = summ / (razm * 2);
else summ = summ/((razm * 2) - 1);
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
17.07.2014, 15:01     Найти среднее арифметическое двух диагоналей массива #14
zss, я вот сути вашего ответа не понял совсем)
там сначала считается обычная сумма диагоналей, обычное сложение, и т.к. в диагоналях только целые числа, дроби там ну никак не может получиться
А то, что вы процитировали, это процесс нахождения среднего арифметического
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,914
17.07.2014, 15:04     Найти среднее арифметическое двух диагоналей массива #15
frostyfull, так а найти что нужно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2014, 10:00     Найти среднее арифметическое двух диагоналей массива
Еще ссылки по теме:

Найти среднее арифметическое элементов массива, и количество чисел внутри массива, не превышающих найденное C++
C++ Найти среднее арифметическое квадратов и среднее арифметическое абсолютных значений двух вещественных чисел

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

Или воспользуйтесь поиском по форуму:
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
18.07.2014, 10:00     Найти среднее арифметическое двух диагоналей массива #16
S_el, ну изначально была поставлена задача, найти среднее арифметическое диагоналей двумерного массива
ну я и написал прогу, которая сначала показывает двумерный массив, забитый рандомными числами, потом сумму элементов диагоналей, а потом уже среднее арифметическое, вот
Yandex
Объявления
18.07.2014, 10:00     Найти среднее арифметическое двух диагоналей массива
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru