Официальный сайт студ.городка НГТУ
Программирование и БД » Задачка по С++ 

#1  09.03.10 23:29

Задачка по С++

Код::

#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

Вот не могу разорбраться в чём ошибка.

Offline

#2  10.03.10 02:00

$up
Профиль

Re: Задачка по С++

так ты печатай последним символ cAfter после цикла while.
а в цикле условие cBefore > cAfter + 2

Offline

#3  10.03.10 10:15

Re: Задачка по С++

Ну всё теперь работает :) Спасибо $up

Offline

Программирование и БД » Задачка по С++ 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.025 сек.
Выполнено 14 запросов.