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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2015, 17:48   #11
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Ну вот, например :
если я уберу st:='' , то при этом тесте:

4
9
10000
3
1000001

ответ будет такой : 99100000191000001310000
Так что st:='' нужно.
VladKB1 вне форума Ответить с цитированием
Старый 12.03.2015, 17:53   #12
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Дык ты сразу присваивай! А не складывай..
И да.. идея с 0-лями - бред
Poma][a вне форума Ответить с цитированием
Старый 12.03.2015, 17:56   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Там с больше или меньше нет проблем. Проблема когда короткая строка совпадает с началом длиной строки. Вот тут и подумать какую вперед. Учесть вариант, что в начале длиной строки несколько подряд одинаковых коротких строк, типа 23 и 2301 или 23 и 23232304
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.03.2015, 18:22   #14
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Я предлагаю так.. Иначе выйдет мука
Код:
procedure Swap(var a, b : string);
var
	t : string;
begin
	t := a;
	a := b;
	b := t
end;

function f(a, b : string) : Boolean;
begin
        f := a + b < b + a 
end;



var
	a : array [1..1000] of string;
	n, i, j : Integer;
	t : string;
begin
	ReadLn(n);
        for i := 1 to n do ReadLn(a[i]);


	for i := 1 to n-1 do
		for j := 1 to n-i do
			if f(a[j], a[j+1]) then
                                Swap(a[j], a[j+1]);

 	for i := 1 to n do
 		Write(a[i])
end.
тыц
Нашел тему..
Забавно.. Код похож

Последний раз редактировалось Poma][a; 12.03.2015 в 18:34.
Poma][a вне форума Ответить с цитированием
Старый 12.03.2015, 19:12   #15
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Дык ты сразу присваивай! А не складывай..
И да.. идея с 0-лями - бред
Про идею с нулями. Мне чего-то показалось, что всё получиться. Начал решать, понял что херня полная...

С присваиванием я чего-то очень жёстко протупил)) спасибо

Цитата:
Я предлагаю так.. Иначе выйдет мука
Код:

procedure Swap(var a, b : string);
var
t : string;
begin
t := a;
a := b;
b := t
end;

function f(a, b : string) : Boolean;
begin
f := a + b < b + a
end;



var
a : array [1..1000] of string;
n, i, j : Integer;
t : string;
begin
ReadLn(n);
for i := 1 to n do ReadLn(a[i]);


for i := 1 to n-1 do
for j := 1 to n-i do
if f(a[j], a[j+1]) then
Swap(a[j], a[j+1]);

for i := 1 to n do
Write(a[i])
end.

тыц
Нашел тему..
Забавно.. Код похож
Что ж мне эти тупые задания на голову свалились ? Грустненько, обидненько, но вам большое спасибо! Я когда на занятия приду попрошу, что бы мне объяснили как можно записать код без функций. И потом сюда скину (если у меня всё получится).
VladKB1 вне форума Ответить с цитированием
Старый 12.03.2015, 19:32   #16
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Функции остались от предыдущего варианта..
Код:
var
	a : array [1..1000] of string;
	n, i, j : Integer;
	t : string;
begin
	ReadLn(n);
        for i := 1 to n do ReadLn(a[i]);


	for i := 1 to n-1 do
		for j := 1 to n-i do
			if a[j] + a[j+1]  < a[j+1]+a[j] then begin
                                t := a[j];
                                a[j] := a[j+1];
                                a[j+1] := t
                        end;


 	for i := 1 to n do
 		Write(a[i])
end.
Poma][a вне форума Ответить с цитированием
Старый 12.03.2015, 19:47   #17
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Функции остались от предыдущего варианта..
Код:
var
	a : array [1..1000] of string;
	n, i, j : Integer;
	t : string;
begin
	ReadLn(n);
        for i := 1 to n do ReadLn(a[i]);


	for i := 1 to n-1 do
		for j := 1 to n-i do
			if a[j] + a[j+1]  < a[j+1]+a[j] then begin
                                t := a[j];
                                a[j] := a[j+1];
                                a[j+1] := t
                        end;


 	for i := 1 to n do
 		Write(a[i])
end.
Вы гений! Огромное спасибо вам!

Сравнивать сразу 2 числа... Классно продуманно, ещё раз спасибо
Хотел вам + поставить, но не разрешает

Ладно, ещё раз большое спасибо завтра протестирую, и напишу!
VladKB1 вне форума Ответить с цитированием
Старый 15.03.2015, 23:03   #18
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
Радость Конец темы

Задача прошла все тесты!
Большое спасибо Pma][e за помощь!


Код:
var
 n,i,j: integer;
 s: array [1..250] of string;
 st: string;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 readln(n);
 for i:=1 to n do readln(s[i]);

 for i:=1 to n-1 do
 for j:=1 to n-i do
 if s[j]+s[j+1] < s[j+1]+s[j] then
 begin
  st:=s[j];
  s[j]:=s[j+1];
  s[j+1]:=st;
 end;

 for i:=1 to n do write(s[i]);
end.
VladKB1 вне форума Ответить с цитированием
Старый 16.03.2015, 08:55   #19
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

//Тут было не верное решение
-----------------------------------------------
УПС...
Я вообще вторую странцу темы не увидел

Последний раз редактировалось Sibedir; 16.03.2015 в 11:26.
Sibedir вне форума Ответить с цитированием
Старый 16.03.2015, 09:18   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ромахино решение лучше Я вообще придумал рекурсивную процедуру для сравнения, если начало длинного слова совпадает с коротким. Да уж Ну а дополнять справа нулями можно вообще без цикла, прибавляя к строке c помощью StringOfChar
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.03.2015 в 09:22.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер-тайпер Сtrl Свободное общение 14 17.01.2012 07:08