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

Количество вхождений заданного символа в двумерный символьный массив

14.09.2022, 15:51. Показов 2510. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!

подскажите пожалуйста правильно ли мыслю:

Надо сделать двумерный массив где текст в строке.. и найти количество вхождений искомого символа.

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

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() {
    
    
    int n = 5;
    int m = 25;
    char **arr = new char *[n];
    char *str = "helloooo wooordddd!";
    
    
    int k=0;
    for (int i=0;i<n;i++) {
        arr[i] = new char [m];
        for (int j=0;j<m;j++) {
            arr[i] = str;
            
            cout << arr[i][j] << ' ';
            
            if(arr[i][j]=='l') {
                
                k++;
            }
            
        }
        
    cout << endl; 
        
    
    }
    
    cout << k; 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2022, 15:51
Ответы с готовыми решениями:

Количество вхождений символа в двумерный динамический массив
Приветствую! подскажите пожалуйста правильно ли понял логику? посчитали количество вхождений символа к в двумерном массиве. ...

Количество вхождений заданного символа в строку
Создадим предикат, который по строке и символу подсчитает количество вхождений этого символа в данную строку. domains i=integer ...

Найти количество вхождений заданного символа в строку
как найти количество введенного символа в строке с клавиатуры?

45
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
16.09.2022, 15:08  [ТС]
Студворк — интернет-сервис помощи студентам
т.е. мы должны изначально определить количество элементов в массиве?
и передать его в массиве для вывода т.е. так...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
 
int main() {
        
        const int n = 5;
    
     char *arr[5] = {"hello","hi mahai","world","vsem privet","i ya privet"};
    
    for (int i=0;i<n;i++) {
        
        cout <<i<<" "<<arr[i] << endl;
    }
}
но так тоже работает.. т.е. массив может сам подстроиться под количество элементов, т.е. автоматически выделить область памяти под элементы?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
 
int main() {
        
        
    
     char *arr[] = {"hello","hi mahai","world","vsem privet","i ya privet"};
    
    for (int i=0;arr[i];i++) {
        
        cout <<i<<" "<<arr[i] << endl;
    }
}
Добавлено через 1 минуту
Цитата Сообщение от Sinitsky Посмотреть сообщение
for (int i=0;arr[i];i++)
вот такой вариант видел в учебнике...
0
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
16.09.2022, 15:53
Цитата Сообщение от Sinitsky Посмотреть сообщение
т.е. мы должны изначально определить количество элементов в массиве?
Для статических массивов - да. А вам - тем более, чтобы не было соблазна вычислять размер массива через strlen или как-то ещё.
Цитата Сообщение от Sinitsky Посмотреть сообщение
массив может сам подстроиться под количество элементов, т.е. автоматически выделить область памяти под элементы?
Конечно, компилятор видит, сколько элементов оказалось в массиве. И вы тоже это знаете. Запишите это число в константу и пользуйтесь ею.
Цитата Сообщение от Sinitsky Посмотреть сообщение
но так тоже работает..
Не работает. Включите оптимизацию и всё увидите.

Цитата Сообщение от Sinitsky Посмотреть сообщение
вот такой вариант видел в учебнике...
Либо вы что-то не так поняли, либо учебник такой..

Добавлено через 6 минут
Цитата Сообщение от Sinitsky Посмотреть сообщение
C++
1
for (int i=0;arr[i];i++)
Кстати, вы бы могли объяснить, почему здесь именно такая конструкция с этим arr[i] в условии выхода из цикла? Она вполне может использоваться в реальном коде, но вот вы явно не очень понимаете, почему это здесь оказалось.
0
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
16.09.2022, 16:15  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
но вот вы явно не очень понимаете, почему это здесь оказалось.
нет не понимаю... можете объяснить?
0
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
16.09.2022, 16:42
Цитата Сообщение от Sinitsky Посмотреть сообщение
нет не понимаю... можете объяснить?
Могу, конечно. Хотя я чувствую некую меру ответственности за то, что могу объяснить не совсем корректно. И может получиться так, что лучше бы и не объяснял.

Если вкратце, то arr[i] здесь работает, потому что компилятору в каком-то смысле всё равно, что будет результатом вычисления условного выражения: всё, что не 0 он трактует как true, а всё равное 0 - как false. Поэтому такой цикл for (int i=0;arr[i];i++) будет выполняться пока arr[i] не равно нулю. Как только встретится ноль, цикл прекратится.

Это неплохо работает со строковыми литералами, потому что они все завершаются нулевым (терминальным) символом \0:
C++
1
2
3
const char* str = "qwerty";
for (int i = 0; arr[i]; ++i)
    /* ... */
Скорее всего, именно в теме про такие строки вы и видели подобное. Хотя, как видно, это оказалось плохим примером.

Но со всеми остальными массивами, в том числе и с массивами строк (не отдельной строкой, а массивом строк) такие вещи не работают, так как нулевой элемент там может как встретиться где угодно (в середине массива, в начале и т.д.), так и не встретиться вообще никогда. Т.е. цикл выйдет за пределы массива и всё сломается.
0
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
16.09.2022, 17:33  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Т.е. цикл выйдет за пределы массива и всё сломается.
т.е. лучше ограничивать цикл определенной переменной, чтобы контролировать выход массива... я так понял?

Добавлено через 44 минуты
Задолбал я Вас наверное своим тупизмом..
Простите, но есть желание разобраться и двигаться дальше в такой обширной теме как с++.

Понимаю, что если не разберусь с азами, так сказать с корнями, то нет смысла двигаться дальше.. так как можно забрести куда-то не туда, и вообще ничего не понятно будет..
0
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
16.09.2022, 21:57
Sinitsky, всё хорошо. Позже отвечу.

Добавлено через 2 часа 57 минут
Цитата Сообщение от Sinitsky Посмотреть сообщение
т.е. лучше ограничивать цикл определенной переменной, чтобы контролировать выход массива... я так понял?
Цикл надо ограничивать тем условием, которое требуется по смыслу задачи. Но.. В C++, в отличие от некоторых других языков, нет механизма, который бы следил за выходом за пределы массивов. Тут всё на совести программиста. Поэтому практически всегда рядом с массивом должна "гулять" и переменная (константа), хранящая его размер. И всегда нужно следить, чтобы очередной индекс не превысил этот размер.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2022, 21:57

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

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

Подсчитать количество вхождений заданного символа в строку.
Помогите,пожалуйста, написать программу. Подсчитать, сколько раз среди символов данной строки встречается символ &quot;+&quot; и ...

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

Посчитать количество вхождений заданного символа в строке, введённой пользователем
Дано : Пользователь вводит строку символов и искомый символ, посчитать сколько раз он встречается в строке. (С++) Вопрос: Как сделать,...


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

Или воспользуйтесь поиском по форуму:
46
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru