Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы1_22.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
297.98 Кб
Скачать

Рисование геометрических тел и их сечений.

1. Цель работы

     Целью лабораторной работы является получение практических навыков в работе с функциями точечной графики в языке C++.

2. Темы для предварительной проработки

  • Функции точечной графики

3.1. Разработка алгоритма программы

Точки пересечения боковых ребер пирамиды и сечения должны быть удалены от основания пирамиды на пропорциональные расстояния. Поэтому вычислять их координаты следует из соответствующих пропорций.

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

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

void main()

{ int dr = DETECT, mod; //инициализация

initgraph(&dr, &mod, "D:\\BORLANDC\\BGI"); //графического режима

setcolor(WHITE); //цвет линий

moveto(10,300); //координаты левого нижнего угла пирамиды

lineto(180,10); //проводим линию до вершины пирамиды

lineto(300,300); //линия к правому углу основания пирамиды

setlinestyle(3,1,1); //следующая линия будет нарисована пунктиром

lineto(10,300);

setlinestyle(0,1,1); //возвращаемся к сплошным линиям

lineto(150,350);

lineto(300,300);

line(150,350,180,10);

moveto(27,271);

setlinestyle(3,1,1);

lineto(288,271);

setlinestyle(0,1,1);

lineto(153,316);

lineto(27,271);

setfillstyle(LTSLASH_FILL,GREEN);//наклонная штриховка

floodfill(100,290,WHITE); //координаты точки внутри закрашиваемой области

floodfill(200,290,WHITE);

getch(); //задержка изображения

closegraph(); //закрытие графического режима

}

3.4. Результаты работы программы     

Лабораторная работа № 16

Построение графиков функций в режиме точечной графики в С++

1. Цель работы

     Целью лабораторной работы является получение практических навыков в построении графиков в режиме точечной графики в языке C++.

2. Темы для предварительной проработки

  • Функции точечной графики

3. Пример решения задачи

Следующая программа строит график функции .

3.1. Разработка алгоритма программы

Обозначим и - математические координаты точки, а и - графические координаты. Формулы, связывающие графические и математические координаты:

; .

Выберем следующие значения: , , , .

, , , .

График строится в виде последовательности точек с математическими координатами:

, .

Шаг h выбирается минимально возможным, соответствующим шагу графической сетки: .

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

#include<dos.h>

#include<math.h>

#include<conio.h>

#include<graphics.h>

#include<stdlib.h>

void main()

{ int dr=DETECT,mod,a,b;

initgraph(&dr,&mod,"C:\\BORLANDC\\BGI"); "); //Инициализация графического

//режима

float xn,xk,yn,yk,dx,x,y,xg,yg;

int i;

xn=-12; xk=12;

yn=-9; yk=9;

x=xn;

dx=(xk-xn)/640;

setbkcolor(BLACK); //Цвет фона

setcolor(3); //Цвет координатных осей

line(0,240,640,240); //Ось Ох

line(320,0,320,480); //Ось Оу

outtextxy(335,20,"Y"); //Подписываем ось Оу

outtextxy(615,245,"X"); //Подписываем ось Ох

outtextxy(350,100,"2sin(x)exp(x/5)"); //Подписываем ось график

for(i=0;i<640;i++)

{ xg=640*(x-xn)/(xk-xn);

y=2*sin(x)*exp(x/5);

yg=480-480*(y-yn)/(yk-yn);

putpixel(xg,yg,3); //Рисование графика

x=x+dx;

delay(10);

}

getch();

closegraph(); //Закрытие графического режима

}

Лабораторная работа № 17

Работа со строками в языке С++

1. Цель работы

     Целью лабораторной работы является получение практических навыков в работе со строками и строковыми массивами в языке C++.

2. Темы для предварительной проработки

  • Операторы цикла

  • Массивы

  • Функции работы со строками

3. Пример выполнения задания

Дан текст. Напишите программу, определяю­щую процентное отношение строчных и прописных букв к обще­му числу символов в нем.

#include <string.h>

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

void main( )

{

clrscr();

char S[100],S1[100];

int i,j=0,k=0,n;

cout<<"Введите строку:";

gets(S);

n=strlen(S); //Вычисление длины строки

cout<<"\nn="<<n;

strcpy(S1,S); //Копируем строку S в строку S1

strlwr(S); //Преобразует буквы верхнего регистра в строке в соответствующие

// буквы нижнего регистра

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

if(S[i] != S1[i]) j++; //Подсчитываем число преобразованных (т.е. заглавных букв)

cout<<"\nj="<<j;

cout<<"\nЗаглавных букв "<<j*100./n<<"%";

strcpy(S,S1); //Копируем строку S1 в строку S

strupr(S1); //Преобразует буквы нижнего регистра в строке в соответствующие

// буквы верхнего регистра

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

if(S[i] != S1[i]) k++; //Подсчитываем число преобразованных (т.е. строчных букв)

cout<<"\nk="<<k;

cout<<"\nСтрочных букв "<<k*100./n<<"%";

getch();

}

Результат работы программы может выглядеть следующим образом:

Введите строку: 123abcABCD

n=10

j = 5

k = 3

Заглавных букв 50%

Строчных букв 30% .

Лабораторная работа № 18

Функции-подпрограммы в языке С++

(массив как параметр функции)

1. Цель работы

     Целью лабораторной работы является получение практических навыков в работе с вспомогательными функциями в языке C++.

2. Темы для предварительной проработки

  • Операторы цикла

  • Массивы

  • Функции - подпрограммы

3. Задания для выполнения

Составить функцию - подпрограмму обработки массива заданной размерности. Использовать эту функцию в основной программе, обращаясь к ней столько раз, сколько массивов дано в индивидуальном задании.

4. Примеры выполнения заданий

Пример 1.

Даны два массива: А(50) и В(40). Вывести на печать их наименьшие элементы.

#include<conio.h>

#include<iostream.h>

#define M 11

float min1(int L,float V[]) //Функция нахождения наименьшего элемента

// массива размерности L

{ int I;

for(I=0; I<L-1; I++)

if(V[I]<V[I+1])

V[I+1]=V[I];

return V[L-1];

}

void main()

{ float A[M],B[M],MIN1,MIN2;

int I,N,K;

cout<<"Введите размерности массивов: "<<endl;

cout<<"N="; cin>>N;

cout<<"K="; cin>>K;

for(I=0;I<N;I++)

{ cout<<"A["<<I<<"]="; cin>>A[I];

}

for(I=0;I<K;I++)

{ cout<<"B["<<I<<"]="; cin>>B[I];

}

MIN1=min1(N,A);

MIN2=min1(K,B);

cout<<MIN1<<" "<<MIN2<<endl;

getch();

}

Результат работы программы может выглядеть следующим образом:

Введите размерности массивов:

N= 4 K= 3

A[0]= 2 A[1]= 5 A[2]= -1 A[3]= 3

B[0]= 4 B[1]= 7 B[2]= 2

-1 2