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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2017, 21:03   #1
Maxe
 
Регистрация: 25.01.2017
Сообщений: 9
Печаль С++ Помогите пожалуйста понять маленькую деталь в моей программе

Сразу к делу, вот моя прога:
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h> 
#include <string> 
#include <fstream> 
#include <iomanip> 
#include <stdio.h> 
#include <string.h>
#include <Windows.h>

using namespace std;

int main() {
	string str, out;
	int maxM = 0, count;
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	cout << "Введите предложение, заканчивающееся пробелом и точкой...\n";

	while (str != ".") 
	{
		cin >> str;
		count = 0;
		for (int i = 0; i < str.length(); i++)
		{
			if ((str[i] == 'м') || (str[i] == 'М')) count++;
		}

		if (count > maxM)
		{
			out = str + " ";
			maxM = count;
		}
		else if (count == maxM) out = out + str + " ";
	}
	cout << out << endl;
	_getch();
	return 0;
}
В данной программе я создаю классовые экземпляры (string-a) str и out, далее выполняю над ними примитивные действия, которые приводят к правильному результату: эта программа выводит на экран все слова с максимальным кол-вом букв "м" или "М". Возможно глупейший вопрос, но я не понимаю почему в данной строке (например) в out записывается не вся строчка вписанная пользователем в str а только одно слово из строчки ограниченное пробелами:
Код:
	out = str + " ";
или же тут
Код:
	else if (count == maxM) out = out + str + " ";
Maxe вне форума Ответить с цитированием
Старый 04.02.2017, 21:28   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А кто тебе сказал, что пользователь вводит строчку?...

На каждом шаге:
Код:
 while (str != ".") 
	{
пользователь вводит ОДНО СЛОВО (текущее слово), которое и суммируется:
Код:
out = out + str + " ";
Другими словами, получается ввод не такой:
Код:
str = "gags ghsf ghsfh j."
а такой:
Код:
1-й шаг цикла  str = "gags"
2-й шаг цикла  str = "ghsf"
3-й шаг цикла  str = "ghsfh"
4-й шаг цикла  str = "j."
Даже, если вдруг, пользователь попытается ввести (на каком-нибудь шаге цикла while) целое предложение - у него не получится (из-за этого: "cin >> str;" - принять ввод до пробела или символа конца строки, т.е. 1-о слово - т.к. символ пробел будет раньше).

Последний раз редактировалось ura_111; 04.02.2017 в 21:33.
ura_111 вне форума Ответить с цитированием
Старый 04.02.2017, 21:48   #3
Maxe
 
Регистрация: 25.01.2017
Сообщений: 9
По умолчанию

Вау, спасибо)) а я то думал класс string работает как ввод сразу строчки в его экземпляр, а он в свою очередь выполняет функции строчного массива. Получается если cin>>str вывести из конструкции while и написать его выше, то программа не будет работать корректно. Теперь все прояснилось

Только тут, кажется, должно быть 4, шага, либо я угряз в непонимании:
Код:
str = "gags ghsf ghsfh j."

1-й шаг цикла  str = "gags"
2-й шаг цикла  str = "ghsf"
3-й шаг цикла  str = "ghsfh"
4-й шаг цикла  str = " j."
Maxe вне форума Ответить с цитированием
Старый 04.02.2017, 22:16   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

1) Есть специальные функции для ввода целой строкой и присвоения переменной "string" (поищи в интернете).
2) Количество шагов не принципиально - главное принцип работы этих шагов (то, что происходит на каждом шаге).
ura_111 вне форума Ответить с цитированием
Старый 04.02.2017, 22:21   #5
Maxe
 
Регистрация: 25.01.2017
Сообщений: 9
По умолчанию

хорошо, спасибо
Maxe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите понять как исправить ошибку в программе на СИ. Pug_from_Mordor Помощь студентам 5 20.12.2014 16:51
Помогите пожалуйста с моей проблемой iamcutemonster Общие вопросы по Java, Java SE, Kotlin 0 23.11.2014 14:17
Помогите, не могу понять, как объяснить программе, что именно я от нее хочу Dead Romantic Общие вопросы C/C++ 4 03.12.2009 21:51
Помогите пожалуйста решить маленькую задачку Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 1 19.01.2009 19:54
Помогите пожалуйста не могу понять! Kosoy135 Паскаль, Turbo Pascal, PascalABC.NET 7 28.12.2007 19:08