Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
#1

Двумерный массив символов - C++

04.02.2014, 18:29. Просмотров 286. Ответов 8
Метки нет (Все метки)

привожу кусок кода:
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(0);
    int M(0);
    cout << "Введите кол-во строк, в которых мы будем искать первую строку" << endl;
    cin >> N;
    
    cout << "Введите кол-во символов в строке" << endl;
    cin >> M;
 
    char **str2 = new char*[N];
    for (int k = 0; k < N; k++)
  str2[k] = new char[M];
 
     cout << "А теперь введите сами эти строки" << endl;
    for (i = 0; i < N; ++i)
        for (j = 0; j < M; ++j)
            cin >> str2[i][j];
 
    cout << "DONE!";
 
    //Удаляем массив
    for(int k = 0; k < N; k++)
        delete[] str2[k];
    delete [] str2;
может проблема в строке cin >> str2[i][j]; Почему то не останавливается, если я ввожу N=4, готов вводить до 12-15 строк, а потом только выводит DONE. В чем, может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2014, 18:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двумерный массив символов (C++):

Двумерный массив символов - C++
#include &lt;iostream&gt; const int N=255; char **init(int &amp;len){ std::cout&lt;&lt;&quot;len = &quot;; std::cin&gt;&gt;len; //Ввод длины строки char...

Двумерный массив символов - C++
Как представить двумерный массив символов, состоящий из '#' и '.' ? Далее по программе необходимо будет иметь возможность обращаться к этим...

Указатель на двумерный массив символов - C++
Доброго времени суток. Особо не сталкивался со строками, но сейчас возникла необходимость, так же возникли и проблемы. Пытаюсь...

Двумерный динамический массив символов - C++
Одномерный массив создаётся, но когда пытаюсь сделать двумерный, то ошибка. Заранее спасибо. #pragma argsused #include &lt;tchar.h&gt; ...

Двумерный массив символов: при высвобождении памяти возникает ошибка - C++
Подскажите, что не так делаю. При высвобождении памяти выбивает ошибку.Как правильно сделать? char **str = new char*; for(int...

Как с консоли можно ввести двумерный массив строчных символов? - C++
Например, есть char str ; Как можно ввести 2 строки? И будет ли символ ‘\0’ в конце каждой строки или только в одной?

8
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
04.02.2014, 18:35 #2
Потому что нужно вводить строку целиком, а не посимвольно, т.е. :

C++
1
2
for (i = 0; i < N; ++i)
        cin >> str2[i];
1
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
04.02.2014, 18:36 #3
RayPas,

Задание скиньте. А то из ваших объясниний ничего непонятно =/

C++
1
2
3
    for (i = 0; i < N; ++i)
        for (j = 0; j < M; ++j)
            cin >> str2[i][j];
Вы вводите элементы массива в этими циклами. Что у вас должно остановиться?)

Добавлено через 55 секунд
vovacreme,

Тогда уже:
C++
1
2
for (i = 0; i < N; ++i)
        cin >> str2[i];
1
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
04.02.2014, 18:38 #4
kventin_zhuk, это очепятка была
0
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
04.02.2014, 18:47  [ТС] #5
ааааа! т.е., ребят, сколько символов будет в строке ему достаточно узнать при объявлении(создании) массива?
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
04.02.2014, 18:53 #6
RayPas, выделяя память под массив символов вы указываете максимально возможное количество символов в строке. Но понятно, что строки все будут разного размера. Фактическое количество символов в строке можно узтать функцией strlen().

Оно?

Яснее формулируйте вопрос - а то не понятно ничего
0
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
04.02.2014, 18:58  [ТС] #7
kventin_zhuk, почти) Первая часть - оно) Просто вот, смотрите, получается создали массив, но и сразу сказали, что и кол-во строк и кол-во столбцов(т.е. символов в строке) будет разное кол-во. НО! когда вводим непосредственно через поток cin строку, то в цикле, что вы мне исправили - проходим только по строкам - вот это не совсем пойму, почему только цикл для строк...
извиняюсь, если не совсем доходчиво...
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
04.02.2014, 19:05 #8
RayPas, Потому что мы вводим строку целиком, а не посимвольно. Поэтому и проходим только по строкам, а не по их символам.
1
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
04.02.2014, 19:20  [ТС] #9
кстати, знаете, возможно не ступил бы так, если б на всех форумах, что искал этот вопрос - не находил бы такой способ ввода, как изначально написал...
0
04.02.2014, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 19:20
Привет! Вот еще темы с ответами:

Правильное обьявление функции, что возвращает двумерный массив символов - C++
Есть функция goUP. Как ее объявить так, чтобы она принимала двумерный массив символов и возвращала двумерный массив символов (если можно,...

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

Есть двумерный массив символов, в каждой строке находится номер, мне надо к каждой строке добавить "8029" как это сделать? - C++
Есть двумерный массив символов, в каждой строке находится номер, мне надо к каждой строке добавить &quot;8029&quot; как это сделать? Есть функция...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.