1 Востаннє редагувалося mazurkevych (25.12.2013 20:10:35)

Тема: Допоможіть виправити баг;

УМОВА!!!!
Задано множину впорядкованих пар вершин , що відповідають дугам орієнтованого графа. Знайти напівстепені входу та виходу кожної вершини.

#include<iostream>
#include<cmath>

using namespace  std;

void main(){
    setlocale(LC_ALL, "Ukrainian");
    const int p = 2;
    int n, m;
    cout << "Введiть кiлькiсть дуг: " << endl;
    cout << "m=";
    cin >> m;
    cout << "Введiть кiлькiсть вершин: " << endl;
    cout << "n=";
    cin >> n;
    int **spysok, *powin, *powout; //powin- масив напівстепенів входу ;powout- масив напівстепенів виходу ;
    spysok = new int *[m];
    for (int i = 0; i < m; i++){
        spysok[i] = new int[p];
    }
    powin = new int[n];
    powout = new int[n];
    cout << "Початкова вершина:   Кiнцева вершина:" << endl;
    for (int i = 0; i < m; i++){
        for (int j = 0; j < p; j++){
            cout << "     ";
            cin >> spysok[i][j];
        }
    }
    for (int t = 0; t < n; t++){//цей цикл компілятор пропускає (нічого не виводить на екран)
        for (int i = 0; i < m; i++){
            //шукаємо напівстепені входу
            for (int j = 0; j < p; j++){
                powin[t] = 0;
                if (spysok[i][2] == t + 1){
                    powin[t]++;
                    cout << "deg^-(v" << t+1 << ")=" << powin[t] << endl;
                }
            }
        }
    }
    for (int k = 0; k < n; k++){
        for (int i = 0; i < m; i++){//шукаємо напівстепені виходу
            for (int j = 0; j < p; j++){
                powout[k] = 0;
                if (spysok[i][1] == k + 1){
                    powout[k]++;
                    cout << "deg^+(v" << k+1 << ")=" << powout[k] << endl;
                }
            }
        }
    }
    for (int i = 0; i < m; i++){
        for (int j = 0; j < p; j++){
            if (spysok[i][j]>n || spysok[i][j] < 0)
                cout << "FATAL ERROR!!!" << endl; break;
        }
    }
    delete []spysok;
    delete []powin;
    delete []powout;
    system("pause");
}

Re: Допоможіть виправити баг;

Може скажете що за баг ?

3

Re: Допоможіть виправити баг;

Hanter написав:

Може скажете що за баг ?

1)компілятор пропускає 1 цикл.

 for (int t = 0; t < n; t++){
        for (int i = 0; i < m; i++){
            //шукаємо напівстепені входу
            for (int j = 0; j < p; j++){
                powin[t] = 0;
                if (spysok[i][2] == t + 1){
                    powin[t]++;
                    cout << "deg^-(v" << t+1 << ")=" << powin[t] << endl;
                }
            }
        }
    }

2)а для наступного циклу виводить просто 1

4

Re: Допоможіть виправити баг;

Уточніть коментами до коду, які саме цикли проблемні: їх багато тут.

5

Re: Допоможіть виправити баг;

Bartash написав:

Уточніть коментами до коду, які саме цикли проблемні: їх багато тут.

я відредагував початковий код

6

Re: Допоможіть виправити баг;

А які значення в m,n?

7

Re: Допоможіть виправити баг;

mazurkevych написав:
        const int p = 2;
...
        spysok[i] = new int[p];
...
                if (spysok[i][2]

facepalm.jpg