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

Лабораторная работа № 21.

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

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

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

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

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

  • массивы

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

Распечатать список учеников, фамилии которых начинаются на букву В, с указанием даты их рождения.

#include<stdio.h>

#include<conio.h>

void main()

{

const N=4; int i;

//Описание структуры «студент»

struct student { char fam[15]; //Фамилия

int grup; //№ группы

char data[15]; //Дата рождения

};

clrscr();

student stud[N]; //Массив переменных типа «студент»

for(i=0;i<N;i++) //Заполнение массива

{ printf("%d-j student",i+1);

printf("\nFamilia:"); scanf("%s",&stud[i].fam);

printf("Gruppa:"); scanf("%i",&stud[i].grup);

printf("Data:"); scanf("%s",&stud[i].data);

printf("\n");

}

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

if(stud[i].fam[0]=='B') //Вывод на экран

{ printf("\nFamilia %s ",stud[i].fam); //данных о

printf(" Gruppa %i ",stud[i].grup); //студентах,

//фамилии которых

printf(" Data %s ",stud[i].data); //начинаются с

} //буквы В.

getch();

}

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

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

1-j student

Familia:ABC

Gruppa:215

Data:01.01.1987

2-j student

Familia:BAC

Gruppa:215

Data:02.02.1986

3-j student

Familia:BCA

Gruppa:25

Data:05.05.1987

4-j student

Familia:CBA

Gruppa:25

Data:09.09.1986

Familia:BAC Gruppa:215 Data:02.02.1986

Familia:BCA Gruppa:25 Data:05.05.1987

Лабораторная работа № 22.

Простые классы. Доступ к элементам класса.

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

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

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

  • классы и объекты

  • графика в С++

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

Написать программу, демонстрирующую работу с объектами класса «треугольник».

Предусмотреть следующие методы:

- создать объект

- изобразить объект на экране

- переместить объект на плоскости

- сравнить объекты по площади.

#include<conio.h>

#include<graphics.h>

#include<iostream.h>

#include<stdlib.h>

#include<math.h>

class tri

{ int x1,x2,x3,y1,y2,y3; //koordinati vershin treugolnika

int a,b;

public:

void vvod (); //FORMIROVANIE treugolnika

void show(); //Vivod treugolnika na ekran

float PLOSH();

void sdvig();

};

void tri::vvod ()

{ x1=random(280)+140; y1=random(200)+140; //Koordinati vibirautca sluchajnim

x2=x1+random(140); y2=y1+random(140); //obrazom

x3=x1+random(140); y3=y1+random(140);

}

void tri::show()

{ // setbkcolor(BLUE);

setcolor(WHITE); //Cvet linii

line(x1,y1,x2,y2);

line(x3,y3,x2,y2); //Storoni

line(x1,y1,x3,y3);

setfillstyle(random(12),random(16)); //Stil i cvet zalivki

floodfill((x1+x2+x3)/3,(y1+y2+y3)/3,WHITE);//Tochka vnutri treugolnika

}

float tri::PLOSH() //Vichislenie S

{ float a,b,c,p,s;

a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));

c=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));

p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

return(s);

}

void tri::sdvig()

{ setcolor(WHITE);

line(x1,y1,x2,y2);

line(x3,y3,x2,y2);

line(x1,y1,x3,y3);

setfillstyle(1,16);//Zakrashivaem vnutrennost cvetom fona

floodfill((x1+x2+x3)/3,(y1+y2+y3)/3,WHITE);

setcolor(16); //Zakrashivaem linii cvetom fona

line(x1,y1,x2,y2);

line(x3,y3,x2,y2);

line(x1,y1,x3,y3);

a=random(300)-100; b=random(200)-70;

x1+=a;y1+=b;

x2+=a;y2+=b;

x3+=a;y3+=b;

}

void main()

{ int dr=DETECT,mod;

initgraph(&dr,&mod,"c:\\shron\\borlandc\\bgi");

float s1,s2;

randomize();

tri A,B;

A.vvod();

A.show();

s1=A.PLOSH();

cout<<"\nS1="<<s1;

getch();

B.vvod();

B.show();

s2=B.PLOSH();

cout<<"\nS2="<<s2;

if(s1>s2) cout<<"\nPloshad 1-go treugolnica bolshe";

if(s1<s2) cout<<"\nPloshad 2-go treugolnica bolshe";

if(s1==s2) cout<<"\nPloshadi ravni";

getch();

A.sdvig();

A.show();

getch();

B.sdvig();

B.show();

getch();

closegraph();

}

34