- •Министерство образования и науки рф
- •Рабочая программа
- •1. Информация и информатика.
- •2. Вычислительная техника.
- •3. Устройство персонального компьютера (пк).
- •4. Функции операционных систем (ос) пк.
- •5. Основы работы с операционной системой Windows xp.
- •6. Настройка операционной системы Windows xp.
- •7. Стандартные приложения Windows xp.
- •8. Компьютерные сети, Интернет, компьютерная безопасность.
- •9. Получение информации из Интернета.
- •10. Создание текстовых документов.
- •11. Введение в программирование на эвм
- •13. Лабораторные работы.
- •Задания для контрольной работы №1 задание 1. Программирование формул
- •Задание 2. Структуры выбора
- •Задание 3. Вывод на текстовый экран таблицы и графика функции
- •Задание 4. Итерационные циклы
- •Задание 5. Обработка одномерного массива
- •Задание 6. Обработка двумерного массива
- •Задание 7. Обработка символьных данных
- •Задания для контрольной работы №2 задание 8. Функции
- •Задание 10. Перечисления структуры и объединения
- •Задание 11. Работа с экраном в текстовом режиме
- •Задание 13. Файлы
Задание 10. Перечисления структуры и объединения
В результате выполнения задания должны быть разработаны алгоритм и программа управляемая с помощью меню Для организации меню необходимо использовать тип-перечисление и переключатель switch, в действиях с комплексными числами (первая часть задания) - тип-структура а для вычисления периметров площадей и объемов фигур и тел (вторая часть задания) – тип-объединение. Для фигуры вычисляются периметр и площадь, для тела – площадь поверхности и объём.
1 |
Возведение в целую степень |
Квадрат тетраэдр |
2 |
Деление двух чисел |
Круговое кольцо додекаэдр |
3 |
Умножение двух чисел |
Треугольник усеч пирамида |
4 |
Сложение и вычитание |
Трапеция клин |
5 |
Нахождение модуля числа |
Равнобочная трапеция октаэдр |
6 |
Нахождение аргумента числа |
Прав. двадцатиуг-к шар. сектор |
7 |
Извлечение квадратного корня |
Трапеция параллелепипед |
8 |
Возведение в дробную степень |
Прямоугольник шар сегмент |
9 |
Решение квадратного уравнения |
Равностор. треуг-к прав. призма |
10 |
Извлечение кубического корня |
Сегмент пятиугольная пирамида |
11 |
Возведение в квадрат |
Параллелограмм цилиндр. труба |
12 |
Возведение в куб |
Сектор круговой конус |
13 |
Возведение в целую степень |
Круговое кольцо обелиск |
14 |
Деление сопряженных чисел |
Прав.семиугольник усеч. конус |
15 |
Умножение |
Правпятиуг-кусеч. круг. цилиндр |
16 |
Умножение сопряженных чисел |
Сегмент прав. пятиуг. призма |
17 |
Нахождение модуля |
Сектор шаровой слой |
18 |
Нахождение аргумента |
Часть круг. кольца усеч тетраэдр |
19 |
Умножение трех чисел |
Прав шестиугольник шар |
20 |
Возведение в дробную степень |
Прав. десятиуг-к шар сегмент |
21 |
Извлечение квадратного корня |
Прав восьмиуг-к прямая призма |
22 |
Решение квадратного уравнения |
Прямоугольник квадратная труба |
23 |
Сложение и умножение |
Равнобедр. треугольник конус |
24 |
Извлечение кубического корня |
Параллелограмм шарсектор |
25 |
Вычитание и деление |
Квадрат бочка |
26 |
Умножение равных чисел |
Сегмент прямоугольная труба |
27 |
Деление двух чисел |
Сектор усеченный конус |
28 |
Решение квадратного уравнения |
Ромб цилиндрическая труба |
29 |
Умножение трех чисел |
Вписанный четырехуг-к конус |
30 |
Нахождение аргумента и модуля |
Сегмент шаровой сегмент |
Задание 11. Работа с экраном в текстовом режиме
Ниже дана программа которая до нажатия Esc повторяет действия: случайным образом выбирает размеры (соотношение 25х80) и положение окна на экране закрашивает его в случайный цвет помещает в него двойную рамку и текст “Привет!” со случайным цветом и включает источник звука со случайной частотой Все окна полностью размещаются на экране Задание: после нажатия Esc программа модифицируется по варианту а при повторном нажатии Esc прекращает свою работу
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
char text[]="Привет!";
unsigned int textlen=7, //размер текста
pause=500, //задержка в мсек
maxx=80, maxy=25, //гориз. и верт. размеры экрана
x1, y1, x2, y2, background, color, setblink, freq;
void doubleframe(); //функция формирования двойной рамки
void main()
{
unsigned int minlen;
minlen=textlen+6; //минимальный размер окна по горизонтали
textbackground(0);
clrscr();
do{ //формирование окна
x1=1+random(maxx-minlen); //координата левого верхнего угла
x2=minlen+random(maxx-x1-minlen);//горизонтальный размер окна
y2=x2*maxy/maxx; //вертикальный размер окна
y1=1+random(maxy-y2); //координата левого верхнего угла
window(x1,y1,x1+x2-1,y1+y2-1);
background=random(8); //цвет фона
color=random(16); //цвет символов
setblink=random(2); //мигание
textbackground(background);
clrscr();
textcolor(color+setblink*128);
gotoxy((x2-textlen)/2+1,(y2-1)/2+1);
cout<<text;
doubleframe();
switch (background){ //частота звука связывается с цветом фона
case 0: freq=262;break; //До
case 1: freq=294;break; //Ре
case 2: freq=330;break; //Ми
case 3: freq=349;break; //Фа
case 4: freq=392;break; //Соль
case 5: freq=440;break; //Ля
case 6: freq=494;break; //Си
case 7: freq=524;break;}//До
sound(freq);
delay(pause);
nosound();
}while(!kbhit()); //цикл до нажатия клавиши
window(1,1,80,25); //полный размер экрана
textbackground(0);
textcolor(7);
clrscr();
}
void doubleframe() //формирование двойной рамки
{
int i;
gotoxy(2,1);
cout<<'╔'; //левый верхний угол рамки
for(i=3;i<=x2-2;i++)cout<<'═'; //верхняя часть рамки
cout<<'╗'; //правый верхний угол рамки
for(i=2;i<=y2-1;i++){
gotoxy(2,i);cout<<'║'; //боковые
gotoxy(x2-1,i);cout<<'║';} //части рамки
gotoxy(2,y2);cout<<'╚'; //левый нижний угол рамки
for(i=3;i<=x2-2;i++)cout<<'═'; //нижняя часть рамки
cout<<'╝'; //правый нижний угол рамки
}
Окно всегда находится в центре экрана
Окно из левого нижнего угла экрана движется в правый верхний угол экрана а затем скачком перемещается в левый нижний угол
Окно из правого нижнего угла экрана движется в левый верхний угол экран, а затем движется обратно.
Цвета фона не должен совпадать с цветом рамки и текста
Текст из правого нижнего угла окон движется в левый верхний, а затем скачком – обратно.
Текст заключить в одинарную рамку если цвет фона совпадет с цветом текста
Окно из центра экрана движется в левый нижний угол экрана а затем - обратно
Цвет символов изменяется по задаваемому закону
Задать закон изменения площади окна
Задать законы изменения цвета фона и цвета рамки
Окно находится в верхней половине экрана и движется справа налево а затем скачком - обратно
Связать законы изменения цвета фона и цвета символов
Окно находится в нижней половине экрана и движется слева направо а затем - обратно
Текст случайным образом перемещается в окне
В окне находятся два удаляющихся друг от друга текста Достигнув границ окна они соединяются
Размер строки с текстом изменяется пропорционально размеру окна по горизонтали
В окне находятся два приближающихся друг к другу текста Соединившись раздвигаются до границ окна
В каждый момент времени на экране видны только два окна
Цвет текста не изменяется и текст всегда виден
Вид рамки определяется цветом символов текста
Окно располагается в левой половине экрана и движется сверху вниз а затем обратно
Окно располагается в правой половине экрана и движется снизу вверх а затем обратно
Текст движется вдоль рамки
Текст движется по диагонали внутри окна а затем обратно
Окно движется по прямой со случайным наклоном Достигнув границы окна движется обратно по другой прямой с другим случайным наклоном
Направления движения окна и текста в окне противоположны
Окно перемещается по вертикали а текст - по горизонтали
На экране только два окна: одно - в левой части экрана другое - в правой
Цвет рамки и цвет символов изменяются по разным законам
Цвет рамки определяется размером окна по вертикали
ЗАДАНИЕ 12. РАБОТА С ЭКРАНОМ В ГРАФИЧЕСКОМ РЕЖИМЕ
Написать программу которая строит графики функции y=f(x,a) на интервале c x d аргумента x при значениях параметра a, взятых из интервала e a f отрисовывает сетку и оси, обозначает и оцифровывает оси снабжает графики пояснениями (выражение для функции, значений параметра с указанием связи с соответствующей кривой) и удовлетворяет требованию наиболее полного использования экрана.
N |
y = f (x,a) |
c |
d |
e |
f |
1 |
y = sin(3x)/(a+x) |
0 |
|
0 |
3 |
2 |
y = cos(2x)/(a+x) |
0 |
|
1 |
4 |
3 |
y = cos(3x)/ (ax2+1) |
0 |
|
0 |
4 |
4 |
y = (1+ax)2/(1+x2) |
-10 |
10 |
-5 |
5 |
5 |
y = ax2+3x-1 |
-2 |
1 |
0 |
4 |
6 |
y = (ax/2)sin(3x) |
0 |
3/2 |
1 |
3 |
7 |
y = exp(-ax/2)sin(3x) |
0 |
3/2 |
1 |
5 |
8 |
y = (1-exp(-ax))sin(2x) |
0 |
3/2 |
0 |
3 |
9 |
y = 2x2-ax-1 |
-1 |
2 |
0 |
2 |
10 |
y = exp(-ax/2)cos(3x) |
0 |
2 |
1 |
3 |
11 |
y = exp(-x/2)/(1-a sin(3x)) |
0 |
|
0.5 |
2 |
12 |
y = (1-exp(-ax))sin(3x) |
0 |
3/2 |
0 |
3 |
13 |
y = exp(-ax/2)sin(2.5x) |
0 |
3 |
0 |
2 |
14 |
y = exp(-ax2/2)cos(1.5x) |
0 |
|
0 |
2 |
15 |
y = x2+ax+3 |
-1 |
3 |
0 |
3 |
16 |
y = (x/a)2exp(2(1-x/a))sin(2x) |
0 |
3 |
2 |
7 |
17 |
y = (x/3) a exp(a(1-x/3))sin(2x) |
0 |
3 |
1 |
3 |
18 |
y = ax2-5x+1 |
0 |
6 |
0 |
3 |
19 |
y = ax3-x2+3x-2 |
1 |
5 |
0 |
2 |
20 |
y = x a exp(a(1-x))sin(2x) |
0 |
2 |
0 |
3 |
21 |
y = -ax2-5x+a |
-10 |
10 |
0 |
10 |
22 |
y = (1-exp(-ax))sin(x)+x a |
0 |
6 |
0.5 |
2 |
23 |
y = (x/2) a exp(a(1-x/2))sin(2x) |
0 |
4 |
1 |
3 |
24 |
y = exp(ax) (1+x2) |
0 |
10 |
0 |
0.5 |
25 |
y = sin(2x)/(a-sin(2x)) |
0 |
|
0 |
4 |
26 |
y = (1-exp(-x/a))cos(1.5x) |
0 |
2 |
1 |
5 |
27 |
y = (exp(-ax)-1)sin(2x+0.5) |
0 |
|
0 |
2 |
28 |
y = (x/2) a exp(a(1-x/2))sin(2x) |
0 |
3 |
1 |
5 |
29 |
y = arctg(ax)+exp(ax)cos(x) |
0 |
3 |
0.5 |
2.5 |
30 |
y = x arctg(x)+a - x |
0 |
3 |
1 |
3 |
Пример
//Вывод на экран семейства кривых y=exp(-k*x)*sin(x),
//где 0 x 4 k=0.1*j, j=0,..,5;
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
#include<math.h>
#include<graphics.h>
void init_graph() //функция инициализации графического режима
{ int gr_driver, //графический драйвер
gr_mode, //графический режим
er_code; //переменная для значения ошибки
gr_driver=DETECT; //автораспознавание драйвера
initgraph(&gr_driver,&gr_mode,"c:\\bc31\\bgi");
er_code=graphresult();
if(er_code!=grOk) //.., то произошла ошибка
{cout<<"Ошибка инициализации графики:"<<grapherrormsg(er_code);
exit(1);}
}
void main()
{ int i,j,
x0,y0, //начало координат
dx,dy; //шаги для сетки и оцифровки по осям X и Y
double x,y, //текущие значения аргумента и функции
k=0.1; //коэффициент в экспоненте функции
clrscr();
init_graph();
x0=20; y0=getmaxy()/2; //инициализация начала координат
setbkcolor(0);
dx=(getmaxx()-40)/4;
dy=(y0-20)/2;
setcolor(15);
for(i=0;i<=4;i++) //отрисовка сетки
{line(x0,20+i*dy,getmaxx()-20,20+i*dy);
line(x0+i*dx,20,x0+i*dx,getmaxy()-20);}
setlinestyle(0,0,3); //отрисовка осей,
// линия рисования – сплошная, в 3 пикселя толщиной
setcolor(2);
line(x0,20,x0,getmaxy()-20);
line(x0,y0,getmaxx()-20,y0);
settextstyle(0,0,2);
moveto(getmaxx()-30,y0-5);
settextjustify(RIGHT_TEXT,BOTTOM_TEXT);
//обозначение оси X слева и выше от указанной выше точки
outtext("x");
moveto(x0+5,20);
settextjustify(LEFT_TEXT,TOP_TEXT);
//обозначение оси Y справа и ниже от указанной выше точки
outtext("y");
settextjustify(CENTER_TEXT,TOP_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
setcolor(15);
for(i=0;i<5;i++)
{moveto(x0+i*dx,getmaxy()-20);
//оцифровка оси X по центру и ниже указываемых точек
switch(i)
{case 0: {outtext("0"); break;}
case 1: {outtext("M_PI"); break;}
case 2: {outtext("2M_PI"); break;}
case 3: {outtext("3M_PI"); break;}
case 4: {outtext("4M_PI"); break;}}
}
settextjustify(RIGHT_TEXT,CENTER_TEXT);
//оцифровка оси Y слева по центру от указанных ниже точек
settextstyle(DEFAULT_FONT,VERT_DIR,1);
setcolor(15);
for(i=0;i<5;i++)
{moveto(x0-5,20+i*dy);
switch(i)
{case 0: {outtext("1.0"); break;}
case 1: {outtext("0.5"); break;}
case 2: {outtext("0.0"); break;}
case 3: {outtext("-0.5"); break;}
case 4: {outtext("-1.0"); break;}}
}
getch();
setlinestyle(0,0,3);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
for(j=0;j<=5;j++) //отрисовка семейства кривых
{moveto(x0,y0); //начальная точка кривых
setcolor(15-j); //установка цвета кривой
for(i=1;i<getmaxx()-40;i++) //отрисовка кривой
{x=i*4*M_PI/(getmaxx()-40);
y=exp(-k*j*x)*sin(x);
lineto(x0+i,y0-int(y*220));}
//вывод значения параметра функции на поле графиков
moveto(x0+dx/2,y0+20*(j+1));
switch(j)
{case 0: {outtext("k=0.0"); break;}
case 1: {outtext("k=0.1"); break;}
case 2: {outtext("k=0.2"); break;}
case 3: {outtext("k=0.3"); break;}
case 4: {outtext("k=0.4"); break;}
case 5: {outtext("k=0.5"); break;}}
getch();}
//вывод выражения функции на поле графиков
moveto(x0+3*dx/2,20+dy/2);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtext("y=exp(-kx)*sin(x)");
getch();
closegraph(); //графический режим закрыт
}