elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema de violación de acceso. Árbol recubridor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema de violación de acceso. Árbol recubridor  (Leído 4,402 veces)
FranAI

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Problema de violación de acceso. Árbol recubridor
« en: 15 Noviembre 2021, 01:44 am »

Hola a todos! Estoy teniendo un problema con un proyecto que he creado para obtener un árbol recubridor (ni mínimo ni máximo) a partir de un grafo precargado, el resultado final debería mostrarme las aristas del arbol recubrido con sus respectivos pesos, el problema es que al compilar por tercera o cuarta vez no me muestra la información completa. Tengo entendido que es un problema de violación de acceso ya que el proceso finalizó con un valor de retorno de 3221225477, en hex: 0xc0000005, el código de windows para indicar violación de acceso.
El problema es que no encuentro el inconveniente en el código.

Código:
#include <bits/stdc++.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

#define V 5


int minKey(int key[V], bool mstSet[V])
{

int min = INT_MAX;
int min_index = 0;

for (int v = 0; v < V; v++)
{
if (mstSet[v] == false && key[v] <= min)
min = key[v], min_index = v;
}
return min_index;
}

int minKey1(int key[V], bool mstSet[V])
{

int min = 0;
int min_index = 0;

for (int v = 0; v < V; v++)
{
if (mstSet[v] == false && key[v] >= min)
min = key[v], min_index = v;
}

return min_index;
}

void printMST(int parent[], int graph[V][V])
{
cout<<"Aristas\tPesos\n";
for (int i = 1; i < V; i++)
{
cout<<parent[i]<<" - "<<i<<" \t"<<graph[i][parent[i]]<<" \n";
}
}


void primMST(int graph[V][V])
{
srand(time(NULL));
int u;
int aleatorio;

int parent[V];


int key[V];


bool mstSet[V];


for (int i = 0; i < V; i++)
{
key[i] = INT_MAX, mstSet[i] = false;
}

key[0] = 0;
parent[0] = -1;


for (int count = 0; count < V - 1; count++)
{

aleatorio = rand()%(2-1+1)+1;
cout << aleatorio << endl;
switch (aleatorio)
{
case 1:
{
u = minKey(key, mstSet);
break;
}

case 2:
{
u = minKey1(key, mstSet);
break;
}

}

mstSet[u] = true;


for (int v = 0; v < V; v++)
{
if (graph[u][v] && mstSet[v] == false && graph[u][v] < key[v])
parent[v] = u, key[v] = graph[u][v];
}
}


printMST(parent, graph);
}


int main()
{

int graph[V][V] = { { 0, 2, 0, 6, 0 },
     { 2, 0, 3, 8, 5 },
     { 0, 3, 0, 0, 7 },
     { 6, 8, 0, 0, 9 },
     { 0, 5, 7, 9, 0 } };


primMST(graph);

return 0;
}


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema de violación de acceso. Árbol recubridor
« Respuesta #1 en: 15 Noviembre 2021, 09:28 am »

Tenes que depurarlo linea por linea, yo lo hice y el problema estaba aca:
Código
  1. cout<<parent[i]<<" - "<<i<<" \t"<<graph[i][parent[i]]<<" \n";

i es 4 y parent no esta inicializado y a su elemento 4 no se le asigna ninguna valor posteriormente:
Código
  1. int parent[V];


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con violación de segmento « 1 2 »
Programación C/C++
Triper0 17 16,462 Último mensaje 8 Noviembre 2015, 21:34 pm
por alesurf1989
Error de violación de acceso en mi programa « 1 2 »
Programación C/C++
Chains 14 11,407 Último mensaje 7 Febrero 2012, 06:33 am
por Eternal Idol
problema con una violacion de segmento usando opcodes « 1 2 »
Programación C/C++
Belial & Grimoire 10 6,847 Último mensaje 2 Septiembre 2013, 11:02 am
por Eternal Idol
se ha producido una violacion de acceso a memoria dev c++
Programación C/C++
loadenro 8 5,111 Último mensaje 29 Abril 2014, 05:46 am
por loadenro
Problema con un if ( violación de segmentos en tablas bidimiensionales )
Programación C/C++
Firefoxes 1 1,398 Último mensaje 8 Enero 2018, 19:32 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines