Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 1
Регистрация: 15.04.2011
Сообщений: 17
1

Наследование и двусвязный список

17.11.2011, 22:46. Просмотров 1367. Ответов 1
Метки нет (Все метки)


1.Постронить точка->отрезок->треугольник.Вывести на экран рисунок.
Я ее почти закончил,делал по Лафоре.Но проблема в том что делаю на dev++,а там нет библиотеки <graphics.h> и <msoftcon.h> .И я не знаю какие функции использовать чтобы нарисовать треугольник

C++
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
31
32
33
34
35
#include<iostream>
#include<conio.h>
#include<msoftcon.h>  //не рабочая библиотека    
 
using namespace std;
 
class point
{
public:
int x1,y1;//координаты точки
point();// конструктор для инициализации коодинат 
}
class line : public point
{
public:
line();// конструктор
int  x2,y2;
}
class triangle: public line
{
public:
triangle()// конструктор
int x3,y3;
 
}
 
int main()
{
    triangle h;
    init_graphics(); //не рабочая функция     
    triangle tri(); //вписать координаты
    getch();
    return 0;
 
}
2. Дан непустой двусвязный список. Удалить из списка все элементы с
нечётными значениями и вывести указатель p2 на начало
преобразованного списка. Если в результате удаления элементов список
окажется пустым, то положить p2 = NULL. После удаления элементов из
списка освобождать память, занимаемую этими элементами.


тут проблема с указателями,совершенно запутался

C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
////////////////////////////////////////////////////////////////
class smallobj               
   {
   private:
      int somedata;
      public:
        smallobj* p1;
        smallobj* p2;  
      void setdata(int d)    
         { somedata = d;}
      void showdata()                  //выводит все числа
         { cout << " " << somedata;}
      void deldata(int k); //удаляет нечетные
      void textdata();   //выводит на экран только четные,
    };
    void smallobj::deldata(int k)
    {
         smallobj *m=new smallobj();//создал указатель на элемент
         if(k/2)  
         {
          
         }                                       //тут,я так понял надо сделать что-то с указателями
    }
    
    void smallobj::textdata()  
    {
       cout <<" " <<somedata;
    }
////////////////////////////////////////////////////////////////
int main()
   {
   srand(time(NULL));       
   smallobj s1;   
   int k,n;
   cout<<"Vvedite kol-vo elementov ";
   cin>>k;
   for(int i=0;i<k;i++)
   {
   n=rand()%10;   
   s1.setdata(n);
   s1.deldata(n);
   s1.showdata();
   s1.textdata();
   }
   getch();
   return 0;
   }
Добавлено через 3 часа 35 минут
поправил чуть-чуть
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2011, 22:46
Ответы с готовыми решениями:

виртуальный оператор (двусвязный список, наследование)
Здравствуйте! Поставлена задача реализовать двусвязный список, способный хранить объекты классов...

Переделать двусвязный список в двусвязный кольцевой
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и...

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

Двусвязный список (в конец двусвязного списка добавить другой список)
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

1
3053 / 1458 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
17.11.2011, 23:20 2
По поводу первой задачи.
1. Эти библиотеки есть только у сильно устаревшего компилятора, который вряд ли кто использует. Если это тестовое задание, нет нужды рисовать объекты. Достаточно вывести их данные.
2. Некорректное наследование. Линия не ведет себя как точка, а треугольник не ведет себя как линия. Тут более уместно отношение включения.

Например.
C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <cmath>
 
class Point {
 public:
  Point(int x, int y) : x_(x), y_(y) {}
  Point(const Point &point)
    : x_(point.getX()), y_(point.getY()) {}
  const int getX() const { return x_; }
  const int getY() const { return y_; }
  void setX(int value) { x_ = value; }
  void setY(int value) { y_ = value; }
  float distanceTo(const Point &point) const {
    return(sqrt(pow(point.getX() - getX(), 2.) +
      pow(point.getY() - getY(), 2.)));
  }
 private:
  int x_;
  int y_;
};
 
std::ostream &operator<<(std::ostream &stream, const Point &point) {
  return stream << "[" << point.getX() << ":" << point.getY() << "]";
}
 
class Line {
 public:
  Line(const Point &a, const Point &b) : a_(a), b_(b) {}
  Line(const Line &line) : a_(line.getA()), b_(line.getB()) {}
  const Point &getA() const { return a_; }
  const Point &getB() const { return b_; }
  void setA(const Point &value) { a_ = value; }
  void setB(const Point &value) { b_ = value; }
  float length() const {return a_.distanceTo(b_); }
 private:
  Point a_;
  Point b_;
};
 
std::ostream &operator<<(std::ostream &stream, const Line &line) {
  return stream << "(" << line.getA() << " - " << line.getB() <<
    ", l = " << line.length() << ")";
}
 
class Triangle {
 public:
  Triangle(const Point &a, const Point &b, const Point &c)
    : a_(a), b_(b), c_(c) {}
  Triangle(const Triangle &other)
    : a_(other.getA()), b_(other.getB()), c_(other.getC()) {}
  const Point &getA() const { return a_; }
  const Point &getB() const { return b_; }
  const Point &getC() const { return c_; }
  void setA(const Point &value) { a_ = value; }
  void setB(const Point &value) { b_ = value; }
  void setC(const Point &value) { c_ = value; }
 private:
  Point a_, b_, c_;
};
 
std::ostream &operator<<(std::ostream &stream, const Triangle &triangle) {
  return stream << "(" << triangle.getA() << ", " << triangle.getB() <<
    ", " << triangle.getB() << ")";
}
 
int main(int argc, char *argv[]) {
  Triangle a(Point(0, 0), Point(0, 1), Point(1, 0));
  std::cout << a << std::endl;
  return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2011, 23:20

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Составить двусвязный список на основе класса, объекты которого будут формировать этот список
Составить двусвязный список на основе класса, объекты которого будут формировать этот список. В...

Заменить массив структур на односвязный список, и на двусвязный список
Взять текст задания и заменить массив структур на односвязный список, и на двусвязный список ...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный...

Преобразовать односвязный список в двусвязный список
Доброго времени суток! Помогите, пожалуйста, преобразовать программу из односвязного списка в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.