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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

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

Написал код, все работает, но такая проблема: он выводит сообщение о выводе столько раз, сколько показывает в счетчике. Как это можно исправить?
Код:
setlocale (LC_ALL, "rus");
	char str[260];
	cout << "Введите строку" << endl;
    cin>>str;
	//сколько символов в строке
	//cout << "Строка содержит " << strlen(str) << " символов" << endl;
	//алгоритм поиска
	int dl;
	dl = strlen(str);
		for (int i=0; i<dl; i++)	
		{
		int count = 0;
	for (int j=0; j<dl; j++)
	{
		if (str[i] == str[j])
			count++;
		else count = count + 0;
	}
		cout << "Символ " << str[i] << " повторяется " << count << " раз " << endl;
		
}
			
	_getch();
	return 0;
}
Fronzi вне форума Ответить с цитированием
Старый 14.03.2017, 06:52   #2
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,509
По умолчанию

Потому что ты так написал программу. Что написал, то она и выдала.

1) Что за привычка - объявлять переменные в середине блока {}? Можно - не значит, что это нужно делать.

2) Строка
else count = count + 0;
- вообще лишняя. Это код ни о чём. Знаешь, "if" без "else" бывает. советую это усвоить.

3) И если бы ты попробовал другие комбинации при тестировании - например, abcdeabcde - ты бы сам понял, что сделал и как написал алгоритм.

4) Ты перебираешь ВСЕ символы строки и КАЖДЫЙ раз считаешь, солько раз символ попадается в строке. Пять раз попался символ - пять раз программа считает, сколько этих символов в строке и пять раз выдаёт результат. Что заказал, то и получил.
Хочешь, чтобы выдавал один раз - перестрой алгоритм так, чтобы он поумней был. По-моему, это можно сделать как минимум двумя способами.
И вообще пройди курс алгоритмизации (построения алгоритмов).
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 14.03.2017, 07:34   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
1) Что за привычка - объявлять переменные в середине блока {}? Можно - не значит, что это нужно делать.
Засуньте свои такие советы туда, откуда они вылезли. Мешать компилятору оптимизировать моветон.
p51x вне форума Ответить с цитированием
Старый 14.03.2017, 09:45   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Кроме оптимизации еще и просто удобнее когда область видимости переменной минимальна и объявление как можно ближе к месту использования. Проще читать, меньше вероятность допустить ошибку.

Лучше б уж Code complete и Effective C++ 10 лет читали, чем свой С под Дос ) (в котором тоже уже давно добавили возможность объявления не только в начале блока)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.03.2017, 16:46   #5
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
в котором тоже уже давно добавили возможность объявления не только в начале блока
Ну как давно... почти 20 лет назад.
Цитата:
Сообщение от jura_k Посмотреть сообщение
Что за привычка - объявлять переменные в середине блока {}? Можно - не значит, что это нужно делать.
Вам бы поучиться немного, а не других учить, чесслово.
Croessmah вне форума Ответить с цитированием
Старый 22.03.2017, 19:01   #6
Fronzi
Пользователь
 
Регистрация: 11.03.2017
Сообщений: 23
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
По-моему, это можно сделать как минимум двумя способами.
Какими?
Fronzi вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с задачей C++ (Строки и текстовые файлы) SilverBack Общие вопросы C/C++ 0 12.12.2015 00:30
Строки,нужна помощь! Esso Общие вопросы C/C++ 4 28.11.2009 12:40
Символы и строки. Нужна помощь insi Фриланс 6 24.05.2008 20:54