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

Проблемма с заполнением динамического двумерного массива - C++

Восстановить пароль Регистрация
 
Вебер
0 / 0 / 0
Регистрация: 05.01.2011
Сообщений: 25
26.03.2013, 12:59     Проблемма с заполнением динамического двумерного массива #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
Имееться структура,объявления двумерного динамического массива вида:
struct Din_Array 
{ 
double* array; 
int rowCount;  
int colCount; 
}; 
 
int main()
{
    int row,col;
    Din_Array Arr;
    printf("Введите количество строк в массиве\n");
    scanf("%d",&row);
    printf("Введите количество столбцов в массиве\n");
    scanf("%d",&col);
    Create_Arr(&Arr,row,col);
    Rand_Arr(&Arr);
getch();
}
 
//функция выделения памяти
 
void Create_Arr(Din_Array *Arr,int row,int col)
{
 Arr->rowCount=row;
 Arr->colCount=col;   
 Arr->array=(double*)malloc(row*col*sizeof(double));   
}
 
//функция заполнения массива случ. числами
 
void Rand_Arr(Din_Array *Arr)
{
    int i;
    int j;
srand(time(0));
for(i = 0; i < Arr->rowCount; i++)
    {
        for(j = 0; j < Arr->colCount;j++)
        {
            Arr->array[i][j]=(double)((rand()%10000)-(rand()%10000))/100; -в это строке,компилятор ругаеться(текст ошибки ниже) 
        }
    } 
}
Ошибка- 18 D:\projects\Din_Array\Rand_Arr.cpp invalid types `double[int]' for array subscript
Как я понял,на не допустимость данного типа,для выражения в ячейки.
Буду очень признателен,если объяснить в чем дело.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
26.03.2013, 13:40     Проблемма с заполнением динамического двумерного массива #2
Цитата Сообщение от Вебер Посмотреть сообщение
Arr->array[i][j]=(double)((rand()%10000)-(rand()%10000))/100; -в это строке,компилятор ругаеться(текст ошибки ниже)
Здесь у тебя двумерный массив.

Цитата Сообщение от Вебер Посмотреть сообщение
double* array;
а здесь одномерный.

Добавлено через 5 минут
Не проще ли сделать вот так:

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
#include <iostream>
#include <random>
 
int main()
{
    int** arr; // -объявить двумерный динамический массив
    int row, col;
    
    // -спросить и пользователя размеры массива
    std::cout << "Enter row and col: ";
    std::cin >> row >> col; 
    
    // -выделить память
    arr = new int*[row]; 
    for (int i = 0; i < row; ++i)
        arr[i] = new int[col];
 
    // -заполнить массив случайными числами
    std::default_random_engine generator;
    std::uniform_int_distribution<int> distribution(1,99);
 
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < col; ++j)
            arr[i][j] = distribution(generator);
    
    // - вывод
    for (int i = 0; i < row; ++i) 
    {
        for (int j = 0; j < col; ++j)
            std::cout << arr[i][j] << ' ';
        std::cout << std::endl;
    }
    
    // -освободить память
    for (int i = 0; i < row; ++i) 
        delete []arr[i];
    delete []arr;
 
    system("PAUSE");
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
26.03.2013, 13:43     Проблемма с заполнением динамического двумерного массива #3
Вебер, Ну и наворотил же ты кода)))
Вот смотри как это можно сделать
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
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    int m = 0;
    int n = 0;
    double ** arr = 0;
    cout<<"Num of Rows : ";cin>>m;cin.get();
    cout<<"Num of Cols : ";cin>>n;cin.get();
    srand(time(0));//ÓñòГ*Г*îâêГ* Г*Г*Г· Г§Г*Г*Г·ГҐГ*ГЁГї ГЈГҐГ*-Г°Г* ñëó÷ Г·ГЁГ±ГҐГ«
    arr = new double * [m];//ГЇГ*ìÿòü ïîä ГіГЄГ*Г§Г*òåëè Г*Г* ñòðîêè
    for(i = 0; i < m; i++)
    {
        arr[i] = new double[n];//ГЇГ*ìÿòü ïîä ýëåìåГ*ГІГ» ñòðîêè
        for(j = 0; j < n; j++)
        {
            //ñëó÷ Г·ГЁГ±Г«Г* Гў äèГ*ГЇГ*çîГ*ГҐ -5.0...5.0
            arr[i][j] = (rand()%1000 - 500)/10.0;
            cout<<arr[i][j]<<"\t";
        }
        cout<<endl;
    }
    cin.get();
    return 0;
}
Миниатюры
Проблемма с заполнением динамического двумерного массива  
Вебер
0 / 0 / 0
Регистрация: 05.01.2011
Сообщений: 25
26.03.2013, 13:44  [ТС]     Проблемма с заполнением динамического двумерного массива #4
SeregaC++,
Мда,даже стыдно что такое пропустил...
C++
1
double** array;
Ребят,я понимаю что можно проще сделать,но вот по заданию нужно именно так)
Yandex
Объявления
26.03.2013, 13:44     Проблемма с заполнением динамического двумерного массива
Ответ Создать тему
Опции темы

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