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

Динамическое выделение памяти для двумерного массива

10.12.2011, 22:18. Просмотров 2517. Ответов 7
Метки нет (Все метки)

нужна помощь
вот тело программы, не могу сделать динамическое выделение памяти для первого двумерного массива.
второй массив получается через среднее арифметического строк первого, после сортируется.
Ошибка "Run-Time Check Failure #3 - The variable 'i' is being used without being initialized"

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 "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{   int m,n;
    cin>>m;
    cin>>n;
    int i,j;
    double s,min;
    double *b=new double [i];
    int **a=new int *[i];
         for (int i=0; i<m; i++) 
         {
             a[i] =new int [j];
         }
    cout<<"Enter Matrix C:\n";
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            cin>>a[i][j];
    }
    cout<<"\nMatrix C:\n";
    for (i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            cout<<a[i][j]<<"\t";
        cout<<"\n";
    }
    cout<<"Matrix B:\n";
    for(i=0;i<n;i++)
    {
        s=0;
        for(j=0;j<m;j++)
            s=s+a[i][j];
        s=s/m;
        b[i]=s;
    }
    cout<<"\n";
    for(i=0;i<n;i++)
        cout<<b[i]<<"\t";
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
            if(b[i]>b[j])
            {
                min=b[j];
                b[j]=b[i];
                b[i]=min;
            }
    cout<<"\n"<<"Sort Matrix B:\t"<<"\n";
    for(i=0;i<n;i++)
        cout<<b[i]<<"\t";
     for (int i = 0; i < m; i++) 
     {
         delete [] a[j];
     }
    delete [] a;
    delete [] b;
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 22:18
Ответы с готовыми решениями:

Динамическое выделение памяти для массива
Не могу разобраться, почему программа вызывает точку остановы после выбора...

Динамическое выделение памяти для массива
Кто может помочь решить задачу. Для заданного двумерного массива из n строк и...

Динамическое выделение памяти для массива классов
Привет. В строках 84 - 98 пытаюсь выделить динамически память для свича. После...

Выделение памяти для двумерного массива
Обьясните что означает double** A = new double*, A = new...

Динамическое выделение памяти для массива указателей на char
Доброго времени суток! пытаюсь выделить память для массива указателей на char...

7
-=ЮрА=-
Заблокирован
Автор FAQ
10.12.2011, 22:26 2
Цитата Сообщение от Captain_ru Посмотреть сообщение
for (int i=0; i<m; i++)
{
a[i] =new int [j];
}
Вот так правильно
a[i] =new int [n];

Добавлено через 1 минуту
И тут тоже
Цитата Сообщение от Captain_ru Посмотреть сообщение
nt **a=new int *[i];
m туда надо

Добавлено через 1 минуту
Цитата Сообщение от Captain_ru Посмотреть сообщение
for (i=0;i<n;i++)
- строки же по m ладно пишу код
0
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
10.12.2011, 22:26  [ТС] 3
все равно таже ошибка
0
-=ЮрА=-
Заблокирован
Автор FAQ
10.12.2011, 22:31 4
Captain_ru, у вас куча ошибок
Цитата Сообщение от Captain_ru Посмотреть сообщение
or (int i = 0; i < m; i++)
{
delete [] a[j];
Цитата Сообщение от Captain_ru Посмотреть сообщение
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
- я сейчас всё подправлю а вам рекомендую сюда посмотреть Методом Гаусса решить систему n линейных алгебраических уравнений

Добавлено через 1 минуту
В добавок, ну кто сказал что коєффициенты должны быть целыми!
Цитата Сообщение от Captain_ru Посмотреть сообщение
int **a=new int *[i];
0
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
10.12.2011, 22:32  [ТС] 5
признаю свою оплощность, просто туго идет изучение (
0
-=ЮрА=-
Заблокирован
Автор FAQ
10.12.2011, 22:36 6
Captain_ru, вот ваш код и скрин работы вы только к хедерам свой #include "stdafx.h" добавьте, он мне просто не нужен
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{ 
    int i,j,m,n;
    cout<<"Enter m : ";cin>>m;
    cout<<"Enter n : ";cin>>n;
    double s, min;
    double *b = new double [m];
    double **a= new double *[m];
    cout<<"Enter Matrix C:\n";
    for(i=0; i < m; i++)
    {
        a[i] =new double [n];
        for(j=0;j < n; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"] = ";
            cin>>a[i][j];
        }
    }
    cout<<"\nMatrix C:\n";
    for (i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            cout<<a[i][j]<<"\t";
        cout<<"\n";
    }
    cout<<"Matrix B:\n";
    for(i=0; i < m; i++)
    {
        s=0;
        for(j=0; j < n; j++)
            s = s + a[i][j];
        s = s/1.0*m;
        b[i] = s;
    }
    cout<<"\n";
    for(i=0;i<m;i++)
        cout<<b[i]<<"\t";
    for(i = 0; i < m-1; i++)
    for(j = i + 1; j < m; j++)
    if(b[i] > b[j])
    {
        min=b[j];
        b[j]=b[i];
        b[i]=min;
    }
    cout<<"\n"<<"Sort Matrix B:\t"<<"\n";
    for(i=0;i<m;i++)
        cout<<b[i]<<"\t";
    for (i = m - 1; 0 <= i; i--) 
        delete [] a[i];
    delete [] a;
    delete [] b;
    getch();
return 0;
}
1
Миниатюры
Динамическое выделение памяти для двумерного массива  
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
10.12.2011, 22:46  [ТС] 7
спасибо большой

Добавлено через 9 минут
только почему то матрица B не получаеться как средне арифмитическое строк матрицы С
0
-=ЮрА=-
Заблокирован
Автор FAQ
10.12.2011, 23:26 8
Цитата Сообщение от Captain_ru Посмотреть сообщение
олько почему то матрица B не получаеться как средне арифмитическое строк матрицы С
Captain_ru, ну какая формула такой и резульат(я ваш код пределывал не свой)

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(j=0; j < n; j++)
* * * * * * * * * * * * s = s + a[i][j];
* * * * * * * * s = s/1.0*m;
- это среднее арифметическое и есть.
Вобще данная реализация метода Гаусса на мой взгляд совершенно некорректна, лучше разберите мой код
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Методом Гаусса решить систему n линейных алгебраических уравнений
- там всё 100% по теории

Добавлено через 1 минуту
Понимаете вы должны переставить строки матрица коэффициентов (вобще то это А а не С) и элементы в В, затем занулить А, а она у вас не зануляется ну нигде

Добавлено через 19 минут
Captain_ru, ну что нибудь прояснилось???В принципе могу на плюсы код из
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Методом Гаусса решить систему n линейных алгебраических уравнений
перевести...
1
10.12.2011, 23:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 23:26

Выделение динамической памяти для двумерного массива.
#include &lt;iostream&gt; int main() { setlocale( LC_ALL,&quot;Russian&quot; ); int...

Выделение памяти для динамического двумерного массива внутри функции
Имеется вот такой код : #include &lt;iostream&gt; void allocateMemory(int...

Как правильно записать в виде функции выделение памяти для двумерного массива и ее освобождение
Здравствуйте! Подскажите, как правильно записать в виде функции выделение...


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

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

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