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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 21:35   #11
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

То есть дана строка из трех слов, надо поставить точку(посередине второго слова)?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума
Старый 31.05.2010, 22:02   #12
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

да, именно так
Curtis241291 вне форума
Старый 31.05.2010, 22:18   #13
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

сейчас говорил с преподом, он сказал там есть о чем поговорить, можете досконально объяснить калькулятор? вообщем то понятна программа, а вот мелочей, к которым могут придраться хватает)
Curtis241291 вне форума
Старый 31.05.2010, 22:28   #14
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
он сказал там есть о чем поговорить
Там - это где?
Вот код 'трех слов' - вроде работает даже на строке типа
"6еапм тьшг876е67г One 876епам тьшгнп two three." - главное, чтобы было хотя бы два слова - вставляет точку во второе английское слово(то есть считает словом последовательность из латинских букв - выделены полужирным, если не понятно):
Код:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::string;

bool isletter(char ch)
{
	return (ch>='A' && ch<='Z' || ch>='a' && ch<='z');
}

size_t find_second_word_begin(string str)
{
	size_t number_of_deleted_symbols(0);
	while(!isletter(str[0]))
	{
		str.erase(str.begin());
		number_of_deleted_symbols++;
	}
	bool first_word_was_found(false);
	for(size_t i=0; i<str.length(); i++)
	{
		if(isletter(str[i]) && !first_word_was_found) continue;
		else if(isletter(str[i]) && first_word_was_found) return i + number_of_deleted_symbols;
		first_word_was_found = true;
	}
	return str.length() + number_of_deleted_symbols - 1;   // Экстренный случай - его не должно быть
}

size_t find_word_end(string &str, size_t begin)
{
	for(size_t i=begin; i<str.length(); i++)
		if(!isletter(str[i])) return i;
	return str.length() - 1;   // Экстренный случай - его не должно быть
}

int main()
{
	string sentence;
	cout<<"Input the sentence:"<<endl;
	getline(cin, sentence);             // Полагаемся на пользователя - введено три
	size_t secw = find_second_word_begin(sentence); // слова, разделенные хотя бы
	sentence.insert((find_word_end(sentence, secw) + secw)/2, "."); // одним небуквенным
	cout<<"Result:"<<endl                                           // символом.
		<<sentence<<endl<<endl;
	system("pause");
	return 0;
}
Результат:
"6еапм тьшг876е67г One 876епам тьшгнп t.wo three."
В калькуляторе сейчас напишу основную логику.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума
Старый 31.05.2010, 22:34   #15
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

"там" тоесть в коде программы калькулятор, видать по всем функциям прогнать может
Curtis241291 вне форума
Старый 31.05.2010, 22:48   #16
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Ну, сначала мы создаем в глобальном пространстве имен для пользования всех функций как бы 'псевдо базу данных' - то есть контейнер-карту(то же, что и массив, только с некоторыми ф-ями и хранит элементы в соответсвии ключ->значение, где ключ - это слово: 'one', 'two', ..., которому соответствует его значение 1, 2, ...). Заполняем его один раз в специальной ф-ии, которую вызываем из main.
Дальше идем по коду main:
Фактически вся функциональность main заключается в вводе строки и суммирование результата до тех пор, пока не введена пустая строка.
И на каждой итерации цикла мы вызываем ф-ию count для подсчета суммы новой строки.
Ф-ия count:
Тут мы объявляем фактически псевдоним для переданного аргумента, только типа char*, для того, чтобы его принемала strtok(информация). Нам остается лишь читать этой функцией новое слово, поко оно есть - если нового слова вообще нет, то строка кончилась и возвращаем значение, проверять есть ли такое в наборе цифр - если нет, то выдавать ошибку и завершать программу - и прибовлять к результату элемент карты с ключем - этим словом.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 31.05.2010 в 22:56.
Syuf вне форума
Старый 31.05.2010, 22:51   #17
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

жду продолжение) предыдущий отрывок понятен)
Curtis241291 вне форума
Старый 31.05.2010, 22:57   #18
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Вроде как-то так.
Эта тема является очень хорошим примером реализации вот этой ссылочки.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 31.05.2010 в 23:04.
Syuf вне форума
Старый 31.05.2010, 23:15   #19
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

ага, понятно, калькулятор понял) спасибо большое) а во 2 проге экстренные случаи объясните пожалуйста)
Curtis241291 вне форума
Старый 31.05.2010, 23:18   #20
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

и так же вкратце эту прогу можно?) как с калькулятором объясните пожалуйста)
Curtis241291 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться как работает программа(сложение дробей) Superlotles Общие вопросы C/C++ 1 15.05.2010 16:05
Не могу разобраться semAz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2010 17:43
Visual Basic: не сложная программа для производства работающая с Excel, оплата труда гарантированна zxspec Помощь студентам 0 03.05.2009 01:43
Сложная программа Виктория Помощь студентам 2 03.12.2006 00:30