• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Graf c++ problem z zadaniem

0 głosów
1,050 wizyt
pytanie zadane 26 kwietnia 2019 w C i C++ przez Fr3sh98x Nowicjusz (210 p.)

Dzień dobry mam problem z jednym z zadań. Napisz program, który pobierze od użytkownika macierz sąsiedztwa grafu G (wierzchołki numerujemy od jedynki), a następnie wyświetli następujące informacje (każda informacja w osobnej linii): Napisałem coś takiego:

#include <iostream>
#include <vector>

using namespace std;

int ar[15][15];
int n;
int krawedzie, laczonekrawedzie;
int stopienwierzcholka;
vector <int> stwierzolka;
float srednia;

int main()
{
    cout << "Podaj liczbe wierszy macierzy: ";
    cin>>n;

    for(int i=0;i<n;i++)
    {

        for(int j=0;j<n;j++)
        {
            cin>>ar[i][j];
        }
    }

    cout<<"Liczba Wierzcholkow: "<<n<<endl;

    for(int i=0;i<n;i++)
    {
        stopienwierzcholka=0;
        for(int j=0;j<n;j++)
        {
           if(ar[j][i]==1) stopienwierzcholka++;
           if(ar[i][j]==1) krawedzie++;
           if((ar[i][j]==1)&&(ar[j][i]==1)) laczonekrawedzie++;
        }
        stwierzolka.push_back(stopienwierzcholka);
    }
    cout<<"Liczba krawedzi: "<<krawedzie-(laczonekrawedzie/2)<<endl;
    cout<<"Stopnnie wierzcholkow: ";

          for(int i=0;i<stwierzolka.size();i++)
          {
              srednia+=stwierzolka[i];
              cout<<stwierzolka[i]<<" ";
          }
    cout<<endl<<"Sredni stopien: "<<srednia/stwierzolka.size()<<endl;
  /*  if(laczonekrawedzie==krawedzie)
    {
        cout<<"Jest to cykl"<<endl;
    }
    */
    return 0;
}

Jak zrobić tak żeby nie było trzeba określać wielkości macierzy przez użytkownika?

komentarz 26 kwietnia 2019 przez gagyn Stary wyjadacz (11,050 p.)
Mógłbyś doprecyzować pytanie, ponieważ nie do końca rozumiem co chcesz zrobić?
1
komentarz 27 kwietnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Chyba chodzi mu o to, zeby uzytkownik nie musial podawać liczbe wierszy macierzy. Wydajw mi sie, ze petla while powtarzajaca sie dopoki cos nie przerwie wpisywania kolejnych wierszy. W petli trzeba podać warunek przerwania.

Masz problem, bo program sie wysypie, gdy uzytkownik poda zbyt duza ilosc wierszy lub za dlugo bedzie wpisywać dane, dlatego lepiej bedzie uzyc vector ow
komentarz 27 kwietnia 2019 przez niezalogowany

DragonCoder o tym mówiłeś.

#include <iostream>
#include <vector>
#include <limits>


using namespace std;
 //int ar[15][15];
 vector<vector<int> >ar {{0}};
int n;
int krawedzie, laczonekrawedzie;
int stopienwierzcholka;
vector <int> stwierzolka;
float srednia;

int main()
{
    n=1;
    cout<<"wczytaj liczby by przerwać wcisnij litere i enter"<<endl;
    for(int i=0;i<n;i++)
    {
        vector<int>temp;

        for(int j=0;j<n;j++)
        {

            temp.push_back(0);
            if(!(cin>>ar[i][j]))break;

           if(i==0) n++;

        } temp.pop_back();if(i==0) n--;

         std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
        ar.push_back(temp);
     cout<< "kolejny (pozostalo do wczytania "<<n-i-1<<")"<<endl;
    }

    cout<<"Liczba Wierzcholkow: "<<n<<endl;

for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout<<ar[i][j]<<"\t";
        }
    cout<<endl;
    }

    return 0;
}

wyjście

