close

Вход

Забыли?

вход по аккаунту

?

Лаба 3

код для вставкиСкачать
Лабораторная работа №3
Разработка программ с использованием циклов.
Операторы цикла
Операторы цикла задают многократное исполнение операторов тела цикла. Определены три разных оператора цикла:
Итерационный цикл for
Стандартный вид цикла for
следующий:
for
(
инициализация_цикла
; выражение
-
условие
; список_выражений
)
тело цикла
Оператор for
имеет три главные части:
a.
инициализация_цикла –
это место, где обычно находится оператор присваивания, используемый для установки начального значения переменной цикла.
b.
выражение
-
условие –
это выражение, определяющее условие работы цикла.
c.
список_выражений –
это место где определяется характер изменения переменной цикла на каждой итерации.
Цикл for
работает до тех пор, пока условие истинно. Когда условие становится ложным, выполнение программы продолжается с оператора, следующего за циклом for
.
Пример
#include <stdio.h>
int main(void)
{
int x;
for(x=1; x<=100; x++) printf(“%d ”,x);
return
0;
}
В цикле for
проверка условия выполняется в самом начале. Это означ
ает, что код в цикле может вообще не выполняться, если условие изначально ложно.
Цикл с предусловием while
while
(
выражение
-
условие
)
тело цикла
Тело цикла
–
это или пустой, или простой, или составной оператор. Выражением
-
условием может быть любое выраже
ние, имеющее в качестве истины ненулевое значение. Цикл выполняется, пока условие истинно. Когда условие становится ложным, выполняется строка, следующая за циклом.
Цикл с постусловием do
/
while
Цикл do
/
while
проверяет условие в конце. То есть, цикл do
/
wh
ile
всегда выполняется, хотя бы один раз. Стандартный вид цикла do
/
while
следующий:
do
{
последовательность операторов
;
}
while
(
выражение
-
условие
);
Хотя в фигурных скобках нет необходимости при наличии одного оператора, они обычно используются для улучше
ния читабельности и устранения недоразумений (у читателя, а не у компилятора) по поводу цикла.
Во всех циклах тело цикла не может быть описанием или определением. Это либо отдельный оператор, который всегда завершается точкой с запятой, либо составной опе
ратор, либо блок (заключается в фигурные скобки). Оператор break
Оператор break
имеет два назначения. Первое –
это окончание работы оператора switch
. Второе –
это принудительное окончание цикла, минуя стандартную проверку условия.
Когда оператор break
в
стречается в теле цикла, цикл завершается и выполнение программы переходит на строку, следующую за циклом.
Пример
#include <stdio.h>
int main(void)
{
int x;
for(x=1; x<100; x++) {
printf(“%d ”,x);
if(x==10) break;
}
return
0;
}
Данная программа выво
дит числа от 0 до 10 включительно и заканчивает работу, поскольку break
вызывает немедленный выход из цикла, минуя условие x
<100.
Оператор continue
Работа оператора continue
чем
-
то похоже на работу оператора break
. Но вместо форсированного окончания cont
inue
переходит к следующей итерации цикла, пропуская оставшийся код тела цикла. Например, следующая процедура выводит только положительные числа:
do
{
scanf
(“%
d
”, &
x
);
if(x<0) continue;
printf(“%d “, x);
} while
(
x
!=100);
Метки и goto
Хотя goto
уже дав
но не рекомендуют использовать, он по
-
прежнему используется в программах. goto
требует наличия меток для работы. Метка –
это корректный идентификатор С, завершаемый двоеточием. Метка должна находится в той же функции, что и goto
.
Дальнейшие определения да
ются для целых чисел.
В случае, когда частное от деления a
на b
–
целое, обоз
начая его буквой q
, имеем a
=
bq
, т.е. a
представляется произведением b
на целое. Мы говорим тогда, что a
делится на b
или b
делит a
.
П
ри этом a
называем кр
атным числа b
.
Имеют место две следующие теоремы:
1.
Если a кратно
m
, m
кратно b
, то a
кратно b
.
2.
Если в равенстве вида k
+
l
+…+
n
=
p
+
q
+…
+
s
относительно всех членов
,
кроме какого
-
либо одного
, известно, что они кратны b, то и этот один член кратен b.
Разработаем п
рограмму
,
выводящую на консоль все целые неотрицательные решения уравнения x+2y=17
.
Можно было бы перебирать все неотрицательные целые х
от 0 до 17 и проверять, является ли целым числом или нет. Но, это потребует повторения цикла 18
раз. Поэтому будем перебирать все целые неотрицательные у
от 0 до целой части , что потребует меньшего числа повторений цикла, и вычислять х
по формуле . Если же ни одного решения не будет найдено выведем на к
онсоль соответствующее сообщение.
#include
<stdio.h>
int
main()
{
register
int
x, y;
bool
flag = true
;
for
(y=0; y<=17/2; y++){
printf(
"x = %d y = %d
\
n"
, 17
-
(2*y), y);
flag = false
;
}
if
(flag) printf(
"No roots
\
n"
);
getchar();
return
0;
}
Задан
ие.
Согласно таблице 1 выбрать нужный вариант и разработать программу.
Всюду ниже равенство
a
= b
(
mod
n
) означает
, что a
равно остатку от деления b
на
n
.
Таблица 1
Номер варианта
Задание
1, 16
Разработать программу, которая выводит на консоль все цел
ые неотрицательные решения уравнения 4x+2y+z=52
2, 17
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения x
2
+
y
2
=52
3, 18
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнен
ия x
3
+
2
y
2
=52
4, 19
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения 6
x+
3
y+z=5
1
5, 20
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения 12
x+
3
6
y+z=
1
44
6, 21
Разработа
ть программу, которая выводит на консоль все целые неотрицательные решения уравнения 3
x
2
+
3
6
y+z=
1
44
7, 22
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения 3
x
2
+
x
y+
y
2
=
1
44
8, 23
Разработать программу, которая выв
одит на консоль все целые неотрицательные решения уравнения 3
x
2
+
x
y+
y
2
=
225
9, 24
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения x
3
+
y
3
=
729
10, 25
Разработать программу, которая выводит на консоль все целые нео
трицательные решения уравнения x
2
-
y
2
=
51
11, 26
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения x
2
+3xy+
y
2
=
51
12, 27
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения
x
2
+
5
xy+
y
2
=
51
13, 28
Разработать программу, которая выводит на консоль все целые неотрицательные решения уравнения x
2
+3xy+
9
y
2
=
51
14, 29
Разработать программу, которая вычисляет на
и
больший общий делитель двух неотрицательных целых чисел, хотя бы одно из к
оторых не 0.
Ч
исла вводить с клавиатуры.
15, 30
Написать программу, реализующую алгоритм Ферма разложения натурального неч
тного или кратного 4 числа n
на два множителя.
Ч
исло вводить с клавиатуры.
Алгоритм Ферма:
1.
вычислить
корень квадратный из
n
,
2.
присво
ить числу x значение целой части корня квадратного из n
, y присвоить 0,
3.
если х>0,5(n+1), то n
–
простое и конец алгоритма,
4.
вычислить значение z
= x
2
–
y
2
–
n,
5.
если z
=0, то n = (x+y)(x
-
y)
и конец алгоритма, если z
<
0, то увеличить х на 1 и перейти к шагу 3, ес
ли если z
> 0, то увеличить y
на 1 и перейти к шагу 3
.
Требования к отчету
Отчет должен содержать:
1)
конспект теоретической части,
2)
лабораторное задание,
3)
блок
-
схему алгоритма,
4)
результаты выполнения программ.
Автор
maximrazor
Документ
Категория
Без категории
Просмотров
214
Размер файла
62 Кб
Теги
лаба
1/--страниц
Пожаловаться на содержимое документа