Здравствуйте! Только начала изучать Си, пока плохо его понимаю. Подскажите, как написать программку для написания арифметическое действия
Сообщение отредактировано: Провинциалка -
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| Провинциалка |
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Здравствуйте! Только начала изучать Си, пока плохо его понимаю. Подскажите, как написать программку для написания арифметическое действия
Сообщение отредактировано: Провинциалка - Прикрепленные файлы
___________________1_C_.rar ( 18.3 килобайт )
Кол-во скачиваний: 409 |
![]() ![]() |
| Провинциалка |
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Женский Реальное имя: Ольга Репутация: 2 |
Я и вправду проделала лишнюю работу. Видимо так увлеклась, что не увидела требования в конце задания. Извиняюсь.
А почему вычисленные результаты настолько отличаются один от другого, я кажется поняла, но не настолько чтобы успокоиться. Допустим в случае с float: b^2 = 9.99999905105e-09 во случае c double: b^2 = 1.00000000000000002e-08 Вроде одинаковые значения? А на каком основании компилятор посчитал значение (a+b)^2 - (a^2 + 2*a*b) = 1.0011717677116394e-08. Пересчет на калькуляторе дает значение 0,01 ! Сообщение отредактировано: Провинциалка - |
| Lapp |
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Допустим в случае с float: b^2 = 9.99999905105e-09 Эти два заначения отличаются друг от друга в восьмом знаке (я имею в виду значащие цифры), то есть на 0.00001% (я пометил красным, где начинается различие). Это и есть приблизительно точность float, так что совпадение можно считать полным.во случае c double: b^2 = 1.00000000000000002e-08 Вроде одинаковые значения? Цитата А на каком основании компилятор посчитал значение (a+b)^2 - (a^2 + 2*a*b) = 1.0011717677116394e-08. Пересчет на калькуляторе дает значение 0,01 ! Во-первых, компилятор ничего не считает (смотри, не ляпни такое на зачете - кто-то улыбнется, а кто-то может и урыть за непонимание сути). Компилятор делает программу, и программа уже считает. Такое ошибочное мнение у тебя, возможно, оттого, что ты работаешь в программной среде, которая каждый раз компилирует прогу перед запуском, потому что в ней почти всегда есть изменения в процессе отладки. Но после отладки ты можешь запускать только саму программу (скомпилированную, то есть exe-файл) без всякого компилятора, и она будет прекрасно считать, даже если компилятор стереть с диска на фик. Это все равно, что сказать, что кастрюля питательная )). Готовишь ты на плите в кастрюле (среда с компилятором), но ешь ты то, что сама в нее положила (твой программный код). И питательность твоей стряпни зависит всецело от тебя, а не от плиты и кастрюли )).Во-вторых.. Я не знаю, зачем тут вообще применять калькулятор. volvo уже говорил об этом: тут все считается в уме за доли секунды. Первая скобка - полный квадрат, вторая - два слагаемых из формулы его раскрытия. Результатом вычитания должно явиться третье слагаемое, то есть b2. При b=10-4 значение b2 будет равно 10-8. Так что первое число (1.0011717677116394e-08) с хорошей точностью правильное, а то, что ты насчитала на калькуляторе (0.01) - выброси и сделай вид, что этого никогда не было Если говорить про результирующее выражение (вар.12), то в нем должна получаться 1 при любых a и b (кроме b=0, ессно), так как в нем b2 и в числителе, и в знаменателе. Отклонение от 1 представит точность вычислений. В твоем случае входных данных происходит сложение/вычитание чисел скщественно разных порядков, при этом результирующая точность вычислений сильно падает. Таких случаев лучше стараться избегать (специальным подбором методов) либо максимально возможно увеличивать точность представления (double и т.д.). Но тут, я думаю, это сделано специально, чтоб продемонстрировать пределы точности машинных вычислений. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Провинциалка Вычисление арифметического выражения 5.04.2011 0:21
volvo А можно присоединить в другом формате (лучше в гра… 5.04.2011 0:26
Krjuger Если вы скопировали, и вырезали откуда то,то сдела… 5.04.2011 2:40
Провинциалка Ребята, извините. Я сегодня поздно вышла сайт, сей… 5.04.2011 18:55
Провинциалка Добрый вечер,Уважаемые!
Касательно моей темы:… 5.04.2011 23:06
volvo Можно, конечно. Вот, смотри. Если писать напрямую … 6.04.2011 0:11
Провинциалка 1) Спасибо огромное!
2) А значение выражения в… 6.04.2011 1:05
volvo Не поверишь. Ни первому, ни второму. Если раскрыть… 6.04.2011 3:15
Lapp Оль, пожалуйста, уважай Правила..
Название темы … 6.04.2011 9:27
TarasBer > - -m-++n
А в чём смысл подобных вопросов? На… 6.04.2011 12:54
Провинциалка Не подскажете, почему компилятор выдаёт ошибку в с… 7.04.2011 0:56
volvo Не выдает компилятор ошибки. Там же приведен резул… 7.04.2011 1:26
Провинциалка Здравствуйте! Не хотела бы пока закрывать эту … 10.04.2011 21:47
TarasBer > pow(a + b,2)
А почему не (a+b)*(a+b)?
Я не з… 11.04.2011 1:17
Провинциалка - на вас не похоже что вы чего-то можете не знать… 11.04.2011 1:44
volvo Во-первых, не 1, а 1.0000008344650269... Если ты п… 11.04.2011 2:20
Провинциалка Огромное спасибо за исчерпывающий ответ. Завтра бу… 12.04.2011 18:44
Lapp как лучше ответить преподавателю, если он спросит … 13.04.2011 1:36
volvo Я думаю, не будет лишним знать при сдаче работы, к… 13.04.2011 2:06
Провинциалка Сказать всем большое спасибо - значит ничего не ск… 13.04.2011 2:25
Lapp не успел еще Паскаль совсем выветриться. yes2:
???… 13.04.2011 2:30
Провинциалка Уважаемые! Добрый вечер!
Вот никак не полу… 23.04.2011 19:39
Lapp Не могу понять как прописать условия второго и тре… 24.04.2011 17:38
karpinsky Третий пункт, так как он записан в doc файле, комп… 24.04.2011 18:11
Провинциалка
Да, там действительно опечатка.
И вот что я сотво… 24.04.2011 18:39
-Lapp- Не знаю, правильно или нет, но работает. Как вы сч… 24.04.2011 18:49
-lapp- Ты все же узнай - может это и не ошибка, а подколк… 24.04.2011 18:53
Провинциалка Почему-то пишет ошибку здесь
24.04.2011 18:58
karpinsky Прав абсолютно: приоритет << выше, чем у опе… 24.04.2011 20:14
Lapp Прав абсолютно: приоритет << выше, чем у опе… 25.04.2011 9:35
Провинциалка Спасибо, господин karpinsky!!!
Выходит… 24.04.2011 21:14
karpinsky Не совсем. Ты не хочешь понять одной простой вещи:… 24.04.2011 22:09
Провинциалка Класс! Спасибо!
Позвольте задать ещё один … 24.04.2011 22:41
karpinsky Можно. Но реального положения дел она отражать не … 25.04.2011 0:18
Провинциалка Спасибо большое! 25.04.2011 1:30
karpinsky Как говорил один из героев фильма "Хочу в тюр… 25.04.2011 14:52
Lapp Как говорил один из героев фильма "Хочу в тюр… 25.04.2011 15:05
Провинциалка Извините что влезла в ваш диалог, просто интересно… 25.04.2011 21:54
Lapp Извините что влезла в ваш диалог, просто интересно… 26.04.2011 9:50
TarasBer > Так издревле повелось (спасибо Страуструпу), … 26.04.2011 13:44
karpinsky Хорошо, спасибо Кернигану (я не Сишник, поэтому со… 26.04.2011 14:18
TarasBer > Хорошо, спасибо Кернигану
Так корректнее. Не… 26.04.2011 14:49
Lapp > Так издревле повелось (спасибо Страуструпу), … 26.04.2011 14:56![]() ![]() |
|
Текстовая версия | 24.02.2026 7:01 |