Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Запичкать пробела
#1
Си/С++.
// string нельзя использовать, только char
Имеем примерный код:
PHP код:
<?php 
char text
[256] = {0}; // строка с текстом
int lengthText = 0; // длина строки (text)
int newLengthText = 0; // новая длина строки
int nSpace = 0; // кол-во доб. пробелов
printf("Enter text: ");
gets(text);
// допустим получили строку = "zone game info forum";
// получаем длину строки (lengthText = 20;)
lengthText = strlen(text);
// вводим новую длину строки (newLengthText будет > lengthText && < 255);
printf("Enter newLengthText: ");
gets(newLengthText); // ввели допустим 27
nSpace = newLengthText - lengthText; // получаем кол-во пробелов, которые нужно вставить равномерно между словами в text.

Как вставить пробелы Smile
Ответ
#2
Effas Написал:Как вставить пробелы Smile

оффтоп?
Ответ
#3
Effas Написал:Си/С++.

nSpace = newLengthText - lengthText; // получаем кол-во пробелов, которые нужно вставить равномерно между словами в text. [/PHP]

Как вставить пробелы Smile
stncpy, strstr
Ответ
#4
Все таки придумал алгоритм, как забить пробелы. Уж оч долго че то думал (:
Если кому то вдруг понадобится, то ... :
PHP код:
<?php 
int nSpace
= nWord - 1, // кол-во пробелов в строке
nAdd = (newLengthString - lengthString)/nSpace, // кол-во пробелов за 1н заход вставки
residuals = (newLengthString - lengthString)% nSpace, // остаток от деления
i = 0, // счетчик строки (str(editString))
j = 0, // счетчик новой строки (str_2(newString))
counterSpace = 0, // счетчик пробелов
position = 0; // позиция для выполнения
...

if(
residuals!=0)
{
nAdd++;
residuals--;

for(
counterSpace = 0;counterSpace<nAdd;counterSpace++)
{
j++;
str_2[j] = ' ';
}

i++;
position = 0;
nAdd--;
}
Пока есть остаток, кол-во пробело будет больше на 1ну единицу(было 3, станет 4), до тех пор, пока не снесем весь остаток.
Думую подробных коммеетариев к коду не требуется (:
Ответ
#5
Че вас там мучают то не использовать string ?)
Ответ
#6
JackTheRipp Написал:Че вас там мучают то не использовать string ?)

офтоп
http://forum.zone-game.info/showthread.php?t=23295 12% скидка на рекламу бесплатно
Ответ
#7
JackTheRipp Написал:Че вас там мучают то не использовать string ?)
Препод (: (10симв)
Ответ
#8
Помню как писал программы в универе, уже хрен знает где ошибка, сидишь мучаешься, когда в конец все надоело, но надо "подогнать" под ответ... Берем какую-нить стандартную функцию типа printf, пишем prinlf(или что-нить посложнее, чтобы не впалили), потом кучу строк отсупаем и где-нить внизу функция которая подгоняет под ответSmile

//Кстати досих пор иногда шеллы так ныкаюBig Grin
Ответ
#9
ReaM Написал:Помню как писал программы в универе, уже хрен знает где ошибка, сидишь мучаешься, когда в конец все надоело, но надо "подогнать" под ответ... Берем какую-нить стандартную функцию типа printf, пишем prinlf(или что-нить посложнее, чтобы не впалили), потом кучу строк отсупаем и где-нить внизу функция которая подгоняет под ответSmile

//Кстати досих пор иногда шеллы так ныкаюBig Grin
вот это да:redlol:
Ответ
#10
А канонiчный justify написать не судьба? Делов на 5 мин
Код:
const char *justify(const char *str, const size_t len) {
if(len <= strlen(str))
    return str;
size_t justify_size = len - strlen(str);
char *result = (char*)malloc(len+1);
memset(result,0,len+1);
char *p = (char *)str;
char *end = p + strlen(str);
unsigned int *spaces = (unsigned int*)malloc(strlen(str));
unsigned int *curspace = spaces;
unsigned int num_spaces = 0;
memset(spaces,0,strlen(str));
for(;p<end;) {
  while(p<end && *p!=' ') p++;
  if(p<end)
    num_spaces++;
  while(p<end && *p==' ') {
    (*curspace)++;
    p++;
  }
  curspace++;

}
curspace = spaces;
unsigned int to_add = justify_size / num_spaces;
p = (char *) str;
char *dest = result;
for(;p<end;) {
   if(*p==' ')  {
     for(int i=0;i<*curspace+to_add;i++) {
       *dest = ' ';
       dest++;
     }
     while(p<end && *p==' ') p++;
   }    
   *dest = *p;
   p++; dest++;
}
free(spaces);
return result;
}
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 6 Гость(ей)