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

Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки - C++

Восстановить пароль Регистрация
 
aristocratic
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 9
19.10.2012, 00:50     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #1
Ничего не могу понять!Вроде все правильно создавал, но считает неправильно.
+Выдает ошибку
Так же не могу отсортировать методом вставки элементы массива.
Помогите, пожалуйста.

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
//после завершения программы выдает ошибку:
//" Stack around the variable 'mas' was corrupted. "
//читал в и-нете, что вроде как я "вылез" за границы массива, но не знаю где...
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
        double a=0,b=0,sum=0,sr_ar=0;
        const int x=5, y=5; //размер массива
    double mas[x][y]; //двумерный массив
 
        for (int i=0;i<=x;i++) //цикл заполнения массива ранд. рац. числами
        {
            for (int j=0;j<=y;j++)
            {
                                a=rand()%1000;
                b=rand()%1000+1;
                                mas[i][j]=(double)a/b;
            }
        }
 
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout<< "Массив: " << mas[i][j] << endl;
            }
        }
        
        for (int i=0;i<=x;++i) //сумма чисел массивов
        {
            sum=0;
            for (int j=0;j<=y;++j)
            {
                        sum+=mas[i][j];
            }   
        }
 
        cout << "Сумма:" << sum << endl;
        sr_ar=sum/(x+y);
        cout << "Среднее арифметическое: " << sr_ar << endl;
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 00:50     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки
Посмотрите здесь:

Массивы: найти сумму, произведение, среднее арифметическое всех чисел массива C++
C++ Дан двумерный массив. Найти среднее арифметическое k-й строки массива
Разработать функцию, которая считает среднее арифметическое и геометрическое массива чисел C++
C++ Двумерный массив (каждый элемент массива разделить на среднее арифметическое этих элементов)
Заполнить двумерный массив Е (5*3) с клавиатуры. Найти среднее арифметическое всех элементов массива. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
19.10.2012, 01:02     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #2
j<=y, т. е. у тебя максимальное значение j в цикле это y, т. е. 5. Т. к. нумерация элементов идёт с нуля, пятого элемента в массиве из пяти элементов нет.

Добавлено через 1 минуту
ошибка не так замента потому, что массив заполнен случайными числами тоже с выходом за границы, без ошибки почему-то только вывод в консоль
aristocratic
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 9
19.10.2012, 02:57  [ТС]     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #3
спасибо СЕВЕР. я понял, просто убрать "="
ах, да, а с сортировкой по возростанию методом вставки не подскажешь?
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
19.10.2012, 03:02     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #4
Цитата Сообщение от aristocratic Посмотреть сообщение
просто убрать "="
да. Насчёт сортировки вставкой - не хочу делать предположения о том что имеется в виду...
aristocratic
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 9
19.10.2012, 03:13  [ТС]     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #5
я или упорот или еще что-то, но мне не понятен твой ответ. ты мне подскажешь как отсортировать содержимое массивов или нет?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.10.2012, 06:25     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #6
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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
        double a=0,b=0,sum=0,sr_ar=0, t;
        const int x=5, y=5; //размер массива
    double mas[x][y]; //двумерный массив
 
        for (int i=0;i<x;i++) //цикл заполнения массива ранд. рац. числами
        {
            for (int j=0;j<y;j++)
            {
                                a=rand()%1000;
                b=rand()%1000+1;
                                mas[i][j]=(double)a/b;
            }
        }
        cout<< "Массив: " << endl;
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout << mas[i][j] << " ";
            }
            cout<< endl;
        }
        sum=0;
        for (int i=0;i<x;++i) //сумма чисел массивов
        {            
            for (int j=0;j<y;++j)
            {
                        sum+=mas[i][j];
            }   
        }
 
        cout << "Сумма:" << sum << endl;
        sr_ar=sum/(x*y);
        cout << "Среднее арифметическое: " << sr_ar << endl;
        for (int i=0;i<x*y-1;++i)
        {
            int i_min=i;
            for (int j=i+1;j<x*y;++j)
                if(mas[i_min/x][i_min%y]>mas[j/x][j%y])
                    i_min=j;
            t=mas[i_min/x][i_min%y]; mas[i_min/x][i_min%y]=mas[i/x][i%y]; mas[i/x][i%y]=t;          
        }
        cout<< endl << endl << "Новый массив: " << endl;
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout << mas[i][j] << " ";
            }
            cout << endl;
        }
 
        
        system("pause");
}
aristocratic
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 9
19.10.2012, 11:54  [ТС]     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #7
Валерий, кто бы ты не был, знай, в Херсоне(Украина) есть парень, которого ты здорово выручил. Спасибо тебе большое)

