1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Точность представления типа float в стандартной архитектуре x86 не превышает 8 знаков
Я думаю, не будет лишним знать при сдаче работы, как рассчитывается количество значащих цифр
Начинаем с float. Для 24 бит экспонентымантиссы точность составляет [log10(224)] = 7 знаков. У двойной точности (double) - 53 бита в мантиссе, отсюда получаем 15 значащих цифр (почти 16, но все-таки до 16 чуть-чуть не дотягивает). Можно также использовать расширенную точность, (long double) с мантиссой из 64 бит, там будет уже 19 значащих цифр...
Сказать всем большое спасибо - значит ничего не сказать! Поражаюсь, как можно столько знать? А путаница в моей голове из-за того, что не успел еще Паскаль совсем выветриться.
Уважаемые! Добрый вечер! Вот никак не получается доделать программу второго задания. Не могу понять как прописать условия второго и третьего пунктов. Подскажите, пожалуйста.
Не могу понять как прописать условия второго и третьего пунктов. Подскажите, пожалуйста.
Я не совсем понимаю, что тебя затрудняет. Почему нельзя просто скопировать из задания?
Добавлено через 11 мин. а, ясно, кажется.. туплю ) Вам, похоже, не объяснили, что является результатом сравнения. В Паскале есть особый логический тип. Если ты попробуешь напечатать что-то типа 1<2, то ты увидишь на экране слово TRUE (или FALSE, если 1>2, например). Попробуй сама это сделать. В Си нет особого логического типа. Там истина выражается числом 1, а ложь - числом 0. Соответственно, если ты будешь печатать 1>2, то выйдет 0, а если -2<2, то 1. Так что просто копируй из задания (как в первом пуекте делала). Я правильно понял твой вопрос?
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
Не могу понять как прописать условия второго и третьего пунктов
Третий пункт, так как он записан в doc файле, компилироваться не будет, это нарушает синтаксис С/С++. Уточни, действительно ли там нужны все пробелы, или это опечатка в задании?
Третий пункт, так как он записан в doc файле, компилироваться не будет, это нарушает синтаксис С/С++. Уточни, действительно ли там нужны все пробелы, или это опечатка в задании?
Да, там действительно опечатка. И вот что я сотворила:
Ты все же узнай - может это и не ошибка, а подколка (я про пост karpinsky говорю) Я не обратил внимания, плдумал - это штучки ворда. Но исключить, что это нарочно, все же нельзя. karpinsky +1
Не совсем. Ты не хочешь понять одной простой вещи:
cout<<"Vvedi m\n"; cin>>m; // Ввела значение m cout<<"Vvedi n\n"; cin>>n; // Ввела значение n
n-->m++; // Вот тут начинаются проблемы. // Это - бессмыслица. Ты ничему не присваиваешь результат сравнения. // Синтаксически все правильно, но с точки зрения логики - нет. Зачем // что-то делать, и при этом результат не использовать? Но это еще не все, см. ниже почему.
А не все - потому что у того выражения, результат которого не используется, есть побочный эффект. При вего выполнении изменяется значение двух переменных. Понимаешь, к чему я клоню? Ты что-то сделала, результата не увидела, поэтому, чтоб показать результат, ты строкой ниже проделываешь ту же операцию еще раз, но теперь она производится уже с другими значениями m и n. И получается, что при некоторых данных у тебя результат первоначального сравнения, которое сделано впустую, будет отличаться от второго, которое ты пытаешься вывести на ээкран. Смотри:
допустим, n = 2 и m = 0. Сравниваем: n > m? Да, результат - истина, или ненулевое значение (скорее всего единица). Дальше производятся постфиксные операции, т.е., после того, как произведено сравнение двух чисел между собой, выполняется постфикс. Были бы ++ или -- перед переменной - был бы префиксный оператор, тогда действие производилось бы перед выполнением сравнения. Итак, после окончания выполнения строки n-->m++ значение n уменьшается на 1, значение m увеличивается на ту же единицу. Что имеем в итоге? n = 1 и m = 1. Как думаешь, в следующий раз, когда выполнится то же самое выражение, n > m будет истиной? Мне кажется, что нет. То есть, при втором выполнении результат уже неправильный. А при других исходных данных результат может стать неправильным и при 5-ом и при 10-ом выполнении выражения.
То есть, фрагмент кода должен быть таким:
cout<<"Vvedi m\n"; cin>>m; cout<<"Vvedi n\n"; cin>>n; cout<<"n-- > m++ = "<< (n-->m++) <<endl; cout << "n = " << n << " m = " << m << endl;
Все, что тебе нужно уметь объяснять в данном случае - это разницу между префиксным и постфиксным инкрементом/декрементом. То есть, ты должна знать, что сначала производится сравнение, и тольео потом - модификация переменных. И несмотря на то, что следующая строка может напечатать одинаковые значения m и n - результат сравнения может быть ложью.
С инкрементом/декрементом надо всегда "держать нос по ветру" (С), чревато ошибками.
Можно. Но реального положения дел она отражать не будет. Это будет не то значение n, которое принимало участи в строке
cout<<"m*n<n++ = " << m*n<n++ <<endl;
. Ты опять забыла о том, что после сравнения значение n увеличивается. И если добавить стоку, которую ты показала, и посмотреть, что напечатается, то можно очень сильно удивиться. Если тебе хочется выводить значение m*n - выводи его перед сравнением:
А первое задание - вроде нормально. Там надо вычислить значение, а не показать результат сравнения. Кстати, в doc опять же есть пробел, которого нет у тебя в программе, между выделенными символами: S=--m-++n; Уточни, нужен ли он. Результаты выполнения программы без этого пробела и с ним будут разными.
Прав абсолютно: приоритет << выше, чем у операций сравнения - с точки зрения компилятора получается белиберда. Вот так это видит компилятор:
(cout<<("m*n<n++ = " << m*n))<(n++ <<endl);
Упс.. моя практика на Си sucks.. Рука хотела поставить в скобочки, но, подумав, я почему-то решил, что приоритет сравнения выше. Извини, Провинциалка, и спасибо, karpinsky )
Интересно, в чем суть такой расстановки приоритетов? Если она есть, конечно.. )
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
Как говорил один из героев фильма "Хочу в тюрьму": "- В России победит здравый смысл. - Россия - она _сильнее_ здравого смысла!" (С)
Точно так же и расстановка приоритетов операций в С оказалась сильнее здравого смысла. Так издревле повелось (спасибо Страуструпу), что побитовые сдвиги более приоритетны, чем сравнения. А, поскольку приоритет операции не меняется при ее перегрузке, то теперь и вывод в поток в "плюсах" - тоже более приоритетная операция, чем сравнение.
Как говорил один из героев фильма "Хочу в тюрьму": "- В России победит здравый смысл. - Россия - она _сильнее_ здравого смысла!" (С)
Точно так же и расстановка приоритетов операций в С оказалась сильнее здравого смысла. Так издревле повелось (спасибо Страуструпу), что побитовые сдвиги более приоритетны, чем сравнения. А, поскольку приоритет операции не меняется при ее перегрузке, то теперь и вывод в поток в "плюсах" - тоже более приоритетная операция, чем сравнение.
я б никогда не допер.. но хорошо, что хоть какой-то смысл есть (хоть и не здравый)) +1
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
Извините что влезла в ваш диалог, просто интересно стало
Цитата
что побитовые сдвиги более приоритетны, чем сравнения. А, поскольку приоритет операции не меняется при ее перегрузке, то теперь и вывод в поток в "плюсах" - тоже более приоритетная операция, чем сравнение.