Раздел «Язык Си».Classes1:

Классы и объекты.

 int a;
 float f;
 char z;

a, f и z - переменные. В языке С++ a, f и z - называют объекты.

Задача Classes.1

Отрезок на прямой задан началом и концом (координаты).

Нужно:

  1. вычислять длину отрезка
  2. получать координаты отрезка
  3. печатать координаты отрезка
  4. двигать отрезок в заданном направлении

Решение 1 (Длина отрезка).

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

// Создадим новый тип Line
class Line{
  public:
// атрибуты 
   int start; //атрибут start
   int finish; // атрибут finish
};

int main(){
// Создадим ОБЪЕКТ Line и назовем его a:
 Line a;
// Зададим значения атрибутов:
 a.start = 0;
 a. finish = 10;
 
 int length; // объект длина отрезка

 length = abs(a.finish - a.start);
 cout<<length<<endl;

}

Решение 2 (Длина отрезка).

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

// Создадим новый тип Line
class Line{
  public:
// атрибуты 
   int start; //атрибут start
   int finish; // атрибут finish
};

// Напишем функцию, которая вычисляет длину
int Length(Line a){
   int len;
   len = abs(a.finish - a.start);
   return len;
};

int main(){
// Создадим ОБЪЕКТ Line и назовем его a:
 Line a;
// Зададим значения атрибутов:
 a.start = 0;
 a. finish = 10;
 
 int length; // объект длина отрезка

// вызов функции
 length = Length(a);

 cout<<length<<endl;

}

Решение 4 (Печать концов отрезка).

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

// Создадим новый тип Line
class Line{
  public:
// атрибуты 
   int start; //атрибут start
   int finish; // атрибут finish
};

// Напишем функцию, которая печатает концы отрезка

void printLine(Line a){
   cout<<a.start<<" "<<a.finish<<endl;
};

int main(){
// Создадим ОБЪЕКТ Line и назовем его a:
 Line a;
// Зададим значения атрибутов:
 a.start = 0;
 a. finish = 10;
 
// печать концов отрезка
 printLine(a);

}

Решение 5 (Получение концов отрезка).

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

// Создадим новый тип Line
class Line{
  public:
// атрибуты 
   int start; //атрибут start
   int finish; // атрибут finish
};

// Напишем функцию, получает концы отрезка
// Функция вернет Line

Line volumeLine(){
// Создадим временный объект tmp
   Line tmp;
// Получение значений для атрибутов tmp
   cin>>tmp.start>>tmp.finish;
// Вернуть tmp

   return tmp;
};

// Напишем функцию, которая печатает концы отрезка

void printLine(Line a){
   cout<<a.start<<" "<<a.finish<<endl;
};

int main(){
// Создадим ОБЪЕКТ Line и назовем его a:
 Line a;
// Получим значения атрибутов:
 a = volumeLine();
 
// Печать концов отрезка
   printLine(a);
}

Решение 6 (Подвинуть отрезок на x).

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

// Создадим новый тип Line
class Line{
  public:
// атрибуты 
   int start; //атрибут start
   int finish; // атрибут finish
};

// Напишем функцию, получает концы отрезка
// Функция вернет Line

Line volumeLine(){
// Создадим временный объект tmp
   Line tmp;
// Получение значений для атрибутов tmp
   cin>>tmp.start>>tmp.finish;
// Вернуть tmp

   return tmp;
};

// Напишем функцию, которая печатает концы отрезка

void printLine(Line a){
   cout<<a.start<<" "<<a.finish<<endl;
};

// Напишем функцию, двигает отрезок на x
// Функция вернет новую Line

Line moveLine(Line a, int x){
// Создадим временный объект tmp
   Line tmp;
// значения для нового отрезка положим в  tmp
   tmp.start = a.start + x;
   tmp.finish = a.finish + x;
// Вернуть tmp

   return tmp;
};

int main(){
// Создадим ОБЪЕКТ Line и назовем его a:
 Line a;
 Line newline;
 int x;
// Получим значения атрибутов:
 a = volumeLine();
// Получим объект x
  cin>>x;

// подвинем отрезок на x и получим новый отрезок

  newline = moveLine(a,x);
  
// Печать концов нового отрезка
   printLine(newline);
}

Задача Classes.2

Отрезок на плоскости задан началом и концом (координаты x и y).

Нужно:

  1. вычислять длину отрезка
  2. получать координаты отрезка
  3. печатать координаты отрезка
  4. двигать отрезок в заданном направлении по оси x

Решение 1 (Получить координаты отрезка).

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;
// Создадим новый тип Координаты

class Coord{
 public:
   int x; // атрибут x
   int y; // атрибут y
};

// Создадим новый тип Line
class Line{
  public:
// атрибуты 
   Coord start; //атрибут start (один конец)
   Coord finish; // атрибут finish (второй конец)
};
//____________Координаты:______________
// Функция получения координаты
Coord volumeCoord(){
// Создадим временно tmpCoord
   Coord tmpCoord;
   cin>>tmpCoord.x>>tmpCoord.y;
   return tmpCoord;
};

// Функция печать координат
void printCoord(Coord a){
  cout<<'('<<a.x<<" "<<a.y<<')';
};
//________________Конец координат_____________


//__________________Отрезок____________________

// Функция получения координат отрезков
Line volumeLine(){
// Создадим временно tmpLine
   Line tmpLine;
// Создадим временно start и finish
   Coord start;
   Coord finish;
// получим start
   start = volumeCoord();
 // получим finish
   finish = volumeCoord();
// дадим значения атрибутам tmpLine
   tmpLine.start = start;
   tmpLine.finish = finish;

   return tmpLine;
}; 

// Функция печати координат отрезков
void printLine(Line a){
// Используем функцию печати координат
   printCoord(a.start);
   printCoord(a.finish);   
   cout<<endl;
};

// Двигаем отрезок по оси x
Line moveLine(Line a, int x){
     Line tmpLine;
// Изменяем координату x начала (start)
   tmpLine.start.x = a.start.x + x;
// Коррдинату y не меняем, так присваиваем
    tmpLine.start.y = a.start.y;
// Изменяем координату x конца (finish)
   tmpLine.finish.x = a.finish.x + x;
// Коррдинату y не меняем, так присваиваем
    tmpLine.finish.y = a.finish.y;   
   return tmpLine;
};

//____________конец отрезка___________________

int main(){
// Создадим ОБЪЕКТ Line и назовем его a:
 Line a;
// Получим координаты концов
 a = volumeLine();
 
// Создадим ОБЪЕКТ Line и назовем его newline:
 Line newline;
  
// Создадим объект x (куда двигать)
   int x;
// получим x
   cin>>x;
// Получим координаты нового отрезка
   newline = moveLine(a, x);

// Напечатаем координаты нового отрезка

  printLine(newline); 

}

-- TatyanaOvsyannikova2011 - 26 Oct 2014

Attachment sort Action Size Date Who down Comment
otrezok_class1.png manage 32.7 K 27 Oct 2014 - 09:45 TatyanaOvsyannikova2011  
otrezok_class2.png manage 57.3 K 27 Oct 2014 - 09:45 TatyanaOvsyannikova2011