3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158
1

Двухмерный динамический массив. Создать "рваный массив"

12.04.2016, 19:35. Показов 2376. Ответов 12
Метки нет (Все метки)

Создать "рваный массив":

а)убывающий
*****
****
**
*

б)возрастающий
*
**
***
****
*****

в)создать рванный массив, где пользователь вводит длину каждого массива
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2016, 19:35
Ответы с готовыми решениями:

Создать динамический массив обьектов класса "Сотрудник"
Здравствуйте! Не давно началось ООП и пока не все понимаю! Задача в базов классе задать три...

Создать класс "динамический массив"
Создать класс,с динамическими числами ,вводимых пользователем. В массиве : 1)Найти числа ,не...

Массив фиксированного размера может быть динамическим? Что такое "динамический массив"?
есть код string line; char *dup=new char; Я так понимаю создается динамический массив...

Динамический двухмерный массив (создать матрицу)
Меня немного клинит, хочу уточнить. Задача заключается в том, чтобы создать двухмерный массив:...

12
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 593
Записей в блоге: 1
18.04.2016, 23:22 2
Mari_ly, я правильно вас понял?
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 <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
int k=5;
 int arr[5]={1,2,3,4,5};
 while (k!=0)
 {
  for (int i=0;i<k;i++)
  cout<<arr[i]<<" ";
  cout<<endl;
  k--;
 }
 k=0;
 cout<<endl;
 while (k!=5)
 {
  for (int i=0;i<=k;i++)
  cout<<arr[i]<<" ";
  cout<<endl;
  k++;
 }
 
   system("pause");
   return 0;
}
Добавлено через 5 минут
Mari_ly, я не правильно вас понял... Код неправильный...
1
Модератор
Эксперт С++
12074 / 9756 / 5899
Регистрация: 18.12.2011
Сообщений: 26,194
22.04.2016, 15:49 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
int n;
cout<<"Количество строк:";
int **Mass = new int*[n];
int *StrLen = new int[n];
for ( size_t i = 0; i < n; ++i ) 
{
   cout<<"Длина "<<i<<" строки:";
   cin>>StrLen[i];
   Mass[i] = new int [StrLen[i]];
   for ( size_t j = 0; j < StrLen[i]; ++j )
   {
        Mass[i][j]=rand();// или cin>>Mass[i][j];
   } 
}
 
for ( size_t i = 0; i < n; ++i ) 
{
   for ( size_t j = 0; j < StrLen[i]; ++j )
   {
        cout<<Mass[i][j]<<" ";
   } 
   cout<<endl;
}
2
3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158
22.04.2016, 22:09  [ТС] 4
помогите с кодом к этой задачи. Нужно сделать это на с++ и более легче. И что бы выполнялась правильно.
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
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
// Прототипы своих функций
void PrintArray(double **p);
double **ConstructArray();
void DestructArray(double **p);
 
int main(void)
{
    //указатель на вектор указателей
    double **pA;
    //построит массив и вернет указатель на него
    pA= ConstructArray();
    //выведет массив на экран
    PrintArray(pA);
    //освободит память
    DestructArray(pA);
    getchar();
    return 0;
}
 
/*функция запрашивает необходимую информацию и строит рваный массив.
Возвращает указатель на него. Количество строк храниться в "минус первом" элементе
вектора указателей на строки, а в "минус первом" элементе каждой строки - количество
элементов в строке.*/
double **ConstructArray() {
    double **p = NULL;
    int N, M; // количество строк, элементов в строке
    // вводим корректное количество строк
    do {
        printf("\nProgram makes an array of N rows.\n");
        printf("Please, enter N (1<=N<=10):");
        scanf("%d", &N);
    } while (N < 1 && N > 10);
    //выделяем память
    p = (double **)malloc(sizeof(double *)*N + sizeof(int));
    //запоминаем в "минус первом" элемент вектора указателя на строки
    ((int *)p)[0] = N;
    //сдвигаем указатель
    (int*)(*p)++;
    //организуем построчный ввод
    for (int i = 0;i < N; i++) {
        do {
            printf("\nEnter M - number of elements in %d-th row (1<=M<=10): ", i);
            scanf("%d", &M);
        } while (M < 1 && N > 10);
        //выделяем память
        p[i] = (double *)malloc(M*sizeof(double) + sizeof(int));
        //записываем в -1 элемент
        ((int *)(p[i]))[0] = M;
        //сдвигаем указатель
        (int *)(p[i])++;
        
        for (int j = 0;j < M;j++) {
            double m;
            do {
                printf("Enter A[%d][%d] (1<=A[%d][%d] <=10: ", i, j, i, j);
                scanf("%lf", &m);
            } while (m < 1 || m>10);
            p[i][j] = m;
        }
    }
    return p;
}
 
void DestructArray(double **p) {
    if (!p) return;
    int N;
    N = ((int *)p)[-1];
    for (int i = 0;i < N;i++) {
        (int *)(p[i])--;
        free(p[i]);
        (int*)(*p)--;
        free(p);
    }
}
 
