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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2015, 23:29   #1
dark_ast
Новичок
Джуниор
 
Регистрация: 15.12.2015
Сообщений: 2
По умолчанию Замена слов на С\С++

Найти в введенном предложении числа, записанные словами, и записать их арабскими цифрами. Например: "мне восемнадцать лет" на "мне 18 лет". (только двузначные числа) помогите...
dark_ast вне форума Ответить с цитированием
Старый 15.12.2015, 23:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нифига себе задачка О_о
Это так преподы нонче развлекаются?
А предложения типа "Двое без двух четверти вдвоем давили двумя руками двойной виноград" допустимы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2015, 23:33   #3
dark_ast
Новичок
Джуниор
 
Регистрация: 15.12.2015
Сообщений: 2
По умолчанию

нет такие нельзя

я вот писал получается создал массивы. и если пользователь вводит это слово, т.е. число то прогамка выводит замену слова на цифру
Код:
#include <iostream> 
#include <string> 
 using namespace std;

	void main()
	{

		string source;
		cout<< "Enter source string: ";
		getline(cin,source);

		string twos[10] = { "ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen" };
		string ones[10] = { "zero","one","two","three","four","five","six","seven","eight","nine" };
		string tenka[10] = { "twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety" };

		for (int i = 0; i < 10; i++) {//единицы
			if (source == ones[i]) {
				cout << i << endl;
			}
		}
		for (int j = 0; j < 10; j++) {//10..19
			if (source == twos[j]) {
				cout << j + 10 << endl;
			}
		}
		for (int k = 1; k < 9; k++) {//10, 20..90
			if (source == tenka[k]) {
				cout << 10 * k + 20 << endl;
			}
		}

	}
я так понял что если пользователь ввел предложение, программа должна каждое слово сравнивать с массивами, если найдет равное, то запишет цифру

вот осуществить не знаю как, и походу придется менять тип массивов string на char

Последний раз редактировалось Stilet; 16.12.2015 в 13:44.
dark_ast вне форума Ответить с цитированием
Старый 16.12.2015, 00:02   #4
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

Цитата:
Сообщение от dark_ast Посмотреть сообщение
вот осуществить не знаю как, и походу придется менять тип массивов string на char
Зачем менять? string.c_str() возвращает const char*, преобразуешь до char* и работаешь.
Malriser вне форума Ответить с цитированием
Старый 16.12.2015, 13:55   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу порекомендовать такую замену:
Код:
// Словарь.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

string Dict[5]={"uno","duo","tres","qutro","quinto"};

string Repl(string s){
	string k=s,n;
	for(int j=0;j<5;j++ ) {
		n=to_string((_Longlong)j+1);
		for(int i=k.find(Dict[j]);i!=string::npos;i=k.find(Dict[j])) 
			k=k.replace(i,Dict[j].length(),n);
	}
	return k;
}
int _tmain(int argc, _TCHAR* argv[])
{
	string s="uno duo porosya bigalo po strasse";
	cout<<Repl(s);
	cin.get();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена слов Sofran Microsoft Office Word 2 03.03.2013 18:45
Замена слов Афанасий[vedma] Visual C++ 0 20.11.2011 10:57
Замена слов Лесная Эльфийка Помощь студентам 35 24.12.2010 16:13
замена слов sergeiqwe PHP 2 05.05.2010 19:29
замена слов lekom Общие вопросы Delphi 7 27.09.2009 23:46