0 / 0 / 0
Регистрация: 16.06.2021
Сообщений: 78
|
|
1 | |
Как составить циклическую программу с оператором if?27.09.2021, 10:51. Показов 626. Ответов 8
Метки нет (Все метки)
Задания:
Составить циклическую программу на основе оператора if для вычисления и вывода значений функции по заданному варианту. (см ниже) Формула для вычисления заданной функции z и заданного диапазона значений аргументов x задается вариантом z=cos(bx)/x, x=0,1,…..10. Параметр а или b предварительно вводятся с клавиатуры. На печать выводятся только те значения z, величина которых превышает значение a. Цикл должен быть построен с помощью условного оператора if. Значения b вычислить в программе до цикла, а значение a нужно ввести перед циклом Язык СИ.
0
|
27.09.2021, 10:51 | |
Ответы с готовыми решениями:
8
Как составить программу с оператором if Составить циклическую программу заполнения вектора Составить циклическую программу вычисления функции Y=f(xi), C++ Составить программу вычисления переменной X от х1 до х2 и Y от y1 до y2, используя вложенную циклическую структуру, |
фрилансер
5827 / 5347 / 1097
Регистрация: 11.10.2019
Сообщений: 14,287
|
|
27.09.2021, 11:04 | 2 |
никак
для этого нужно использовать for, while, do-while или (но очень-очень-очень плохой вариант) goto
0
|
0 / 0 / 0
Регистрация: 16.06.2021
Сообщений: 78
|
|
27.09.2021, 11:16 [ТС] | 3 |
Но я же ведь составлял с таким оператором программу, только вот не уверен, правильно ли.
system("cls"); printf("Цикл вычисления значений математических функции по варианту (оператор if), п.5.5\n"); // Начальные условия цикла float x = 0, a, b, step = 0.1; // Ввод границы для печати функции printf("Введите значение границы печати функции (не более 10) a: "); scanf_s("%f", &a); printf("Введите любое значение b для функции: "); scanf_s("%f", &b); printf("\n"); RETURN:; // Устанавливаем ограничение по размеру if (x <= 10) { // Проверка условия if (x != 0) { float z = (cos(b * x) / x); // Проверка значения z (больше ли а) if (z > a) // Печать на экран printf("z = %0.3f для b = %0.2f и x = %0.1f\n", z, b, x); }; // Пошагово прибавляет 0.1 x += step; goto RETURN; } printf("\n"); system("pause"); SWITCH = getchar(); goto MENU; break; }
0
|
фрилансер
5827 / 5347 / 1097
Регистрация: 11.10.2019
Сообщений: 14,287
|
|
27.09.2021, 11:25 | 4 |
DanielCort7, ну так goto же используется, а по заданию надо if
1
|
03.10.2021, 20:13 | 5 |
Прикольно препода подколол. Цикл любого вида можно развернуть в
if , но без goto в этом случае не избавиться - по любому именно этот оператор организует цикл, а if только условия входа/выхода из него...З.Ы. ни когда не задумывался об этом нюансе сцепки if goto ...
0
|
фрилансер
5827 / 5347 / 1097
Регистрация: 11.10.2019
Сообщений: 14,287
|
|
03.10.2021, 20:31 | 6 |
drfaust, я тут подумал, чисто теоретически, можно даже и без goto обойтись - рекурсией. Но стеком будет ограничено количество итераций, да и удобство с быстродействием будет ниже плинтуса
0
|
03.10.2021, 20:47 | 7 |
Да, верно. Организовать конечную рекурсию - для лабы будет сложно на том материале, что дал препод, для практики-дурость...
Но и в случае рекурсии получаем "скрытый goto" - через адрес возврата назад - так что опять - спорный вопрос о goto...
0
|
фрилансер
5827 / 5347 / 1097
Регистрация: 11.10.2019
Сообщений: 14,287
|
|
03.10.2021, 20:55 | 8 |
drfaust, if это тоже какой-нибудь jmp Который, по сути, goto
0
|
03.10.2021, 21:43 | 9 |
if ограничен. По крайней мере в Си, Си++ только ветвление, которое не подразумевает к-либо зацикливания.
Исключения - goto, рекурсия, либо средства вроде fork() - все так или иначе поддерживают передачу управления за пределы "юриспруденции" оператора if
0
|
03.10.2021, 21:43 | |