void PrintArray(double **p) {
    int N, M;
    N = ((int *)p)[-1];  [COLOR="Red"]// Место ошибки!!!! При отладки дальше не идет и значение присваевается неправильно походу, не пойму.[/COLOR]
    for (int i = 0;i < N;i++) {
        M = ((int *)(p[i]))[-1];
        for (int j = 0;j < M;j++) printf("-6.2lf0", p[i][j]);
        printf("\n");
    }
}
0
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 183
22.04.2016, 23:25 5
Пункт а так создаётся.
C++
1
2
3
4
5
float **ptrarray = new float* [4]; // инициализация 
ptrarray[0] = new float [5];
ptrarray[1] = new float [4];
ptrarray[2] = new float [2];
ptrarray[3] = new float [1];
Остальные - похожие.
0
3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158
22.04.2016, 23:51  [ТС] 6
Как то не очень понятно
0
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 183
23.04.2016, 00:03 7
А что не понятно?

Добавлено через 9 минут
Вот тема - динамический массив.
А тут просто внутренние массивы имеют разную длину.
0
3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158
23.04.2016, 00:09  [ТС] 8
Не понятно как реализовать его по убиванию и по возрастанию
0
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 183
23.04.2016, 00:12 9
По убыванию - я же написал реализацию. Вот так и нужно реализовывать.
Что в ней не ясно?
0
3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158
23.04.2016, 21:52  [ТС] 10
Не понятно как реализовать в готовый код. Вроде на словах все понятно а на деле
0
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 183
23.04.2016, 22:16 11
Лучший ответ Сообщение было отмечено Mari_ly как решение

Решение

А это что? Это же готовый код для пункта a:
C++
1
2
3
4
5
float **ptrarray = new float* [4]; // инициализация 
ptrarray[0] = new float [5];
ptrarray[1] = new float [4];
ptrarray[2] = new float [2];
ptrarray[3] = new float [1];
Для b
C++
1
2
3
4
5
6
float **ptrarray = new float* [5]; // инициализация 
ptrarray[0] = new float [1];
ptrarray[1] = new float [2];
ptrarray[2] = new float [3];
ptrarray[3] = new float [4];
ptrarray[4] = new float [5];
Для с
C++
1
2
3
4
5
6
cin >> r;
float **ptrarray = new float* [r]; // инициализация 
for(int i=0; i<r; i++) {
cin >> t;
ptrarray[i] = new float [t];
}
1
3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158
24.04.2016, 01:34  [ТС] 12
Создать "рваный массив":

а)убывающий
*****
****
**
*

б)возрастающий
*
**
***
****
*****

в)создать рваный массив, где пользователь вводит длину каждого массива

Помогите пожалуйста написать полный код.
а)
C++
1
2
3
4
5
float **ptrarray = new float* [4]; // инициализация 
ptrarray[0] = new float [5];
ptrarray[1] = new float [4];
ptrarray[2] = new float [2];
ptrarray[3] = new float [1];
б)
C++
1
2
3
4
5
6
 float **ptrarray = new float* [5]; // инициализация 
ptrarray[0] = new float [1];
ptrarray[1] = new float [2];
ptrarray[2] = new float [3];
ptrarray[3] = new float [4];
ptrarray[4] = new float [5];
в)
C++
1
2
3
4
5
6
 cin >> r;
float **ptrarray = new float* [r]; // инициализация 
for(int i=0; i<r; i++) {
cin >> t;
ptrarray[i] = new float [t];
}
0
Модератор
Эксперт С++
12074 / 9756 / 5899
Регистрация: 18.12.2011
Сообщений: 26,194
24.04.2016, 08:15 13
Лучший ответ Сообщение было отмечено Mari_ly как решение

Решение

Mari_ly, А чем Вас не устроил приведенный мною код в сообщении №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
30
31
32
33
34
35
#include <iostream>
using namespace std;
int main() 
{
    setlocale(LC_ALL,"Rus");
    cout<<"Количество строк:";
    int n;cin>>n;
    int **Mass = new int*[n];
    int *StrLen = new int[n]; // Массив для хранения длин строк
    for (int i = 0; i < n; ++i ) 
    {
        cout<<"Длина "<<i<<" строки:";
        cin>>StrLen[i];
        Mass[i] = new int [StrLen[i]]; 
        for ( int j = 0; j < StrLen[i]; ++j )
        {
            Mass[i][j]=j+1;// или cin>>Mass[i][j];
        } 
    }
 
    for ( int i = 0; i < n; ++i ) 
    {
        for ( int j = 0; j < StrLen[i]; ++j )
        {
            cout<<Mass[i][j]<<" ";
        } 
        cout<<endl;
    }
    for ( int i = 0; i < n; ++i ) 
        delete[] Mass[i];
    delete[] Mass;
    delete[] StrLen;
    system("pause");
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2016, 08:15
Помогаю со студенческими работами здесь

Создать двухмерный динамический массив строк
Ввести 2-мерный массив. Количество строк и столбцов заранее неизвестно. Признаком конца ввода...

Не могу создать нормальный двухмерный динамический массив
Были да жили хорошо статические массивы размерностью 255х255: #define _CRT_SECURE_NO_WARNINGS...

Создать двухмерный динамический массив в котором размер строк случайное число
Пользователь вводит количество строк двумерного динамического массива. Программа создаёт этот...

Создать класс Matrix, реализующий двухмерный динамический массив типа int
Здравствуйте! Задание: Создать класс Matrix, реализующий двухмерный динамический массив типа int....

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

Класс "динамический массив" - добавление и удаление элементов в рантайме
#ifndef ARRAY// if not defined #define ARRAY Class ARRAY{ Public ARRAY(); ~ ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru