Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Antosha
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 110
1

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

14.07.2014, 14:41. Просмотров 1056. Ответов 15
Метки нет (Все метки)

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

Найти среднее арифметическое квадратов и среднее арифметическое абсолютных значений двух вещественных чисел
Всем здрасте помогите плиз. Дается два вещественных числа. Найти среднее...

Среднее арифметическое минимальных элементов диагоналей массива
Написать программу, которая определяет среднее арифметическое минимальных...

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

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

Найти среднее арифметическое и среднее геометрическое двух чисел
Даны два действительных положительных числа. Найти среднее арифметическое и...

15
frostyfull
33 / 33 / 8
Регистрация: 13.06.2014
Сообщений: 509
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;
}
}
0
Antosha
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 110
14.07.2014, 15:01  [ТС] 3
frostyfull, да массив двухкамерный заполняется рандомными числами

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

Решение

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();
}
1
Antosha
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 110
17.07.2014, 10:54  [ТС] 7
frostyfull, спасибо большое
0
zss
17.07.2014, 11:07
  #8

Не по теме:

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

0
Ilot
17.07.2014, 11:09
  #9

Не по теме:

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

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

Не по теме:

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

0
frostyfull
33 / 33 / 8
Регистрация: 13.06.2014
Сообщений: 509
17.07.2014, 13:14 12
Antosha, лол, как у тебя интересно получилась сумма 34,7 , когда в матрице только целые числа?)
0
zss
Модератор
Эксперт С++
7257 / 6703 / 4243
Регистрация: 18.12.2011
Сообщений: 17,692
Завершенные тесты: 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);
0
frostyfull
33 / 33 / 8
Регистрация: 13.06.2014
Сообщений: 509
17.07.2014, 15:01 14
zss, я вот сути вашего ответа не понял совсем)
там сначала считается обычная сумма диагоналей, обычное сложение, и т.к. в диагоналях только целые числа, дроби там ну никак не может получиться
А то, что вы процитировали, это процесс нахождения среднего арифметического
0
S_el
2151 / 1679 / 353
Регистрация: 15.12.2013
Сообщений: 6,644
17.07.2014, 15:04 15
frostyfull, так а найти что нужно?
0
frostyfull
33 / 33 / 8
Регистрация: 13.06.2014
Сообщений: 509
18.07.2014, 10:00 16
S_el, ну изначально была поставлена задача, найти среднее арифметическое диагоналей двумерного массива
ну я и написал прогу, которая сначала показывает двумерный массив, забитый рандомными числами, потом сумму элементов диагоналей, а потом уже среднее арифметическое, вот
0
18.07.2014, 10:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2014, 10:00

Найти среднее арифметическое двух чисел
Решить используя классы. Создать объект класса и инициализировать его...

Найти среднее арифметическое и геометрическое двух чисел
Помогите, пожалуйста. Известно два целых числа, найти среднее арифметическое и...

Среднее арифметическое главной и побочной диагоналей матрицы
Здравствуйте, помогите пожалуйста разобраться с ошибкой :) В текстовом файле...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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