Esse quam videri
Дана задача:
читать дальше
Использовать стринговские готовые функции нельзя

Почему-то написать так и ен вышло.ю ну не удаляет,зарраза такая...
код:
Пишу на ВС 2008,так что на #include "stdafx.h" и корявое объявление main'a не смотрите,оно само автоматом так)))


@темы: программирование,помощь

Комментарии
01.10.2008 в 02:05

капелюх чарiвника
Чтобы stdafx.h не мешал жить, при создании проекта в визарде снимите галочку с "precompiled header", или лучше поставьте "empty project", и потом в solution explorer добавьте новый cpp файл в проект.

Предлагаю не удалять слова, состоящие более чем из N букв, а просто не копировать их из strIn в strOut. Моё решение вашей задачки такое:


Проверял так:


Отладкой и проверкой ввода некорректных данных не занимался, оставляю это вам;-)
01.10.2008 в 02:32

капелюх чарiвника
Lotion, а объясните, зачем в вашем коде два раза подряд "if (C>L)"? И еще у вас после обнаружения слова не происходит обнуление счётчика длины слова (то бишь "C").
01.10.2008 в 10:22

D'oh!
В символьной строке удалить все слова, состоящие более чем из N букв.

char input_string [] = "one line size zzzzzz ggjklgjl 5";
char out_string[256];

int n = 3;

for (int i=0; i< sizeof(input_string);++i)
{
int c = 0; // counter

while(i< sizeof(input_string) && input_string[i+c] !=' ')
{
++c;
}

if (c= < n)
{
for (int j=i;j < = i + c && j < sizeof(input_string);++j)
out_string[j]=input_string[j];
}

}
01.10.2008 в 10:53

D'oh!
блин, while выглядит так

while(i + с < sizeof(input_string) && input_string[i+c] !=' ')
{
++c;
}
01.10.2008 в 23:34

Esse quam videri
mistificator
спасибо большое за помощь))Просто только начинаю писать на C и,к сожалению, ещё не освоился..

Насчет двойного ифа-это я код копипастил из двух файлов своих))вот и скопировал дублем.


hauff
благодарю за решение. Как мне кажется,оно более изящно, но к сожалению, не учитывает ввод с клавиатуры и использует готовые функции,которые использовать нельзя.(sizeof). Впрочем,это легко подправить))
01.10.2008 в 23:43

капелюх чарiвника
Lotion, sizeof - это ключевое слово C, а не функция. Такое же, как for и while. Можете смело использовать.
01.10.2008 в 23:51

Esse quam videri
mistificator
о,как...спасибо,буду значит,что С так жизнь упращает))
02.10.2008 в 02:01

D'oh!
Lotion, sizeof говорит компилятору посчитать значение и вставить его туда. Т.е. это не функция, это макрос, причем абсолютно стандартный, и работает он один раз (при копиляции). А ввод с клавиатуры не делал исключительно потому что лень :)
02.10.2008 в 10:55

Esse quam videri
hauff
да я понимаю))спасибо вам)))