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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 20:19   #1
AquaticSoul
Нубик в С++
Пользователь
 
Аватар для AquaticSoul
 
Регистрация: 15.12.2009
Сообщений: 42
По умолчанию Замена каждых трех символов вводимой строки (цепочек), вторым из которых является "^" последовательнос

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

//Замена каждых трех символов вводимой строки (цепочек), вторым из которых является ^, 
//последовательностью символов, коды которых убывают на 2 от первого до третьего символа цепочки; 
//вывода результата.
void main()
{
	char str[100];
	char cAfter,cBefore;
	int iIndexSymbol;
	//ввод строки
	printf("vvedite stroku simvolov i najmite ''enter'':\n");
	gets(str);
	int iLenStr=strlen(str);
//просмотр всех символов строки
	for(int i=0;i<iLenStr;i++)
	{
//если очередной символ равен ^, то
		if (str[i]=='^')
		{
//программа сохраняет символ находящийся перед ^ и сохраняет символ находящийся после ^
			cAfter=str[i+1];
			cBefore=str[i-1];
//далее следует сравнение предыдущего и последующего символа,если последующий символ больше предыдущего,программа не 
            if (cBefore>cAfter)
//предпринимает никаких действий и продолжает сканирование строки и вывод символов,
//если предыдущий символ больше последующего,
//то начинается цикл:программа вычитает из кода предыдущего символа "2" и выводит результат на экран,
			{
				while (cBefore > cAfter)
				{
					cBefore -= 2;
					if(cBefore > cAfter)
						printf("%c",cBefore);
				}
				
				if(cBefore == cAfter)
				
					i += 1;
			}
//далее программа сравнивает 
//получившийся символ и последующий,если получившийся символ больше последующего,то цикл повторяется 
//(из кода получившегося числа вычитается "2"),если получившееся число меньше или равно последующему,
//то программа продолжает сканирование строки и вывод символов
		} else
			printf("%c",str[i]);
	}
	getch();
}
Программа должна работать так:
например воодишь 8^2 должен сделать 8642
но программа работает только когда коды одинаковой чётности
а если они разной, то она почему то заменяет последний символ
например: 8^3 то выводит 8642 заместо 8643

Вот не могу разорбраться в чём ошибка.
AquaticSoul вне форума Ответить с цитированием
Старый 09.03.2010, 20:34   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Вроде работает
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
	char str[100];
	char cAfter,cBefore;
	int iIndexSymbol;
	printf("vvedite stroku simvolov i najmite ''enter'':\n");
	gets(str);
	int iLenStr=strlen(str);
	for(int i=0;i<iLenStr;i++)
	{
		if(str[i]=='^')
		{
			cAfter = str[i+1];
			cBefore = str[i-1];
			cBefore -= 2;
			while (cBefore > cAfter)
			{
				printf("%c",cBefore);
				cBefore -= 2;
			}
		}
		else printf("%c",str[i]);
	}
	getch();
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 10.03.2010, 06:34   #3
AquaticSoul
Нубик в С++
Пользователь
 
Аватар для AquaticSoul
 
Регистрация: 15.12.2009
Сообщений: 42
По умолчанию

Ozeirch, большушее спасибо
AquaticSoul вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите что обозначает "диск D:/ не является приложением win32." Ospa Windows 19 05.06.2011 21:02
Замена во вводимой строке всех повторяющихся символов их восьмеричными представлениями и вывод результата AquaticSoul Общие вопросы C/C++ 5 08.03.2010 11:51
Замена во вводимой строке всех повторяющихся символов их восьмеричными представлениями. С++ AquaticSoul Помощь студентам 4 07.03.2010 22:48
Является ли Assembler для вас "лесом дремучим"? Delpher Свободное общение 9 14.12.2007 11:32