Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт РГР по программированию!.doc
Скачиваний:
7
Добавлен:
20.09.2019
Размер:
1 Мб
Скачать
☆

Текст программы:

#include <conio.h>

#include <stdio.h>

#include <dos.h>

void main ()

{

int k=0,s,i;

char c;

do

{

do

{

clrscr();

printf ("vvedite den K\n");

fflush(stdin);

i=scanf("%3d",&k);

}

while ((k<1) || (k>365) || (i==0));

s=0;

s=((k-1)/7+1);

if (s%2==0) printf ("nedelya chetnaya, rabochaya\n");

else if (k%2==0) printf ("nedelya nechetnaya, chetnii den, raboch\n");

else printf ("vihodnoi\n");

printf ("vihod iz progr n ili N\n");

c=getch();

}while ((c!='n') && (c!='N'));

}

Контрольные примеры:

Выходные данные

Примечания

k=9

nedelya chetnaya, rabochaya

При верном вводе программа работает корректно

k=32

nedelya nechetnaya, chetnii den, raboch

При верном вводе программа работает корректно

k=7

vihodnoi

При верном вводе программа работает корректно

fghfg

Vvedite den k

При неверном вводе программа просит снова ввести К, т.к. стоит цикл на проверку ввода

65537

Введите к

Введённое число превышает диапазон типа Int, но программа просит снова ввести К т.к. функция Scanf в данной программе считывает только первые 3 цифры.

Задание 2:

Описание метода решения.

Для вычисления приближенного значения дифференциального выражения используется метод Эйлера (метод вычисления площади фигуры на координатной плоскости). Для этого необходимо знать начальный координаты x0 и y0, шаг по оси Х, У (для Х и У используется один и тот-же шаг- h) и количество шагов. Для вычисления необходимо начинать ход от начальных координат с шагом по оси Х и У, где х=х0. После первой итерации х поменяет свое значение на х+шаг (h), а у изменится по формуле Эйлера y=y0+h*f(xi,yi), т.е. начальному значению присвоится вновь вычисленное у0=у , следовательно на каждой итерации цикла у0, у и х будут принимать новые значения относительно старых и тем самым двигаться по координатной плоскости до конечной точки.

Блок-схема алгоритма: (стр. №9)

Описание программы.

Входные переменные:

x0 и y0 (начальные координаты) – вещественный тип

h (шаг по оси Х) – вещественный тип

n (количество шагов)- целый тип

Выходные данные:

i (номер шага) - целый тип

x(значение х с шагом h на шаге i) – вещественный тип

y(приближенное значение дифференциального выражения на шаге i) – вещественный тип

В состав программы входит следующее:

  • Блоки ввода , реализованный с помощь цикла DO WHILE, с проверкой диапазона и типа вводимых значений

{

do{

clrscr();

printf ("vvedite x0 (-20..20)\n");

fflush(stdin);

j=scanf ("%f",&x0);

}while ((x0==0) || (x0<-20) || (x0>20) || (j==0));

}

  • Блок цикла «for» с форматированным выводом «printf()» шага и значением переменных в этом шаге

{

for (i=1; i<n; i++)

{

y=y0+h*(((x0+y0)/x0));

printf ("| i=%1i,| | x=%5.2f,| | y=%5.2f|\n",i,x,y);

y0=y;

x=x+h;

}

}

  • Блок повторения программы реализован с помощью цикла «do while»:

{

printf ("vihod iz progr n ili N\n");

c=getch();

}while ((c!='n') && (c!='N'));

}