Ошибка Segmentation Fault en un array y en un bucle

соя nuevo por aquí. Estudio 1º de Ingeniería Informática, y utilizo C ++ en Fundamentos de Programación.

Pues bien, estoy resolviendo este ejercicio (lo pongo Комо imagen porque es bastante lioso):

Ejercicio a resolver

Mi código es el siguiente:

#include 
#include 
#include 
using namespace std;

const int NCIUDADES = 8;

void hazRuta(const int kilometros [][NCIUDADES], int ciudadActual, int ruta[]){
    bool visitados [NCIUDADES];
    for (int j = 0; j < NCIUDADES; j++)
        visitados[j] = false;
    int distanciaMenor, ciudadDMenor, contadorRuta = 0;
    while (contadorRuta < NCIUDADES){
        distanciaMenor = kilometros[0][ciudadActual];
        for (int i = 0; i < NCIUDADES; i++){
            if (i == ciudadActual)
                continue;
            if (kilometros[i][ciudadActual] < distanciaMenor && visitados[i] == false){
                distanciaMenor = kilometros[i][ciudadActual];
                ciudadDMenor = i;
            }
        }
        ruta[contadorRuta] = ciudadDMenor;
        contadorRuta++;
        visitados[ciudadDMenor] = true;
        ciudadActual = ciudadDMenor;
    }
}

int main (){
    setlocale(LC_ALL, "Spanish");
    //Ciudades:  0-Almería, 1-Cádiz, 2-Córdoba, 3-Granada, 4-Huelva, 5-Jaén, 6-Málaga y 7-Sevilla
    int kilometros [NCIUDADES][NCIUDADES] = {{0, 615, 364, 166, 608, 283, 210, 503},{615, 0, 268, 347, 248, 360, 268, 145},{364, 268, 0, 200, 236, 105, 172, 133}
                                            ,{166, 347, 200, 0, 373, 91, 164, 269},{608, 248, 236, 373, 0, 335, 318, 96},{283, 360, 105, 91, 335, 0, 236, 234}
                                            ,{210, 268, 172, 164, 318, 236, 0, 215},{503, 145, 133, 269, 96, 234, 215, 0}};
    int partida, ruta [NCIUDADES];

    cout << "Introduzca el número de la ciudad de partida (0-Almería, 1-Cádiz, 2-Córdoba, 3-Granada, 4-Huelva, 5-Jaén, 6-Málaga y 7-Sevilla): ";
    cin >> partida;
    while (partida < 0 || partida > 7){
        cout << "Número no válido. Reintrodúzcalo: ";
        cin >> partida;
    }

    hazRuta(kilometros, partida, ruta);

    cout << "La ruta para visitar todas las ciudades es: ";
    for (int i = 0; i < NCIUDADES; i++){
        cout << ruta[i] << ", ";
    }
    cout << endl;



system("Pause");
return 0;
}

Параграф empezar, СИ Комо ciudad de partida elijo la 0, se производят el ошибку "Отказ Сегментации", cosa que me ха, удар рапирой alguna vez trabajando подставляет punteros, pero que no comprendo en un simple array de tamaño fijo.

Por otro lado, СИ Комо punto de partida elijo otra ciudad, el programa se ejecuta, pero el resultado es жабы Лусес incorrecto. Por ejemplo, para la ciudad 6 recibo el resultado:

3, 5, 2, 7, 4, 1, 6, 6

Море Seguramente absurdo, pero соя incapaz de encontrar el error.

Agradezco cualquier ayuda, pero por способствуют tengan en cuanta que solo estoy empezando en este terreno.

Muchas gracias. ООН saludo.

9
задан 16.12.2019, 18:03
1 ответ

Во-первых я прошу perdГіn из-за опоздания в том, чтобы отвечать, поймите, что я был связанным с exГЎmenes и demГЎs эти, dГ-схвати.

, Сказанные это, я благодарен непомерно за оба ответов, упражнение уже функционирует в нее perfecciГіn. Как уже я habГ - в представленный, ошибка не была чем-то очень тяжелым, а mГЎs хорошо "деталь".

Выше сказанное, большое спасибо и даже она prГіxima :)

-1
ответ дан 21.12.2019, 12:15
  • 1
    Пожалуйста не используй зону ответов, чтобы делать признательность или комментарии, в Вашем одиноком месте пометь, как принятая и(или) дай ему +1, которому я помогаю тебе решать проблему – Aprendiz 20.12.2019, 19:50
  • 2
    Пожалуйста, не печатай ответ говоря " gracias". В Вашем месте, принимает ответ , которую ты считал бы лучшей solució n в твою проблему. - С revisió n – alanfcm 21.12.2019, 00:00