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

Создание массива при работе программы

26.11.2008, 00:59. Показов 1913. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть такова при работе программы я получу 2 числа (M и N), заранее я их не знаю. Мне надо создать двумерный массив (если это возможно) размером именно M на N.
Если создать именно массив невозможно подскажите какую либо другую структуру, которая позволит это сделать.
Предложение сделать массив заранее (к примеру 100 на 100) не интересно, с ним потом будет трудно работать.

+ желательно учесть то что потом мне надо будет отдельные строки этого массива и возможно сам массив передавать в функции, копировать, изменять...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2008, 00:59
Ответы с готовыми решениями:

Воспроизведение звука при нажатии на клавиши, при работе программы в фоновом режиме
Нужно написать программу, воспроизводящую звук при нажатии на любую клавишу. Только нужно что бы программа работала в фоновом режиме, т.е....

Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы
В VS скомпилировал код #include <iostream> using namespace std; int main() { int a; cout<<"Hallo"; cin>>a; ...

Ошибки при работе программы
Помогите плиз народ срочно нужно. проверьте прогу. понять не могу по поводу ошибок ...

13
17 / 16 / 6
Регистрация: 20.11.2008
Сообщений: 81
26.11.2008, 01:12
Создать массив динамически:
Code
1
2
3
4
5
6
7
8
int** arr=new int*[M];
for(iny i=0;i<M;i++)
   arr[i]=new int[N];
...
...
for(iny i=0;i<M;i++)
   delete [] arr[i];
delete [] arr;
Примерно вот так...
1
 Аватар для Alirp
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
26.11.2008, 08:52
Можно и не динамический, просто объявление массива писать после ввода переменных, примерно так:
Code
1
2
3
4
5
6
int M, N;
cout << "Введите значение числа M:"
cin >> M;
cout << "Введите значение числа N:"
cin >> N;
int mas [M][N];
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
26.11.2008, 10:12
Хм, это вообще не скомпилируется.
0
 Аватар для Alirp
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
26.11.2008, 10:33
Цитата Сообщение от CheshireCat Посмотреть сообщение
Хм, это вообще не скомпилируется.
Всё отлично компилируется и без единого варнинга, если не веришь проверь сам.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
26.11.2008, 12:40
Согласен, я был не прав. Следующий вопрос: хорошо, скомпилировалось... и как это будет работать, как ты думаешь?
0
 Аватар для Alirp
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
26.11.2008, 12:55
Цитата Сообщение от CheshireCat Посмотреть сообщение
Согласен, я был не прав. Следующий вопрос: хорошо, скомпилировалось... и как это будет работать, как ты думаешь?
Работать все будет правильно, сначала с помощью ввода задаются значения переменных, а затем обявляется двумерный массив с известным размером, вот если бы я сначала обявил массив, а затем задал значения переменных N и M, тогда бы да, согласен работало не корректно.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
26.11.2008, 13:03
Поправочка:
Это НЕ ДОЛЖНО скомпилироваться, поскольку противоречит Стандарту, 8.3.4/1. Если некоторые компиляторы и допускают такие вольности, то это не есть правильно.

А правильный компилятор (C++, но не С99!) должен сказать:
>: error C2057: expected constant expression

А поскольку твой код оперирует с потоковым вводом (cin), то это именно C++, не так ли?
0
 Аватар для Alirp
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
26.11.2008, 14:15
Цитата Сообщение от CheshireCat Посмотреть сообщение
Это НЕ ДОЛЖНО скомпилироваться, поскольку противоречит Стандарту, 8.3.4/1. Если некоторые компиляторы и допускают такие вольности, то это не есть правильно.
Я таких компиляторов, в которых это не работает не встречал, и ничего не правильного я здесь не вижу.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
26.11.2008, 14:23
А я, к сожалению, встречал... Поэтому и приходится на работе - писать переносимый код.
Например, GCC 4.3 - с установками по умолчанию спокойно "проглатывает" этот код; но такое поведение специально оговорено как C Language Extensions в его Complete Guide. Если же потребовать -pedantic (т.е. точное соответствие Стандартам), то он тоже откажется компилировать это.
А вот MSVC++ 8 (2005) сразу ругается и отказывается компилировать.
0
 Аватар для Spo1ler
296 / 56 / 5
Регистрация: 22.05.2008
Сообщений: 788
26.11.2008, 17:54
Вообще-то да, динамику надо создавать с помощью new. И к слову, динамически объявить двухмерный массив нельзя.
1
 Аватар для Matskoff-Lion
4 / 4 / 1
Регистрация: 25.11.2008
Сообщений: 41
26.11.2008, 18:58
Можно создать массив одномерный MxN, а доступ к элементам получать не через указатели на срезы, а как делает паскаль например: путем арифметического высчитывания индекса

А вот с Alirp'ом я в корне не согласен: такое компилиоваться не должно. Это противоречит стандартам С++, в объявлении массива (в памяти стат. объектов) должны быть значения известные на момент компиляции, чтобы компилятор выделил необходимую память.
1
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 1
27.11.2008, 16:50  [ТС]
StarWorm,Matskoff-Lion, Spo1ler
Спасибо большое! У меня нет слов кроме слова круто =).
Alirp, к сожалению это у меня тоже не катит, иначе бы я не создал тему.

Добавлено через 14 часов 27 минут 21 секунду
StarWorm, спасибо за отрывок кода но возникает вопрос:
Что значит буквосочетание iny в строке кода
Code
1
for(iny i=0;i<M;i++)
0
 Аватар для Matskoff-Lion
4 / 4 / 1
Регистрация: 25.11.2008
Сообщений: 41
27.11.2008, 19:31
Что значит буквосочетание iny
это опечатки. предполагалось int.
T и Y рядом находятся
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2008, 19:31
Помогаю со студенческими работами здесь

Ошибка при работе программы
Помогите найти ошибку Код: #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &quot;winbase.h&quot; #include &lt;fstream&gt; #include...

Ошибка при работе программы
function I=alex(func,a,b,n) f=@(x)func; I=0; h=(b-a)/n; for i=0:n-1 x1=a+h*i;

Ошибки при работе программы
Пишу программу-бота для личных нужд, собственно поэтому и зарегался на самом живом форуме. Дельфин ЕХ3, юзаю компонент TWebBrowser...

Зависание программы при работе с Vk
Всем привет! Помогите!!! Программа зависает при выполнении запроса! Можно ли это как то исправить? Данный код стоит при загрузке...

Пауза при работе программы.
Кроме system(&quot;pause&quot;) есть еще команды, которыми можна приостановить работу программы?


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru