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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 19:49   #11
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Все плохо =(
iCaesy вне форума Ответить с цитированием
Старый 22.10.2011, 20:19   #12
SteAlzzer
Пользователь
 
Аватар для SteAlzzer
 
Регистрация: 11.10.2011
Сообщений: 60
По умолчанию

ну смотрите
берете С=7 и И=5
отмечаете клеточками 7+5=12 ячеек. _ _ _ _ _ _ _ _ _ _ _ _
в первую и последнюю записываете С. С=5 С _ _ _ _ _ _ _ _ _ _С
Рядом с ними И. И=3 СИ_ _ _ _ _ _ _ _ИС
Рядом с И пишете С. С = 3. СИС_ _ _ _ _ _СИС

Дальше рассматриваете массив, который незаполненный. Его длина равна 6. и у вас в наличии И=3, С=3.
Повторяете все заного.
В крайние С. С = 1. С _ _ _ _С
Рядом И. И = 1. СИ _ _ИС
Ставите рядом С, как и в первом случае. Но т.к. их не хватает, то ставим одну. СИС_ИС. И закидываем оставшуюся И.
И в итоге получаете нужную последовательность.
SteAlzzer вне форума Ответить с цитированием
Старый 22.10.2011, 22:42   #13
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Интересно, сейчас попробую реализовать) спс
iCaesy вне форума Ответить с цитированием
Старый 25.10.2011, 17:27   #14
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Оживлю темку. Реализовать как писал SteAlzzer не вышло.
Придумал следующее:

Код:
program ta4ki;
uses crt;
var
s1,s2,s3:string;
f1,f2:text;
x,y:integer;
n,k,i:integer;
NewStr:string;
begin
assign (f1,'Inf_112.in');
assign (f2,'Inf_112.out');
  rewrite(f2);
 // rewrite(f1);
  reset (f1);
  read (f1,x,y);
writeln ('Vvedite ',x, ' [S]ovetskih Mawin 4erez probel ( S S S... )');
readln (s1);
writeln ('Vvedite ',y,'  [I]nomarok 4erez probel ( I I I ... )');
readln (s2);
n:=length(s1);
k:=length(s2);
writeln ('Ishodniy ryad mawin');
writeln (s1,' ',s2);
writeln ('Sortirovka');
//writeln (' ',n,' ',k);
// Na4alo sortirovki
if n<=k then
   begin
     s3:='';
     for i:=1 to 2*N do
     if odd(i) then
          begin
            s3:=s3+s1[i div 2+1];
          end
     else begin
            s3:=s3+s2[i div 2];
          end;
     s3:=s3+copy(s2,n+1,k-n);
   end
else
   begin
     s3:='';
     for i:=1 to 2*k do
     if odd(i) then
          begin
            s3:=s3+s1[i div 2+1];
          end
     else begin
            s3:=s3+s2[i div 2];
          end;
     s3:=s3+copy(s1,k+1,n-k);
   end;
Writeln('Stroka posle sortirovki: ', s3);
writeln;
//str:=(s3,Str);
//readln;
// konec
close (f1);
close (f2);
end.
То есть пока мы просто вводим x - советских машин и y - иномарок, и получаем строку в которой они просто чередуются.
Вводим 5 [С]оветских машин и 7 [И]номарок
С С С С С
И И И И И И И

Получаем:

С И С И С И С И С И И И

Интересует как добавить проверку какие из машин первые закончатся и вывести их остаток, а потом уже остаток распихать о нужным местам.

Тоесть при 5 Советских и 7 Иномарок, дойти до строки вида
С И С И С И С И С И
Остановить цикл ввиду того что Советских машин уже нет (тоесть x=0, и наоборот если x>y)
И вывести остаток Иномарок y=2 и уже их распихать.

Думаю можно как-то изменить мой цикл построения строки s3 в которой они ставятся по очереди. Просто я работал с длинной s1 и s2
Код:
n:=length(s1);
k:=length(s2);
И с помощью этих переменных делал строку s3
Код:
for i:=1 to 2*N do
     if odd(i) then
          begin
            s3:=s3+s1[i div 2+1];
          end
     else begin
            s3:=s3+s2[i div 2];
          end;
     s3:=s3+copy(s2,n+1,k-n);
А нужно как то с проверкой самих x,y, что то вроде такого:
Код:
while x>o do begin
s3:=....
dec(x);
while y>o do begin
s3:=...
dec(y);
iCaesy вне форума Ответить с цитированием
Старый 25.10.2011, 20:05   #15
SteAlzzer
Пользователь
 
Аватар для SteAlzzer
 
Регистрация: 11.10.2011
Сообщений: 60
По умолчанию

Код:
char* func1(int A, int B)
{
	char* string = new char [A+B];
	for(int i = 0; i < A+B; i++)
	{
		if(i % 2 == 0)
			string[i] = 'C';
		else
			string[i] = 'N';
	}

	return string;
};
char* func2(int A, int B)
{
	char* string = new char[A+B];

	string[0] = 'C';
	A--;

	if(A)
	{
		string[A+B] = 'C';
		A--;
	}
	if(B)
	{
		string[1] = 'N';
		B--;
	}
	if(B)
	{
		string[A+B+1] = 'N';
		B--;
	}
	if(A)
	{
		string[2] = 'C';
		A--;
	}
	if(A)
	{
		string[A+B+2] = 'C';
		A--;
	}

	if(A && B)
	{
		char* string_1 = new char[A+B];
		string_1 = func2(A, B);

		for(int i = 0; i < A+B; i++)
			string[i+3] = string_1[i];
	}

	return string;
};
char* func3(int A, int B)
{
	char* string = new char[A+B];

	string[0] = 'N';
	B--;

	if(B)
	{
		string[A+B] = 'N';
		B--;
	}
	if(A)
	{
		string[1] = 'C';
		A--;
	}
	if(A)
	{
		string[A+B+1] = 'C';
		A--;
	}
	if(B)
	{
		string[2] = 'N';
		B--;
	}
	if(B)
	{
		string[A+B+2] = 'N';
		B--;
	}

	if(A && B)
	{
		char* string_1 = new char[A+B];
		string_1 = func2(A, B);

		for(int i = 0; i < A+B; i++)
			string[i+3] = string_1[i];
	}

	return string;
};

void main()
{

	int A, B;
	cin >> A >> B;

	char* park = new char[A+B+1];

	if(A == B)
	{
		park = func1(A, B);
	}
	else if(A > B)
		if( A > 2*B)
		{
			cout << "Error";
			return;
		}
		else
		{
			park = func2(A, B);
		}
	else
		if(B > 2*A)
		{
			cout << "Error!";
			return;
		}
		else
		{
			park = func3(A, B);
		}


	park[A+B] = '\0';
	printf("%s", park);
	_getch();
	return;
};
Вот сделал на плюсах. Надеюсь, поможет разобраться)

Вот если что, программка.
Полностью не тестировал.
SteAlzzer вне форума Ответить с цитированием
Старый 26.10.2011, 00:06   #16
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Я с плюсами на вы, по этому все еще интересует вопрос.
iCaesy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести массив вещественных чисел NxM для заданной строки массива найти два самых больших числа (на C#) владислав10 Помощь студентам 1 10.04.2011 14:10
Строки в delphi. Необходим алгоритм для задачи. Destiny265 Помощь студентам 5 01.04.2011 15:59
Добавление строки или столбца в указанное место массива revaldo666 Общие вопросы C/C++ 11 28.03.2011 16:47
Нужно найти ошибку или написать алгоритм по проще! (строки) velamut Помощь студентам 3 18.06.2010 16:09
Ищем ген. Подрядчика по 1с или партнера Для участия в тендерах или для участия в коммерческих (конкурсных it-up2000 Фриланс 2 24.05.2010 11:51