Добавлено через 6 минут
А вот еще для себя интересуюсь, возможно ли в данном коде "x" и "y" вводить с клавиатуры, а не задавать по умолчанию???

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
65
66
67
#include <iostream>
#include <ctime>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "Russian");
    double a=0,b=0,sum=0, t=0;
    const int x=5, y=5; //размер массива
    double mas[x][y]; //двумерный массив
 
        for (int i=0;i<x;i++) //цикл заполнения массива ранд. рац. числами
        {
            for (int j=0;j<y;j++)
            {
                a=rand()%1000;
                b=rand()%1000+1;
                mas[i][j]=(double)a/b;
            }
        }
        cout<< "Массив: " << endl;
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout << mas[i][j] << "\t";
            }
            cout<< endl;
        }
 
        sum=0;
        for (int i=0;i<x;++i) //сумма чисел массивов
        {            
            for (int j=0;j<y;++j)
            {
                sum+=mas[i][j];
            }   
        }
 
        cout << "Сумма:" << sum << endl;
        cout << "Среднее арифметическое: " << sum/(x*y) << endl;
        
        for (int i=0;i<x*y-1;++i) //сортировка "вставкой" по возростанию
        {
            int i_min=i;
            for (int j=i+1;j<x*y;++j)
            if(mas[i_min/x][i_min%y]>mas[j/x][j%y])
                i_min=j;
                t=mas[i_min/x][i_min%y]; 
                mas[i_min/x][i_min%y]=mas[i/x][i%y]; 
                mas[i/x][i%y]=t;          
        }
        
        cout<< endl << endl << "Отсортированный массив: " << endl;
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout << mas[i][j] << "\t";
            }
            cout << endl;
        }
        system("pause");
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.10.2012, 19:46     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #8
Цитата Сообщение от aristocratic Посмотреть сообщение
возможно ли в данном коде "x" и "y" вводить с клавиатуры, а не задавать по умолчанию???
возможно:
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
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <ctime>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "Russian");
    double a=0,b=0,sum=0, t=0;
    int x, y; //размер массива
    double **mas; //двумерный массив
    cout<<"x= "; cin>>x;
    cout<<"y= "; cin>>y;
    mas=new double*[x];
 
        for (int i=0;i<x;i++) //цикл заполнения массива ранд. рац. числами
        {
            mas[i]=new double[y];
            for (int j=0;j<y;j++)
            {
                a=rand()%1000;
                b=rand()%1000+1;
                mas[i][j]=(double)a/b;
            }
        }
        cout<< "Массив: " << endl;
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout.width(8);
                cout << mas[i][j] << "\t";
            }
            cout<< endl;
        }
 
        sum=0;
        for (int i=0;i<x;++i) //сумма чисел массивов
        {            
            for (int j=0;j<y;++j)
            {
                sum+=mas[i][j];
            }   
        }
 
        cout << "Сумма:" << sum << endl;
        cout << "Среднее арифметическое: " << sum/(x*y) << endl;
        
        for (int i=0;i<x*y-1;++i) //сортировка "вставкой" по возростанию
        {
            int i_min=i;
            for (int j=i+1;j<x*y;++j)
            if(mas[i_min/y][i_min%y]>mas[j/y][j%y])
                i_min=j;
                t=mas[i_min/y][i_min%y]; 
                mas[i_min/y][i_min%y]=mas[i/y][i%y]; 
                mas[i/y][i%y]=t;          
        }
        
        cout<< endl << endl << "Отсортированный массив: " << endl;
        for (int i=0;i<x;i++) //цикл распечатки массива
        {
            for (int j=0;j<y;j++)
            {
                cout.width(8);
                cout << mas[i][j] << "\t";
            }
            cout << endl;
        }
        for (int i=0;i<x;i++) 
            delete [] mas[i];
        delete [] mas;       
        system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 22:22     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки
Еще ссылки по теме:

C++ Дан двумерный массив m*n. Найти среднее арифметическое положительных элементов массива
Найти среднее арифметическое элементов массива, и количество чисел внутри массива, не превышающих найденное C++
C++ Задан массив из 10 целых чисел. Найдите среднее арифметическое всех четных элементов массива

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

Или воспользуйтесь поиском по форуму:
aristocratic
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 9
19.10.2012, 22:22  [ТС]     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки #9
Валера, опять выручаешь)Спасибо)
Yandex
Объявления
19.10.2012, 22:22     Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки
Ответ Создать тему
Опции темы

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