wczytaj liczby by przerwaŠ wcisnij litere i enter
48 48 74
h
kolejny (pozostalo do wczytania 2)
78 79 j
kolejny (pozostalo do wczytania 1)
478 78 91
kolejny (pozostalo do wczytania 0)
Liczba Wierzcholkow: 3
48      48      74
78      79      0
478     78      91

Process returned 0 (0x0)   execution time : 24.503 s
Press any key to continue.

komentarz 27 kwietnia 2019 przez Fr3sh98x Nowicjusz (210 p.)

Dostaje input:  

0 0 0 0 0 1 0 0 1 1
0 0 0 1 1 0 0 0 1 0
0 0 0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 1 0 0
0 1 0 0 0 0 1 1 1 0
1 0 1 0 0 0 1 0 0 1
0 0 0 0 1 1 0 0 1 0
0 0 0 1 1 0 0 0 0 0
1 1 0 0 1 0 1 0 0 0
1 0 0 0 0 1 0 0 0 0

output ma  byc:

Ilość wierzchołków: 10
Ilość krawędzi: 14
Stopnie wierzchołków: 3 3 1 2 4 4 3 2 4 2
Średni stopień: 2.8
Graf nie należy do żadnej z podstawowych klas.

Chodzi mi właśnie o  to co napisał  Dragon

komentarz 27 kwietnia 2019 przez niezalogowany
edycja 27 kwietnia 2019

mała pomyłka

if(i==0){n--;}

imput (kopiuj wklej do konsoli pliku txt z dodanymi / na końcu):

wczytaj liczby by przerwaŠ wcisnij litere i enter
0 0 0 0 0 1 0 0 1 1/
kolejny (pozostalo do wczytania 9)
0 0 0 1 1 0 0 0 1 0/
kolejny (pozostalo do wczytania 8)
0 0 0 0 0 1 0 0 0 0/
kolejny (pozostalo do wczytania 7)
0 1 0 0 0 0 0 1 0 0/
kolejny (pozostalo do wczytania 6)
0 1 0 0 0 0 1 1 1 0/
kolejny (pozostalo do wczytania 5)
1 0 1 0 0 0 1 0 0 1/
kolejny (pozostalo do wczytania 4)
0 0 0 0 1 1 0 0 1 0/
kolejny (pozostalo do wczytania 3)
0 0 0 1 1 0 0 0 0 0/
kolejny (pozostalo do wczytania 2)
1 1 0 0 1 0 1 0 0 0/
kolejny (pozostalo do wczytania 1)
1 0 0 0 0 1 0 0 0 0/
kolejny (pozostalo do wczytania 0)

output:

Liczba Wierzcholkow: 10
0       0       0       0       0       1       0       0       1       1
0       0       0       1       1       0       0       0       1       0
0       0       0       0       0       1       0       0       0       0
0       1       0       0       0       0       0       1       0       0
0       1       0       0       0       0       1       1       1       0
1       0       1       0       0       0       1       0       0       1
0       0       0       0       1       1       0       0       1       0
0       0       0       1       1       0       0       0       0       0
1       1       0       0       1       0       1       0       0       0
1       0       0       0       0       1       0       0       0       0
Liczba Wierzcholkow: 10
Liczba krawedzi: 14
Stopnnie wierzcholkow: 3 3 1 2 4 4 3 2 4 2
Sredni stopien: 2.8

Process returned 0 (0x0)   execution time : 3.680 s
Press any key to continue.

 

cina możesz przesunąć z własnym pomyślunkem

a z piku to getline  i :npos, czy jakoś tak

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
0 odpowiedzi 797 wizyt
pytanie zadane 31 maja 2017 w C i C++ przez Wiciorny Ekspert (283,440 p.)
0 głosów
0 odpowiedzi 235 wizyt
pytanie zadane 14 marca 2024 w C i C++ przez wall7489 Obywatel (1,280 p.)
+1 głos
0 odpowiedzi 849 wizyt
pytanie zadane 16 stycznia 2018 w Algorytmy przez karola Nowicjusz (230 p.)

93,757 zapytań

142,716 odpowiedzi

323,363 komentarzy

63,353 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...