Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 3 / 3
Регистрация: 13.02.2016
Сообщений: 158

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

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

Студворк — интернет-сервис помощи студентам
Создать "рваный массив":

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

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

в)создать рванный массив, где пользователь вводит длину каждого массива
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2016, 19:35
Ответы с готовыми решениями:

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

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

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

12
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
18.04.2016, 23:22
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
Модератор
Эксперт С++
 Аватар для zss
13772 / 10965 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
22.04.2016, 15:49
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  [ТС]
помогите с кодом к этой задачи. Нужно сделать это на с++ и более легче. И что бы выполнялась правильно.
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
Сообщений: 184
22.04.2016, 23:25
Пункт а так создаётся.
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  [ТС]
Как то не очень понятно
0
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 184
23.04.2016, 00:03
А что не понятно?

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

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

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

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

Помогите пожалуйста написать полный код.
а)
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
Модератор
Эксперт С++
 Аватар для zss
13772 / 10965 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
24.04.2016, 08:15
Лучший ответ Сообщение было отмечено 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2016, 08:15
Помогаю со студенческими работами здесь

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

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

Описать класс, создать динамический двухмерный массив и посчитать сумму елементов главной диагонали
Помогите пожалуйста))))В коде какая-то ошибка. Компилятор скорее всего не видит данные с массива и поэтому сумму считает не правильно. ...

Динамический двухмерный массив
Нужно сделать динамический двухмерный массив. 1. n столбиков и m строчек нужно задавать самому 2. массив должен записываться и...

Двухмерный динамический массив
Ребята, подскажите пожалуйста, необходимо создать двухмерный динамический массив. Его размерность должна быть 10000000 на 10000000....


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru