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

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

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

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

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

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

нужно написать программу, калькулятор, только складывающий числа, и числа должны быть написаны естественным языком, тоесть "odin + dva=tri" в таком духе. только сложение. прошу помочь с написанием
Curtis241291 вне форума
Старый 31.05.2010, 20:01   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Числа состоят из цифр, то есть 123 - это odin dva tri или sto dvadcat tri?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума
Старый 31.05.2010, 20:08   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

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

123 записывается как sto dvadsat tri. но такие большие цифры не нужны. до 10 максимум. и только целые числа
Curtis241291 вне форума
Старый 31.05.2010, 21:10   #5
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Ну тогда вот то, что я набросал за эти десять минут:
Код:
#include <iostream>
#include <string>
#include <map>
#include <algorithm>

using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::map;
using std::make_pair;
using std::find;

map<string, size_t> numbers;

void fill_data(void)
{
	numbers.insert(make_pair("zero",  0));
	numbers.insert(make_pair("one",   1));
	numbers.insert(make_pair("two",   2));
	numbers.insert(make_pair("three", 3));
	numbers.insert(make_pair("four",  4));
	numbers.insert(make_pair("five",  5));
	numbers.insert(make_pair("six",   6));
	numbers.insert(make_pair("seven", 7));
	numbers.insert(make_pair("eight", 8));
	numbers.insert(make_pair("nine",  9));
}

int count(string &str)
{
	char *strok = new char[str.length() + 1];
	strcpy(strok, str.c_str());
	char *word = strtok(strok, " +=");
	size_t result(0);
	for(;;)
	{
		if(!word) return result;
		if(numbers.find(string(word)) != numbers.end())
			result += numbers[string(word)];
		else return -1;
		word = strtok(0, " +=");
	}
}

int main()
{
	fill_data();
	string str;
	cout<<"Input the expression:"<<endl;
	size_t result(0);
	int str_result(0);
	for(;;)
	{
		getline(cin, str);
		if(str.empty()) break;
		str_result = count(str);
		if(str_result == -1)
		{
			cout<<"The error was found in the input."<<endl<<endl;
			system("pause");
			exit(0);
		}
		result += str_result;
	}
	cout<<"Result is "<<result<<endl<<endl;
	system("pause");
	return 0;
}
Что-то будет непонятно задавайте вопросы.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

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

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

Понятно, что для того, чтобы сделать возможность определения цифр, больших 10, т.е., например eleven = 11, вам надо только добавить их в контейнер map в функции fill_data, т.е. написать так:
Код:
void fill_data(void)
{
	// то же что и было, надо добавить:
	numbers.insert(make_pair("eleven",   11));       // ... и только!
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума
Старый 31.05.2010, 21:28   #8
Curtis241291
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 11
По умолчанию

эмм нет нет, вы немного не поняли, это другая программа уже. а та на с++ написана? с калькулятором
Curtis241291 вне форума
Старый 31.05.2010, 21:31   #9
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
эмм нет нет, вы немного не поняли, это другая программа уже. а та на с++ написана? с калькулятором
Это был комментарий к калькулятору, который написан на C++.
Что касается второй программы, сейчас посмотрю.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума
Старый 31.05.2010, 21:34   #10
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