Как подсчитать колличество одинаковых символов в строке

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
qwertyuiop
Сообщения: 75
Зарегистрирован: 24 мар 2005, 11:00

Как подсчитать колличество одинаковых символов в строке

Сообщение qwertyuiop » 27 мар 2005, 18:33

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

Yurich
Сообщения: 104
Зарегистрирован: 23 фев 2004, 19:07

Сообщение Yurich » 27 мар 2005, 22:52

:) "Идеология" проста... Идешь простым циклом по строке. Считываешь очередной символ, занося его в массив (лучше всего std::map<char,int>) по след. правилу:
если такой символ уже присутствует в массиве, то просто инкриментируешь значение yourmap[yourchar], иначе заносишь его в массив с значение 1.

После этого пробегаешь по своему массиву (по желанию его можно отсортировать) и выводишь пару "ключ - значение".

Аватара пользователя
WinMain
Сообщения: 912
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Сообщение WinMain » 28 мар 2005, 09:36

Если я правильно понял, то в каждой отдельно взятой строке нужно посчитать количество букв одного конкретного символа. Здесь ничего сложного нет. Каждый символ строки сравниваешь с заданным, если он соответствует заданному символу. то переменную-счётчик увеличиваешь на 1.
Если тебе нужно сделать сводную таблицу результатов, то использование map<char, int> в данном случае выглядит несколько громоздко. проще сделать так:

Задаёшь массив результатов с нулевыми значениями:

int nRes[256] = {0};

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

Например, для символа 'N' количество X будет записано

nRes['N'] = X;

Потом циклом просматриваешь массив nRes и каждых элемент, который будет больше 0, выводишь в текст результата.

melkiy
Сообщения: 3
Зарегистрирован: 18 ноя 2004, 17:20
Контактная информация:

Сообщение melkiy » 28 мар 2005, 10:57

Код: Выделить всё

#include <iostream> 
using namespace std; 

int main() 

{ 
	char str[1000];
	cout<<"Vvedite stroku:\n";
	cin >>str;
	cout<<endl;

	int chars[256]={0};

	for(int i=0; str[i]; i++)
		chars[str[i]]++;

	for(i=0;i<256;i++)
		if(chars[i])
			cout<<"symbol '"<<char(i)<<"' vstretilsja "<<chars[i]<<" raz"<<endl;

}

Ответить