Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Ориентиран граф - списъци на съседство C++`

Featured Replies

Здравейте! Имам курсова работа, на която трябва да напииша задача с ориентиран граф, представен чрез списъци на съседство, да и добавя функция за визуализиране и изтриване на върховете с 1 изходяща дълга и 1 входяща дъга в дадения граф.

Това е кодът ми, но ми дава грешка на 0-та на Public:, също и на class "clasGraph" has no member "clasGraph" и също на оператора != и като за последно ме пиита unexpected end of file while looking for precompiled header. Did you forget to add '#include "pch.h"' to your source?   

#include <fstream>
#include <iomanip>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
using namespace std;
unsigned BrV; //Брой на върховете в графа
//Структура ребро.
struct rebro { int nom, teg; rebro *next; };
ifstream fin; //Глобален входен поток за четене от текстовия файл
ofstream fout; //Глобален изходен поток за четене от текст. файл
//Структура връх от графа
struct vrah { rebro *first; };
//Клас граф
class clasGraph {
	vrah *a;//Указател, необходим за съсдаване на масива от списъци на съседство
public:
	0 -> 2 8 ->
		1 -> 5 12 ->
		2 ->
		3 -> 4 20 ->
		4 -> 2 12 ->
		5 -> 4 32 -> 3 10 ->
		6 -> 7 20 -> 5 10 -> 1 15 ->
		7 -> 2 13 -> 0 10 ->
		0
		1
		2
		3
		4
		5
		6
		7
		2, 8
		5, 12
		4, 20
		2, 12
		4, 32 3, 10
		7, 20 5, 10 1, 15
		2, 13 0, 10
		8
		clasGraph(); //Конструктор за създаване и инициализация на масива от списъци
	~clasGraph();//Деструктор за изтриване на граф
	void make_graf();
	void display_graf(ostream &);
};
// Конструктор за създаване и инициализация на масива от списъци на съседство
clasGraph::clasGraph()
{
	a = new vrah[BrV];
	for (int i = 0; i < BrV; i++) { a[i].first = 0; }
}
//Деструктор за изтриване на масива от списъци на съседство
clasGraph::~clasGraph()
{
	rebro* p;
	for (int i = 0; i < BrV; i++) {
		while (a[i].first) {
			p = a[i].first;
			a[i].first = p->next;
			delete p;
		}
	}
	delete[]a; cout << "Масивът от списъци е изтрит." << endl;
}
char kod_teg;
//Член-функция за създаване списъците на съседство-елементи на масива
void clasGraph::make_graf()
{
	rebro *p; char kod_or; unsigned i, j, teglo;
	cout << "Графът ориентиран ли е /D,d,Д,д/? "; cin >> kod_or;
	if (kod_or == 'D' || kod_or == 'd' || kod_or == 'Д' || kod_or == 'д') kod_or = 1;
	else kod_or = 0;
	cout << "Графът тегловен ли е /D,d,Д,д/? "; cin >> kod_teg;
	if (kod_teg == 'D' || kod_teg == 'd' || kod_teg == 'Д' || kod_teg == 'д')
		kod_teg = 1;
	else kod_teg = 0;
	for (;;) {
		fin >> i >> j; if (fin.fail()) break;
		if (kod_teg) fin >> teglo;
		else teglo = 1;
		p = new rebro; p->nom = j; p->teg = teglo; p->next = a[i].first;
		a[i].first = p;
		if (!kod_or) {
			p = new rebro; p->nom = i; p->teg = teglo; p->next = a[j].first;
			a[j].first = p;
		}
	}
	fin.close();
}
//Член-функция за визуализaция на масива от списъци на съседство
void clasGraph::display_graf(ostream &pp = cout)
{
	if (pp != cout) fout.open("DopInf", ios::out);
	int i; rebro *p;
	{
		pp << "\nМАСИВ ОТ СПИСЪЦИ НА СЪСЕДСТВО:\n";
		for (i = 0; i < BrV; i++) {
			pp << setw(2) << i << " -> ";
			p = a[i].first;
			while (p != 0) {
				pp << setw(2) << p->nom; if (kod_teg) pp << setw(3) << p->teg; pp << " ->";
				p = p->next;
			} pp << endl;
		}
		if (pp != cout)
		{
			fout.close();
			cout << "\nОтрорете текст. файл DopInf.\n";
		}
	}
}
//Главна функция
void main()
{
	char ime_vh_fl[21];
	cout << "\nИме на входния файл: "; cin >> ime_vh_fl;
	fin.open(ime_vh_fl, ios::in);
	if (fin.bad()) { cout << "Няма такъв файл.\n"; getch(); return; }
	fin >> BrV; //Въвеждаме от текстовия файл броя на върховете на графа
	clasGraph Graph; //Създаваме обекта Graph
	Graph.make_graf(); //Създаваме списъците на съседство
	Graph.display_graf(fout); //Извеждаме на екрана масива от списъци на съседство
		getch();
}

 

Първо се научи да си дебъгваш програмата, за всяка грешка ако чакаш на някой до никъде няма да стигнеш. Ползвай google - 99% от случаите излизат подобни теми с решения. Този код сам ли го писа или го копира отнякъде?

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.