Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
tubus1993
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 17
17.11.2011, 22:46     Наследование и двусвязный список #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 минут
поправил чуть-чуть
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 22:46     Наследование и двусвязный список
Посмотрите здесь:

Двусвязный список C++
C++ Двусвязный список
Переделать двусвязный список в двусвязный кольцевой C++
Двусвязный список C++
C++ виртуальный оператор (двусвязный список, наследование)
Двусвязный список (в конец двусвязного списка добавить другой список) C++
Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список C++
Двусвязный список C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
}
Yandex
Объявления
17.11.2011, 23:20     Наследование и двусвязный список
Ответ Создать тему
Опции темы

Текущее время: 14:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru