Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2017, 16:45   #1
Fronzi
Пользователь
 
Регистрация: 11.03.2017
Сообщений: 23
По умолчанию Дана строка. Определить, какие символы и сколько раз встречаются в данной строке. C++

Как сделать алгоритм поиска символа в цикле?
Никак не дойду сам до этого, чтобы искать не определенный символ, а именно вывод каждого и подсчитать сколько раз.
Код:
setlocale (LC_ALL, "rus");
	char str[260];
	cout << "Введите строку" << endl;
    cin>>str;
	//сколько символов в строке
	std: cout << "Строка содержит " << strlen(str) << " символов" << endl;
	//алгоритм поиска
		int count = 0;
	for (int i=0; i<strlen(str); i++)
	{
	for (int j=0; j<strlen(str); j++)
	{
		if ((str[i] == str[j])&&(i!=j))
			count++;
		

	}
		}
	_getch();

Последний раз редактировалось Fronzi; 11.03.2017 в 16:52. Причина: добавить язык
Fronzi вне форума Ответить с цитированием
Старый 11.03.2017, 17:52   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я так понимаю, у этой задачи есть два решения:
- отсортировать строку и подсчитать.
- ввести массив, ну например:

Код:
#include <iostream>
using namespace std;

int main()
{
	setlocale(LC_ALL, "rus");

	char str[260] = "acfsgaatstthrhhdjffhhhkz";	

	//cout << "Введите строку" << endl;
	//cin >> str;
	
	//сколько символов в строке	
	cout << "Строка содержит " << strlen(str) << " символов" << endl;

	//алгоритм поиска
	const int n = int('z') - int('a') + 1;
	int g[n];
	for (int i = 0; i < n; i++)
	{
		g[i] = 0;
	}
	for (int i = 0; i < strlen(str); i++)
	{
		g[int(str[i]) - int('a')]++;
	}
	//вывод на экран
	for (int i = 0; i < n; i++)
	{
		if (g[i] != 0)
		{
			cout << char(int('a') + i) << " - " << g[i] << endl;
		}
	}
	system("pause");
	return 0;
}
протестируй. только я не уверен с русскими буквами (но с английскими работает). Это связано с символами ASCII в которые русские не входят, но можно поискать расширенную таблицу.... короче раскручивать тему...

- но, кажется мне, что наверно тебе хочется без рассмотрения темы "преобразования типов в с++".
Ну тогда делай так: а) создай 2-а массива (целого и char); и каждый символ (текущий символ) проверяй записан ли он (ранее) в "char[]", если уже есть тогда суммируй в целом массиве, а если не был - тогда увеличивай индекс на +1 и новое поле в "char[]". Подсказка:

0.jpg
ura_111 вне форума Ответить с цитированием
Старый 12.03.2017, 20:55   #3
Fronzi
Пользователь
 
Регистрация: 11.03.2017
Сообщений: 23
По умолчанию

Спасибо!
Fronzi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно написать программу в с++. определить длину строки и определить сколько раз встречается буква П в строке. chit Помощь студентам 4 11.07.2015 14:03
Дана строка символов. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран Алена_=))) Microsoft Office Word 1 17.06.2012 21:04
определите сколько раз в данной строке встречаются глас-ные буквы. netiv Паскаль, Turbo Pascal, PascalABC.NET 2 20.11.2011 05:08
В строке символов определить символы, которые встречаются по одному разу Andrey770 Паскаль, Turbo Pascal, PascalABC.NET 12 27.03.2011 00:08
сколько раз заданное слово встречается в данной строке pascal1994 Помощь студентам 4 04.02.2009 08:41