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

Динамический массив строк фиксированной длины

26.05.2017, 06:24. Показов 2005. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Помогите осилить простую задачу:
Нужен массив переменного размера строк фиксированной длины.
Пока что сделал такой workaround:

C++
1
2
3
4
const int lines=24
struct text80 { char info[81]; };
text80* screen;
screen = new text80[lines];
А хотелось бы, но не понимаю почему не собирается:
C++
1
2
3
const int lines=24
char **screen;
screen = new char[lines][81];
невозможно преобразовать "char (*)[5]" в "char **"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2017, 06:24
Ответы с готовыми решениями:

Класс "Одномерный массив строк фиксированной длины"
Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть контроль выхода за пределы массива,...

Вывод строк фиксированной длины из входного потока
Задача организовать цикл по входному потоку и вывести полученные getchar'ом символы в виде строк некоторой длины N. Допустим, если длина...

Avx, как написать эффективную функцию сравнения строк фиксированной длины?
Начал изучать AVX, и никак не могу понять в чем преимущество функции _mm256_cmpeq_epi8, если потом все равно нужно делать 32 сравнения?...

8
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
26.05.2017, 06:39
может так пойдет?
C++
1
2
3
4
5
const int lines=24
struct text80 { char info[81]; };
text80 * screen = new text80[lines];
 
delete []screen;
0
0 / 0 / 0
Регистрация: 26.05.2017
Сообщений: 5
26.05.2017, 06:46  [ТС]
delete []screen;
Вопросы использования этого массива и освобождения памяти здесь опустил.
Вопрос только объявления массив и распределения памяти
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
26.05.2017, 07: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
#include <iostream>
 
using namespace std;
struct car{
char marka[80];
};
int main(){
int n;
 
cout<<"Введите кол-во авто которые хотите добавить: ";
 
   cin>>n;
 
//создаем динамический масив структур
car * newcar=new car[n];
 
//вводим
for(int i=0;i<n;i++){
cout<<"Введите название "<<i+1<<"   автомашины: \n";
cin>>newcar[i].marka;
}
 
//выводим
for(int i=0;i<n;i++){
cout<<newcar[i].marka<<endl;
}
 
delete [] newcar;
    return 0;
}
0
0 / 0 / 0
Регистрация: 26.05.2017
Сообщений: 5
26.05.2017, 07:17  [ТС]
//ты про это?

#include <iostream>

using namespace std;
struct car{
char marka[80];
};
Не совсем. Я не вижу причин объявлять новый тип.
В принципе я хочу получить и работать c двумерным массивом символов. Все строки равной длины.
Все элементы массива одного символьного типа.
Как объявить правильно объявить переменную screen для такого распределения:
screen = new char[lines][81];

Судя по сообщению компилятора она получается типа char(*)[81] - что это и как правильно объявить?
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
26.05.2017, 07:40
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
#include <iostream>
using namespace std;
 
struct text80 { 
    char info[81]; 
};
 
 
int main(int argc, char* argv[])
{
   text80** screen = new text80 *[2];// две строки в массиве
 
   for (int count = 0; count < 2; count++)
        screen[count] = new text80[5];// и пять столбцов
 
//заполнение
for (int count_row = 0; count_row < 2; count_row++)
        for (int count_column = 0; count_column < 5; count_column++)
            cin>>screen[count_row][count_column].info;
 
    // удаление двумерного динамического массива
    for (int count = 0; count < 2; count++)
        delete []screen[count];
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 26.05.2017
Сообщений: 5
26.05.2017, 09:35  [ТС]
Antikl, спасибо, я сразу сказал , что со структурой понятно, работает.
С распределением одномерного массива указателей и потом распределением памяти по второму измерению тоже понятно.

Меня интересует мой конкретный вопрос:
const int lines=24
char **screen;
screen = new char[lines][81]; // error C2440: =: невозможно преобразовать "char (*)[5]" в "char **"
0
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
26.05.2017, 10:01
C++
1
2
3
4
5
6
7
const int lines = 24;
char **screen;
 
screen = new char*[lines];  
  
for(int i = 0; i < lines; i++)
        screen[i] = new char[81];
0
0 / 0 / 0
Регистрация: 26.05.2017
Сообщений: 5
26.05.2017, 10:06  [ТС]
Sandr1x,
Этот вариант годится для строк произвольной длины, а не фиксированной и содержит множество системных вызовов для распределения памяти, а после и для высвобождения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2017, 10:06
Помогаю со студенческими работами здесь

Описание класса для определения одномерных массивов строк фиксированной длины
Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения к отдельным...

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

Есть ли у кого похожий алгоритм: распределения отрезков разной длины внутри отрезков фиксированной длины?
Народ помогите мне с программой распределения отрезков разной длины внутри отрезков фиксированной длины с минимальными остатками. К...

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

Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.
Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru