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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 14:15   #1
Virgil69
Новичок
Джуниор
 
Регистрация: 12.11.2010
Сообщений: 2
По умолчанию [C++]: Заменить слова, состоящие из одиночного символа 1 словом единица

Условие:Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами. Заменить слова, состоящие из одиночного символа 1 словом единица.
Virgil69 вне форума Ответить с цитированием
Старый 12.11.2010, 16:45   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

сколько?...
p51x вне форума Ответить с цитированием
Старый 12.11.2010, 17:15   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что поисковики отменили?
http://www.programmersforum.ru/showthread.php?t=77360
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2010, 14:52   #4
Razza
 
Регистрация: 12.11.2010
Сообщений: 9
По умолчанию

Добрый день
вот мой вариант, если что не верно или можно решить более "продвинуто" или правильно подскажите, потому что сам только начал изучение С++
благодарю за критику!


Код:
int _tmain(int argc, _TCHAR* argv[])
{

//объявление 2х массивов-----------------------------------------------------------------------------------------------------------------------------------------------------

	int n=255;
	char *my_cstring, *my_cstring1;
	my_cstring = new char[n];
	my_cstring1 = new char[n];

//ввод строки и запись её в 1й массив-----------------------------------------------------------------------------------------------------------------------------------------

        cout << "vvesti stroku:" << endl;
	cin.getline(my_cstring,n);

//цикл переписывает каждый элемент 1го массива во 2й, если встречается символ '1' он заменяется на слово единица (при некоторых условиях)------------------------------

        int index=0;
	for (int i=0;i<n;i++)
	{
		my_cstring1[index] = my_cstring[i];

		if ((my_cstring[i-1] == ' '  && my_cstring[i] == '1' && (my_cstring[i+1] == ' ' || my_cstring[i+1] == '\0')) || (index==0 && my_cstring[index] == '1' && my_cstring[index+1] == ' '))
		{
			my_cstring1[index]='e';
			my_cstring1[index+1]='d';
			my_cstring1[index+2]='i';
			my_cstring1[index+3]='n';
			my_cstring1[index+4]='i';
			my_cstring1[index+5]='c';
			my_cstring1[index+6]='a';
			index+=6;	
		}	

		index++;
	}

//вывод 2го массива-----------------------------------------------------------------------------------------------------------------------------------------------------------

	cout << endl << my_cstring1;
	
	
	getch();
	return 0;
}

Последний раз редактировалось Вадим Мошев; 31.01.2016 в 21:37.
Razza вне форума Ответить с цитированием
Старый 24.02.2011, 12:27   #5
Modern45
Новичок
Джуниор
 
Регистрация: 29.10.2009
Сообщений: 2
Счастье ..

Код:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <stream.h>

main()
{
 SetConsoleCP(1251);          
 SetConsoleOutputCP(1251);
 const int n = 80;
 int i, index;
 char my_string[n], my_string1[n];
 
 cout << "Введите строку:" << endl;
 gets(my_string);
 index = 0;
 
 for (i = 0; i < n; i++){
     my_string1[index] = my_string[i];
     if ((my_string[i-1] == ' ' && my_string[i] == '1' 
        && (my_string[i+1] == ' ' || my_string[i+1] == '\0')) 
        || (index==0 && my_string[index] == '1' 
        && my_string[index+1] == ' ')){
        my_string1[index]='е';
        my_string1[index+1]='д';
        my_string1[index+2]='и';
        my_string1[index+3]='н';
        my_string1[index+4]='и';
        my_string1[index+5]='ц';
        my_string1[index+6]='а';
        index+=6;	
     }	
     index++;
 }
 printf("%s", my_string1);
 getch();
}
Так лучше работает, и в конце работы не выдает ошибку ))

з.ы сам только начинаю учить язык, поэтому просто переделал данный код.
Modern45 вне форума Ответить с цитированием
Старый 31.01.2016, 21:31   #6
Jester_93
Новичок
Джуниор
 
Регистрация: 12.08.2015
Сообщений: 1
По умолчанию

Сегодня решал идентичную задачу. Брал код из темы. Немного модифицировал. Теперь при строке, состоящей из одного символа "1" или из символов "1 " корректно превращает "1" в слово "Единица".

Так-же для тех, у кого проблемы с выводом (кракозябры) - поменяйте шрифт в консоли на Lucida Console.
IDE - Microsoft Visual Studio 2015.

Код:
#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	int n = 255;
	char *init = new char[n];
	char *fin = new char[n];

	cout << "Введите строку:" << endl;
	cin.getline(init, n);

	int index = 0;
	for (int i = 0; i < n; i++)
	{
		fin[index] = init[i];

		if ((init[i] == '1') || (init[i] == '1' && (init[i + 1] == ' ')) || (init[i - 1] == ' ' && init[i] == '1' && (init[i + 1] == ' ' || init[i + 1] == '\0')) || (index == 0 && init[index] == '1' && init[index + 1] == ' '))
			{
				fin[index] = 'Е';
				fin[index + 1] = 'д';
				fin[index + 2] = 'и';
				fin[index + 3] = 'н';
				fin[index + 4] = 'и';
				fin[index + 5] = 'ц';
				fin[index + 6] = 'а';
				index += 6;
			}
		index++;
	}

	cout << fin << endl;

	system("PAUSE");
}
P.S. Спасибо Razza за решение задачи

Последний раз редактировалось Вадим Мошев; 31.01.2016 в 21:38.
Jester_93 вне форума Ответить с цитированием
Старый 31.01.2016, 22:19   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

сёдня чо, чемпионат мира по индусскому кодингу?



почему меня не пригласили?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 31.01.2016 в 23:07.
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить код символа на символ rikomono Microsoft Office Excel 1 24.02.2013 18:47
Поиск слова(символа) в строке. men232 Visual C++ 1 14.01.2012 03:31
Есть ли в тексте слова, состоящие из разных наборов букв? leha3005 Помощь студентам 0 24.12.2009 23:41
Как макросом заменить пустые ячейки словом "пусто" KOSTIK1 Microsoft Office Excel 2 19.12.2009 14:10
Найти слова, состоящие только из согласных букв и вывести их на экран Кипятилка Паскаль, Turbo Pascal, PascalABC.NET 5 29.06.2009 18:52