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

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

14.09.2022, 15:51. Показов 2377. Ответов 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
2405 / 1935 / 763
Регистрация: 27.07.2012
Сообщений: 5,574
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
2405 / 1935 / 763
Регистрация: 27.07.2012
Сообщений: 5,574
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
2405 / 1935 / 763
Регистрация: 27.07.2012
Сообщений: 5,574
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru