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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2017, 15:15   #1
boris0120000
Новичок
Джуниор
 
Регистрация: 26.11.2017
Сообщений: 1
По умолчанию В строке все "Yes" заменить на "No". Сделать сдвиг в основном "for"

Так, начну с того что я не самый опытный программист и у меня есть небольшие проблемы. В этой программе мне нужно заменить все "Yes" или "yes" на "No" или "no" соответственно. Программа работает, но имеет очень противный(на взгляд преподавателя) цикл "for" который сдвигает всю строку после преобразования. Мне нужно сделать так, что бы этот сдвиг осуществлялся по ходу выполнения основного "for", то есть как-то связан с "i". Но я не знаю как это сделать, поэтому подался сюда.




Код:
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <clocale>
using namespace std;
void f1(char *r)
{
	for (int i = 0; i < strlen(r) - 2; i++)
	{
		if (((r[i] == 'y') || (r[i] == 'Y')) && (r[i + 1] == 'e') && (r[i + 2] == 's'))
		{
			if ((r[i] == 'Y'))
			{
				r[i] = 'N';
			}
			else
			{
				r[i] = 'n';
			}
			r[i + 1] = 'o';
			for (int f = i + 2; f < 1000; f++)
			{
				r[f] = r[f + 1];
			}
		}
	}
	cout << r;
}
int main()
{
	char r[1000];
	cin.getline(r, 1000);
	f1(r);
		return 0;
}
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 26.11.2017 в 15:54.
boris0120000 вне форума Ответить с цитированием
Старый 26.11.2017, 17:15   #2
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Мозголомно, так сразу и не сообразить.
Попробуйте сделать три счётчика
1) i - счётчик прохода по строке
2) K и N - указатели на начало замещаемого слова. Один показывает позицию в исходной строке, второй в результате.

Или считайте количество замен. После каждой замены, расстояние, на которое надо переносить символы увеличивается на единицу.

Преподу + в репу, нашёл как запарить студента
СтудПом вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти в строке все заданные последовательности символов и заменить их другой последовательностью ono_tebe_nado Помощь студентам 2 23.10.2017 16:55
Заменить в каждой нечетной строке все прописные согласные буквы на заглавные Larisa_P Паскаль, Turbo Pascal, PascalABC.NET 11 26.05.2016 16:19
В строке заменить все многоточия (три точки «.») одними точками. philqa Общие вопросы C/C++ 3 30.11.2014 20:20
в строке введенной с клавиатуры заменить все X на Y Richik123 Паскаль, Turbo Pascal, PascalABC.NET 7 18.04.2012 23:07
заменить в каждой строке все трехзначные слова. Procedure (Pascal) Клетка Паскаль, Turbo Pascal, PascalABC.NET 0 18.05.2011 22:45