[ЗАДАЧА] Выравнивание столбцов
|
|
TEIN
|
Дата: Среда, 29.05.2013, 15:30:39 | Сообщение # 1 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
Допустим есть 4 строки Код new String:String_1[] = "123", String:String_2[] = "1324", String:String_3[] = "12345", String:String_4[] = "123456"; При старте плагина, показывать два столбца, один стоблец, сами строки, а второй - длина строки Примерно так: Код Строка: Длина строки 1. 123 3 2. 1234 4 3. 12345 5 4. 123456 6 То есть задача выровнять столбцы Чтобы не получилось так Код Строка: Длина строки 1. 123 3 2. 1234 4 3. 12345 5 4. 123456 6
|
|
| |
NANO_VIRUS
|
Дата: Среда, 29.05.2013, 17:07:29 | Сообщение # 2 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
Код public OnPluginStart() { new String:String_1[] = "123", String:String_2[] = "1324", String:String_3[] = "12345", String:String_4[] = "123456"; PrintToServer("Строка: Длина строки\n%s %d\n%s %d\n%s %d\n%s %d", String_1, strlen(String_1), String_2, strlen(String_2), String_3, strlen(String_3), String_4, strlen(String_4)); }
Сообщение отредактировал NANO_VIRUS - Среда, 29.05.2013, 17:10:42 |
|
| |
Scarface_slv
|
Дата: Среда, 29.05.2013, 18:24:51 | Сообщение # 3 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Код public OnMapStart() { new String:Text[4][10] = {"123", "1324", "12345", "123456"}; PrintToServer("%-10.6s %-32.31s", "String:", "StrLen:"); for (new i = 0; i < 4; i++) PrintToServer("%-10.6s %-32.31d", Text[i], strlen(Text[i])); }
Сообщение отредактировал Scarface_slv - Среда, 29.05.2013, 18:25:33 |
|
| |
TEIN
|
Дата: Четверг, 30.05.2013, 04:45:22 | Сообщение # 4 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
Длина строки нам неизвестна совсем, где-то может 1 знак, где-то 20
|
|
| |
Scarface_slv
|
Дата: Четверг, 30.05.2013, 09:59:36 | Сообщение # 5 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
?? Код new String:Text[][] = {"123", "1324", "12345", "123456"}; PrintToServer("%-10.6s %-32.31s", "String:", "StrLen:"); for (new i = 0; i < sizeof(Text); i++) PrintToServer("%-10.6s %-32.31d", Text[i], strlen(Text[i]));
|
|
| |
TEIN
|
Дата: Четверг, 30.05.2013, 10:31:24 | Сообщение # 6 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
Ну попробуй вывести строку, "12365479879874454" - сбивается
|
|
| |
TEIN
|
Дата: Четверг, 30.05.2013, 10:53:21 | Сообщение # 7 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
Как то так.
Гости не могут скачивать файлы
|
|
|
| |
NANO_VIRUS
|
Дата: Четверг, 30.05.2013, 14:01:55 | Сообщение # 8 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
а аа мой вариант?
|
|
| |
TEIN
|
Дата: Четверг, 30.05.2013, 14:11:06 | Сообщение # 9 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
Использовал таб? не подойдет
|
|
| |
NANO_VIRUS
|
Дата: Четверг, 30.05.2013, 14:23:35 | Сообщение # 10 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
а чем плох этот вариант?. Мне просто чтобы знать)
|
|
| |
TEIN
|
Дата: Четверг, 30.05.2013, 14:28:08 | Сообщение # 11 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
пробуй вместе с табом 123456789123456789 1 выравни
|
|
| |
Sallcom
|
Дата: Четверг, 02.10.2014, 11:16:03 | Сообщение # 12 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
Взял код Scarface_slv'a и добавил изменение формата вывода, так как у него было ограничение на 6 символов в исходной строке, а так же 2 столбец всегда начинался после 10 символов.
P.S. Вариант TEIN'a тоже не плох, но вручную добавлять в строку пробелы неправильно, так как есть формат вывода. Код #include <sourcemod>
public OnMapStart(){ new String:sFormat[32] = "%-X.Xs %-32.31s", String:sList[][] = {"1", "12","123", "1234", "12345", "123456", "1234567", "12345678", "123456789"}, String:sMaxStrLen[4];
for(new i = 0; i < sizeof(sList); i++) Format(sMaxStrLen, 4, "%i", StringToInt(sMaxStrLen) > strlen(sList[i]) ? StringToInt(sMaxStrLen) : strlen(sList[i]));
ReplaceString(sFormat, 32, "X", sMaxStrLen);//Заменяем X на максимальную длину строк PrintToServer(sFormat, "String:", "StrLen:"); sFormat[strlen(sFormat)-1] = 'i';//Заменяем %s на %i после вывода заголовка таблицы
for(new i = 0; i < sizeof(sList); i++) PrintToServer(sFormat, sList[i], strlen(sList[i])); }
Сообщение отредактировал Sallcom - Четверг, 02.10.2014, 11:27:20 |
|
| |