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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Начинающий
Сообщений: n/a
#1

Написать класс Graph - C++

11.12.2008, 10:15. Просмотров 915. Ответов 1
Метки нет (Все метки)

Здравствуйте! Помогите пожалуйста, разобраться с лабой по С/С++ написанной для BC3.1 и преподавателя 1959 г. выпуска (это я к тому, что он без void main() работы не принимает). Прожка такая:
Код
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <stdlib.h>

class Graph
{
public:
    Graph (int n);
    ~Graph(void);
    int FindWay(void);
private:
    int **edge;
    int *nnew;
    int *st;
    int n;
};

Graph::Graph (int n)
{
   st = new int[n];
   for (int i=0;i<n;i++) st[i]=0;
   nnew = new int[n];
   for (i=0;i<n;i++) nnew[i]=0;
   for (i=0;i<n;i++) edge = new int*[i];
   for (int j=0;j<2;j++) edge[i]=new int[j];
  cout<<"Enter list contiguity"<<endl;
  for (i=0;i<n;i++) for (j=0;j<2;j++) cin>>edge[i][j];
//     int array[][2]={0,1,1,2,1,3,3,4,2,5};
for (i=0;i<n;i++) for (int j=0;j<2;j++) printf("%d\n",&edge);
   getch();
}


Graph::~Graph(){
for (int i=0;i<n;i++) for (int j=0;j<2;j++) delete edge;
delete[] nnew;
delete[] st;
}

int Graph::FindWay(void)
{
   int k=0;
   st[0]=edge[k][0];
   printf("%d",st[0]);
   st[1]=edge[k][1];
   printf("%d",st[1]);
   nnew[k]=1;
   int p=st[1];
for (int m=2;m<n;m++)
{
for (int i=0;i<n;i++) if (edge[i][0]==p && nnew[i]!=1)
    {
    st[m]=edge[i][0];
    printf("%d",st[m]);
    st[m+1]=edge[i][1];
    printf("%d",st[m+1]);
    p=st[m+1];
    nnew[i]=1;
    getch();
    }
}
return(0);
}

REGS regs;

void InitMouse(int *nbuttons, int *OK)
{
  regs.x.ax=0;
  int86(0x33, &regs, &regs);
  *OK=regs.x.ax;
  *nbuttons=regs.x.bx;
}

void ShowMouse(void)
{
  regs.x.ax=1;
  int86(0x33, &regs, &regs);
}

void HideMouse(void)
{
  regs.x.ax=2;
  int86(0x33, &regs, &regs);
}

void ReadMouse(int *x, int *y, int *buttons)
{
  regs.x.ax=3;
  int86(0x33, &regs, &regs);
  *buttons=regs.x.bx;
  *x=regs.x.cx;
  *y=regs.x.dx;
}
void TopGraph(int n)
{
  int x,y,but;
  ShowMouse();
  for (int j=1;j<n;j++)
  {
  do {ReadMouse(&x,&y,&but);} while(!but);
  do{ReadMouse(&x,&y,&but);} while(but);
  HideMouse();
  circle(x,y,3);
  char *msg;
  itoa(j,msg,10);
  outtextxy (x,y,msg);
  ShowMouse();
  }
}
void DrawEdge(int q)
{
  int x,y,x1,y1,but;
  //ShowMouse();
  for (int i=0;i<q;i++)
  {
  do {ReadMouse(&x,&y,&but);} while(!but);
  do{ReadMouse(&x,&y,&but);} while(but);

  do {ReadMouse(&x1,&y1,&but);} while(!but);
  do{ReadMouse(&x1,&y1,&but);} while(but);
  HideMouse();
  line(x, y, x1, y1);
  ShowMouse();
  }
}


void main()
{
clrscr();
int nbuttons, OK;
  float CTg_A;
  int gdriver = DETECT, gmode, errorcode;
  initgraph(&gdriver, &gmode, "c:\\bc31\\bgi\\");
  InitMouse( &nbuttons, &OK);
  TopGraph(6);
  DrawEdge(5);
  getch();
const int n=5;
Graph g(n);
g.FindWay();
}
Ее задача наити ПЕРВЫЙ ПОПАВШИЙСЯ ПУТЬ из графа предварительно нарисованного и списка смежности введенного сразу после рисования графа.
Подскажите, пожалуйста, как вписать всю "мышиную возню" в класс? И как обратиться к уже созданному в конструкторе массиву их main? Попытка написать g.edge = {1,2,3 ...} жестко пресекается компилятором.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2008, 10:15     Написать класс Graph
Посмотрите здесь:

Класс, полиморфизм (Написать класс, который хранит в себе некий номер ''nip'', проверит его на правильность и вывести результат) - C++
Задача. Написать класс, который хранит в себе некий номер ''nip'', проверит его на правильность и вывести результат. Вообщем-то ни...

Написать класс - C++
Класс ShortArray. Тип элементов массива – short int. Функция (signum) – вычисление функции сигнум для суммы первых m членов массива. 1....

написать класс - C++
Порядок виконання роботи 1.Визначити клас відповідно до варіанту завдання. 2.Визначити в класі наступні конструктори: без параметрів, з...

написать класс - C++
Написать класс, создать в приватной зоне 2 элемента с плавающей точкой, конструктор и в списке инициализации инициализировать эти 2...

Написать класс - C++
Написать класс DSTACK типа double и перегрузить операторы +=(push),--(pop) и =. Помогите пожалуйста.

Написать класс «массив». - C++
В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами, копирования), деструктор, ввод с клавиатуры, поиск...

Написать класс котов - C++
Помогите пожалуйста написать программу... буду очень признательна :) Написать класс котов. Атрибутами кота есть действительный вес (в...

Написать класс Student - C++
Написать класс Student, содержащий сведения: фамилия, имя, отчество студента, оценки по m экзаменам. Написать программу, которая выводит...

Написать класс String - C++
Здравствуйте, нужна ваша помощь. Требуется написать программу, используя только пункты 3,5,8 и 12 3) class STRING { public: ...

Написать класс Автомобиль - C++
1. Создать запись для хранения следующей информации: – код владельца, – номер автомобиля, – марка автомобиля, – дата выпуска, –...

Написать класс «матрица» - C++
Добрый день я новичок помогите мне Написать класс «матрица». В классе реализовать следующие методы: конструкторы (по умолчанию, с ...

Написать класс-итератор - C++
Здравствуйте, мне дали такое здание: написать класс-контейнер множество, состоящее из объектов произвольного типа. Методы класса...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Начинающий
Сообщений: n/a
13.12.2008, 22:41     Написать класс Graph #2
Все оказалось просто, а половину кода надо вообще удалить - они не связные.

Следующий вопрос: в программке требуется несколько раз вывести массив из 5 строк структура строки: int[2] - номер, char [15][5] - ФИО и т.п. чепуха. Все работает, но в функциях выбора по запросу, если искомое - первая строка вместо ФИО вылезает символ сердечко. Мне, конечно, льстит такое теплое отношение собственной программы, но препод не в моем вкусе - мало ли что он подумает, потом ведь не отвяжешься. Подскажите? пожалуйста как исправить:
# ...
void mydata1::OutYear(int year)
{
for (int i1=0;i1<5;i1++)
{
if (loc[i1]==year) printf("%i %s %i %s %i\n",n[i1],prof[i1],zpl[i1],tel[i1],loc[i1]);
};
};
...

void main(void)
{
mydata1 d1("data.txt");
int but,i1,ye,i,prof,load=0;

do
{
clrscr();
cout << "\tMenu\n1-Int base\n2-Print base\n3-Zapros vozrast\n4-Zapros prof\n5-Exit\n\nEnter:";
but=0;
cin >> but;
if (but==1||load==1||but==5)
{
switch (but)
{
case 1: d1.OpenData();
getch();load=1;break;
case 2: d1.OpenData();getch();break;
case 3: cout << "Enter age:";
cin >> ye;
d1.OutYear(ye);
getch();break;
case 4: d1.OutProf();
getch();break;
case 5: exit(0);
}
}
else {cout << "Not found";getch();}
} while (but!=0);
Yandex
Объявления
13.12.2008, 22:41     Написать класс Graph
Ответ Создать тему
Опции темы

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