Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Язык Си Керниган, Ричи

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

BugFixer

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mymuss

Цитата:
только одно "но": с матлогикой мало общего... матлогика посложнее будет. как вспомню все эти теории первого порядка... жуть.

Ну хорошо, основы матлогики

Всего записей: 482 | Зарегистр. 02-08-2003 | Отправлено: 06:19 26-08-2003
S_Leha



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if (!valid)  
Что это такое?
-----------------------------------------
int x = 1;
int y = 2;
(x && y)
Как этим пользоваться? Я понимаю там: if (x == 1 && y == 2) читается как "Если х = 1 и у = 2 то произойдет то-то...", а как же: if (x && y)  
"Если х и у..."?
-----------------------------------------
   

Всего записей: 108 | Зарегистр. 02-07-2003 | Отправлено: 21:02 27-08-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
if (!valid)  

Это True/False
Принятая конвенция такова: если переменная равна нулю (битовое представление есть 000...00 (сколько бы там разрядов не было,  все нули)), то это ложь(False), всё остальное - истина (True).  Если условие внутри оператора if есть истина, то он выполняется, иначе - нет.
Таким образом...возьмем такую конструкцию:
if (valid) { ... }
Если valid есть ноль (ложь/False) то { ... } не выполнится.
Если valid не ноль (истина/True), то { ... } выполняется.
 
! - логическое отрицание (истина меняется на ложь, и наоборот), то есть
if (!valid)
Если valid есть ноль (ложь) то { ... }  выполнится.
Если valid не ноль, то { ... } не выполнится.
 

Цитата:
 (x && y)  

Сделай побитово (x && y). получишь результат, а потом опять...ноль/не ноль.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 22:50 27-08-2003
BugFixer

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
S_Leha

Цитата:
(x && y)  

Эта конструкция эквивалентна if (x != 0 && y != 0),  (x и y одновременно не равны 0) т.к. в С всякое значение, отличное от 0 есть ИСТИНА (true).
 
А ! означает отрицание.
!= не равно
 
FuzzyLogic

Цитата:
Сделай побитово (x && y). получишь результат, а потом опять...ноль/не ноль.  

А, извиняюсь, нахрена побитово???
 
&& - это вам не &    ! И не надо путать человека...

Всего записей: 482 | Зарегистр. 02-08-2003 | Отправлено: 07:25 28-08-2003 | Исправлено: BugFixer, 08:04 28-08-2003
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugFixer
Насчет алгоритма с вырезанием коментариев - по хорошему надо отслеживать еще и строки, то есть, если встретилась конструкция типа "/*", то ее началом коментария не считать.
Просто сталкивался с этим...

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 07:44 28-08-2003
BugFixer

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mickey_from_nsk

Цитата:
Насчет алгоритма с вырезанием коментариев - по хорошему надо отслеживать еще и строки, то есть, если встретилась конструкция типа "/*", то ее началом коментария не считать.  

Только в том случае, когда она встретилась внутри комментария, не важно какого, "//" или "/*". Если же не внутри, то строки никакой рояли не играют!

Всего записей: 482 | Зарегистр. 02-08-2003 | Отправлено: 08:02 28-08-2003
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugFixer
Имеется ввиду что строки не нужно анализировать

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 15:06 28-08-2003
BugFixer

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
woffer

Цитата:
Имеется ввиду что строки не нужно анализировать  

А я когда-нибудь или где-нибудь утверждал, что при разборе комментариев типа "/*"... "*/" надо разбираться с концами строк???
 
Было следующее:
3.2. Нашли комментарий типа "/*" Всё то же самое, но ищем не конец строки, а последовательность "*/" - "закрывающую скобку" При этом радостно пропускаем комментарии типа "//"и " /*" - они нас ничуть не интересуют!
 
Это верно даже для ситуации
/*
int a = 0;
...
// */

 
Несмотря на то, что "*/" стоит вроде в закомментареной строке, тем не менее, комментарий на этом закроется!

Всего записей: 482 | Зарегистр. 02-08-2003 | Отправлено: 16:03 28-08-2003
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugFixer
Да ты не нервничай, не о том речь.
Твой алгоритм, споткнется тут:
/*
strcpy(s,"*/");
*/
О том и речь.

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 16:37 28-08-2003
BugFixer

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
woffer
Понял, о чём речь
 
Добавлено

Цитата:
/*  
strcpy(s,"*/");  
*/  

Только MS VC 6.0 считает, что  
/*  
strcpy(s,"*/");  
*/

подчёркнутое уже не является комментарием, так что... если хочешь, чтоб в строке появилось "*/", пиши strcpy(s,"\*\/");    

Всего записей: 482 | Зарегистр. 02-08-2003 | Отправлено: 05:50 29-08-2003 | Исправлено: BugFixer, 15:00 29-08-2003
S_Leha



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что означает оператор sizeof?

Всего записей: 108 | Зарегистр. 02-07-2003 | Отправлено: 21:37 09-09-2003
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugFixer
чего ты все запутал Конечно не является. В общем лениво тень на плетень наводить -)
ps:

Цитата:
"\*\/"
 *;)
 
S_Leha

Цитата:
Что означает оператор sizeof?


Цитата:
  sizeof (keyword)
 __________________
Returns the size, in bytes, of the given expression or type (as
type size_t).

Возвращает в байтах, размер переданного выражения, или типа. (Возврат типа size_t)
Например
sizeof(int) == 2 ;  
sizeof(int*20) == 40 ;
 
 

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 23:13 09-09-2003
BugFixer

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
woffer

Цитата:
В общем лениво тень на плетень наводить -)  

Ну да, надо было написать:
если хочешь, чтоб в строке появилось "*/", и содержимое строки не влияло на комментарии пиши strcpy(s,"\*\/");
 
Хотя, к сути задачи это уже не относится!

Всего записей: 482 | Зарегистр. 02-08-2003 | Отправлено: 08:33 11-09-2003
S_Leha



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Упражнение 2.3. Напишите функцию htol(s), которая преобразует последовательность шестнадцатеричных цифр, начинающуюся с 0x или 0X, в соответствующее целое. Шестнадцатеричными цифрами являются символы 0...9, a...f, А...F.  
 
С помощью if'ов сделаю так:
1 Запомнить первый символ
2 Проверить второй, и если он 'X' или 'x', сравнить с первым.
3 Если первый '0' то начать последующее преобразование
   если нет, очистить переменные и идти дальше по тексту.
 
Вопрос мой состит в том, как организовать преобразование шестнадцатиричного кода?

Всего записей: 108 | Зарегистр. 02-07-2003 | Отправлено: 20:13 22-12-2003
Dimonweb1990



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А у меня такие проблемы:
 
Упражнение  1-7
    ----------------
     Напишите программу, которая копирует ввод на вывод, за-
меняя при этом каждую последовательность из одного или более
пробелов на один пробел.
 
Упражнение  1-10
    -----------------
    Напишите программу, которая будет печатать слова из фай-
ла ввода, причем по одному на строку.
 
    Упражнение  1-11
    ----------------
    Переделайте программу подсчета слов, используя лучшее
пределение "слова"; считайте, например словом последователь-
ность букв, цифр и апострофов, рачинающуюся с буквы.
 
Вот еще: мой gcc не понимает \!\! . Как с этим можно справиться?

Всего записей: 7 | Зарегистр. 12-11-2003 | Отправлено: 22:28 22-12-2003 | Исправлено: Dimonweb1990, 22:32 22-12-2003
pores

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вcех с праздником! Ничего, что я реанимировал мертвеца?
Объясните пожалуйста, зачем нужна функция afree? За alloc мне всё понятно! Но afree? Какой-то неопнятный придаток!
 
Действительно alloc как нельзя лучше справляется со своими обязанностями. Проверяет, хватает ли места? Проверяет. Указателю присваивает адрес элемента, который за этим местом следуем? Присваивает. Возвращает адрес элемента, с которого надо заполнять массив, если мы хотим сохранить в нём отрывок текста? Возвращает.
 
Что ещё нужно? Непонятно! Спасибо, ваш pores

Всего записей: 3 | Зарегистр. 07-05-2008 | Отправлено: 10:48 09-05-2008
mrrex



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
S Leha

Цитата:
А ПМ это где?

Личная почта форума. ссылка
Цитата:
Личный Ящик  
вверху страницы.
 

Цитата:
Упражнение 1-22

читаем файл как поок символов. Поскольку комментарии С допускаются только как  
блоки из /* ...*/ вычленить их очень просто. (если не принимать во внимание, что они могут быть и вложенными. Но и тогда нет проблем) С++ допускает комментарии вида //
и до конца строки.
 
между символами начала комментария /* и //, а также */ пробелов не допускается.  
 

Цитата:
Упражнение 1-19

Опять же читаем файл как символы и находим знак табуляции '/t' а в новый файл вместо найденного табула пишем нужное кол-во пробелов.

Цитата:
Упражнение 1-20

обратная задача.
 
Да, кстати. EOF - константа - сокращение от END OF FILE. Возникает при достижении конца файла, а не при ошибке ввода/вывода. Т.е. когда входной поток данных закончен и читать больше нечего.
 
 
 

Всего записей: 110 | Зарегистр. 11-12-2005 | Отправлено: 12:09 09-05-2008
pores

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущему человеку.
Я как-то писал такое упражнение по убиранию из программы комментариев. Вcё сложнее.
Если мы вычленим /* как начало комментария, то вычленим и */ как конец, безусловно. С // как началлом комментария тоже справимся, конец его найдём. Со вложенными комментариями тоже разберёмся. Но!
 
Есть случаи, когда /* будучи в тексте программы и не будучи внутри комментари, тем мне менее началом комментария не является! И это тоже нужно оговорить! И такие случаи знаете ли, усложняют написание программы. Догадываетесь, о чём я?
 
...Как же всё-таки быть с функцией afree?  
 
 

Всего записей: 3 | Зарегистр. 07-05-2008 | Отправлено: 13:07 09-05-2008 | Исправлено: pores, 13:08 09-05-2008
mrrex



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
pores
 
Примерчик... а?

Всего записей: 110 | Зарегистр. 11-12-2005 | Отправлено: 13:06 11-05-2008
pores

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Примерчик  чего?

Всего записей: 3 | Зарегистр. 07-05-2008 | Отправлено: 23:49 11-05-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Язык Си Керниган, Ричи


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru