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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
#1

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

10.12.2011, 22:18. Просмотров 2296. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 22:18     Динамическое выделение памяти для двумерного массива
Посмотрите здесь:

C++ Динамическое выделение памяти для массива
Выделение динамической памяти для двумерного массива. C++
динамическое выделение памяти и обработку массива с применением указателей C++
Динамическое выделение памяти для глобальных переменных C++
Динамическое выделение памяти для объекта класса C++
Как правильно записать в виде функции выделение памяти для двумерного массива и ее освобождение C++
Динамическое выделение памяти для структуры в функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор 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 ладно пишу код
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
10.12.2011, 22:26  [ТС]     Динамическое выделение памяти для двумерного массива #3
все равно таже ошибка
-=ЮрА=-
Заблокирован
Автор 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];
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
10.12.2011, 22:32  [ТС]     Динамическое выделение памяти для двумерного массива #5
признаю свою оплощность, просто туго идет изучение (
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
Динамическое выделение памяти для двумерного массива  
Captain_ru
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 11
10.12.2011, 22:46  [ТС]     Динамическое выделение памяти для двумерного массива #7
спасибо большой

Добавлено через 9 минут
только почему то матрица B не получаеться как средне арифмитическое строк матрицы С
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 23:26     Динамическое выделение памяти для двумерного массива
Еще ссылки по теме:

C++ Динамическое выделение памяти для массива указателей на char
C++ Динамическое выделение памяти для Вектора ( не STL)
Для чего нужно динамическое выделение памяти C++
Динамическое выделение памяти для строки C++
Динамическое выделение памяти для массива C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор 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 линейных алгебраических уравнений
перевести...
Yandex
Объявления
10.12.2011, 23:26     Динамическое выделение памяти для двумерного массива
Ответ Создать тему
Опции темы

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