ЖуК>>42
MAG>Не пойдет. В C++, в отличие от C, обязательно объявление функций перед использованием.
???
А какую функцию он не объявил перед использованием?
Здравствуйте, Goodkov, Вы писали:
G>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).
ЖуК>>>42
MAG>>Не пойдет. В C++, в отличие от C, обязательно объявление функций перед использованием. KO>??? KO>А какую функцию он не объявил перед использованием?
А также класс std::ostream и глобальный объект std::cout. Мало того, объект cout не введен в текущее пространство имен из std.
Кроме того, в объявлении функции main(i) в C++ обязательно указание типа i и типа возвращаемого значения, и, к тому же, это недопустимый набор аргументов.
Здравствуйте, King Oleg, Вы писали:
P>>неа, инклады подключать надо и неймспейс KO>Для printf() тоже самое.
втом то и дело что это не так!
делов том что объявление происходит при первом использовании, но оно может не соответствовать типу функции... но как раз использование в С в наших случаях соответствует прототипам, и в соглашениях о вызовах стек при вызове функции высвобождает вызывающий... так что все хорошо!
Здравствуйте, Plague, Вы писали:
P>Здравствуйте, Goodkov, Вы писали:
G>>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).
43 символа, но новая версия старая начиналась с 1, а не с нуля...
а у всех остальных начинается с единицы
Здравствуйте, Goodkov, Вы писали:
G>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).
39 символов:
i;main(){printf("%d\n",++i)-4&&main();}
main(i){printf("%d\n",i++)-4&&main(i);}
Можно конечно во втором варианте i++ убрать в main и заменить на i+1 или на ++i.
P.S. Придумал еще нечестный вариант 39 символов (при запуске нужно указать 100 любых аргументов, если получится ):
main(i){--i&&main(i)&printf("%d\n",i);}
основанный на принципе не (действие,рекурсия), а (рекурсия,действие).
Здравствуйте, AlexVinS, Вы писали:
AVS>Здравствуйте, Apapa, Вы писали: AVS>маленькое исправление AVS>... A>>39 символов: A>>
i;main(){printf("%d\n",i++)-4&&main();}
AVS>... AVS>чтобы с нуля начиналось.
Вот елки! Я наоборот старался, чтобы было от 1 до 100. Невнимательность, невнимательность...
Хотя это не существенно. Я думаю мою идею про "printf(...)-4&&..." это не портит.
Здравствуйте, Apapa, Вы писали:
A>Здравствуйте, AlexVinS, Вы писали:
AVS>>Здравствуйте, Apapa, Вы писали: AVS>>маленькое исправление AVS>>... A>>>39 символов: A>>>
i;main(){printf("%d\n",i++)-4&&main();}
AVS>>... AVS>>чтобы с нуля начиналось.
A>Вот елки! Я наоборот старался, чтобы было от 1 до 100. Невнимательность, невнимательность... A>Хотя это не существенно. Я думаю мою идею про "printf(...)-4&&..." это не портит.
Согласен идея . Для полного решения осталось доказать что короче нельзя
G>Дайте мне копилятор который все это дело откомпилирует!!! G>А то мой не хочет!!!
Компилировать нужно .c на C-шном, а не на C++-шном. В данном случае это обязательно. Я брал wcc из Watcom. Можно wcc386 оттуда же.
Какие ошибки выдает?