Помогите кто нибудь!!!
От: X-cool Россия  
Дата: 07.05.04 15:17
Оценка:
Помогите кто нибудь!!! Представим что дан неориентированный граф,пири его решении выводится матрица смежности,инцидентности,список вершин и список смежных ребер. Так вот в проге все это прет и вычисляется верно, за исключением матрицы нцидентности — та выводит несколько раз матричный вывод одного и того же ребра:
1-2 2-3 3-1 1-2 хотя надо 1-2 2-3 3-1
1 0 1 1 1 0 1
1 1 0 1 1 1 0
0 1 1 0 0 1 1
Короче нужно в проге както написать условие , что если элемент матрицы инц-ти вывелся однажды,то его повторно ВЫВОДИТЬ НЕ НАДО!
P.S. Помогите кто чем может — пазалуста!!! (спасая одного студента ВЫ спасете как минимум половину группы!!!) _____ИСХОДНИК____:
#include<iostream.h>
#include<conio.h>
int main()
{
 int rebro[10][10]={0};
 int mar[10][21]={0}, sm[10][20][20]={0}, in[10][20][19]={0},q,i,l,j,k,n,p,g=0;
 clrscr();
 cout << "Vsego ostanovok: ";cin>>q;
 cout<<"Skolko marshrutov: "; cin>>n;
 for(i=0;i<n;i++)
  {
    cout<<"Skolko ost-k y "<<i+1<<"-go marshruta : ";
    cin>>mar[i][20];
    for(j=0;j<mar[i][20];j++)
     {
       cout<<"Vvodite "<<j+1<<"-iu ost-ku: ";
       cin>>k;mar[i][j]=k-1;
     }
    for(j=0,l=0;j<mar[i][20]-1;j++)
     {sm[0][mar[i][j]][mar[i][j+1]]=sm[0][mar[i][j+1]][mar[i][j]]=1;
in[0][mar[i][j]][g]=1;
            
in[0][mar[i][j+1]][g]=1;l++;g++;
     }
  }
 i=0;
{
 getch();
 for(l=0;l<n;l++)
{
  cout<<"\n"<<l+1<<"-i marshrut:" ;
  for(k=0;k<mar[l][20]-1;k++)
  cout<<mar[l][k]+1<<"-";
  cout<<mar[l][k]+1;
}
for(j=0;j<q;j++)
 {
   cout<<"\nv"<<j+1<<" ";
   if(j<9)cout<<" ";
   for(k=0;k<q;k++)
   {
   rebro[j][k]=sm[0][j][k];
   cout<<sm[0][j][k];
   }
   cout<<"  v"<<j+1;
   if(j<9)cout<<" ";
    for(k=0;k<g;k++)
    {
      if(in[0][j][k]!=-1)
       cout<<" ";    cout<<in[i][j][k];
    }
 }
 cout<<"\n    ";
 for(k=0;k<q;k++)
  cout<<k+1; cout<<"     ";
 for(k=0;k<g;k++)  cout<<"e"<<k+1;
 }
    int z=1;
    for(j=0;j<q;j++)
    {
    for(k=j;k<q;k++)
    {
    if(rebro[j][k]==1)
        {
        cout<<endl;
        cout<<"Rebro";cout<<z;cout<<": ";cout<<j+1;cout<<"-";cout<<k+1;
        z++;
        }
    }
}
getch();
return 0;
}

//___________________________________________________кнтрольный пример:
Skolko  marsrutow  5
Vsego ostanovok: 5
Skolko ostanowok y 1-go marshruta:  4
Vvedite 1-u ostanovky: 1    
Vvedite 2-u ostanovky: 2
Vvedite 3-u ostanovky: 5
Vvedite 4-u ostanovky: 1    
Skolko ostanowok y 2-go marshruta:  4
Vvedite 1-u ostanovky: 1    
Vvedite 2-u ostanovky: 5
Vvedite 3-u ostanovky: 4
Vvedite 4-u ostanovky: 1    
Skolko ostanowok y 3-go marshruta:  4
Vvedite 1-u ostanovky: 3    
Vvedite 2-u ostanovky: 5
Vvedite 3-u ostanovky: 4
Vvedite 4-u ostanovky: 3    
Skolko ostanowok y 4-go marshruta:  4
Vvedite 1-u ostanovky: 2    
Vvedite 2-u ostanovky: 3
Vvedite 3-u ostanovky: 5
Vvedite 4-u ostanovky: 2    
Skolko ostanowok y 5-go marshruta:  5
Vvedite 1-u ostanovky: 1    
Vvedite 2-u ostanovky: 2
Vvedite 3-u ostanovky: 3
Vvedite 4-u ostanovky: 4    
Vvedite 5-u ostanovky: 1
1-i marshrut   1->2->5->1
2-i marshrut   1->5->4->1
3-i marshrut   3->5->4->3
4-i marshrut   2->3->5->2
5-i marshrut   1->2->3->4->1
matrix smeznosti       matrix incidentnosti
v1 0 1 0 1 1             v1  1  1  1  0  0  0  0 0 
v2 1 0 1 0 1             v2  1  0  0  1  1  0  0 0
v3 0 1 0 1 1             v3  0  0  0  1  0  1  1 0
v4 1 0 1 0 1             v4  0  1  0  0  0  1  0 1
v5 1 1 1 1 0             v5  0  0  1  0  1  0  1 1
     1 2 3 4 5                  e1e2e3e4e5e6e7e8
Rebro 1:1-2
Rebro 2:1-4
Rebro 3:1-5
Rebro 4:2-3
Rebro 5:2-5
Rebro 6:3-4
Rebro 7:3-5
Rebro 8:4-5

//_____________________________________________________



Не забывайте, пожалуйста, пользоваться тегами [c]...[/c], [code]...[/code] и т.п. для выделения фрагментов кода. -- ПК
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.