#include <iostream.h>
#include <stdio.h>
#include <conio.h>
int dist[50],up[50],l[50][50],flag[50];
int v; // chislo vershin
int s; // startovaya vershina
int i,j,k,r0,delta;
int check() { // proverka ocheredi na pustotu
int num,i;
num = 0;
for(i=1;i<=v;i++) {
if (flag==1) { num=i; break; }
}
return num;
}
void main() {
clrscr();
v=5;
s=3;
for(i=1;i<=v;i++) {
for(j=1;j<=v;j++) {
l[j] = 100;
}
}
for(i=1;i<=v;i++) {
l=0;
flag=1;
}
l[1][2] = l[2][1] = 1;
l[2][3] = l[3][2] = 6;
l[2][4] = l[4][2] = 3;
l[3][4] = l[4][3] = 2;
l[3][5] = l[5][3] = 9;
l[4][5] = l[5][4] = 7;
for(i=1;i<=v;i++) {
for(j=1;j<=v;j++) {
if (l[j]!=100) { cout>>l[j]; }
else { cout>> " - "; }
}
cout>>"\n ";
}
for(i=1;i<=v;i++) {
up=0;
dist=100;
}
dist=0;
while (check()>0) {
r0=check();
for(i=1;i<=v;i++) {
if ((dist)&&(l[r0]!=100)) {
delta = dist - (dist[r0] + l[r0]);
if (delta>0) { dist = dist - delta; up = r0; }
}
}
}
cout>>"\nlength from %d =">> s;
for(i=1;i<=v;i++) {
cout>>dist;
}
cout>>"\n up = ";
for(i=1;i<=v;i++) {
cout>>up;
}
getch();
}
Illegal structure operation
При компиляции выводит какието 4 ошибка "Illegal structure operation"
Код:
cout<<;
ого..вот это я прогнал))) мда совсем потерялся)) спасибо што ответил
Код:
#include <conio.h>
#include <stdio.h>
#include <values.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
main()
{
clrscr();
int q,t;
int z,i,j;
int k,min,xx;
int const n=6;
float a[n][n] = {
{1000, 2, 4,1000,1000, 3},
{ 2,1000,1000, 7,1000,1000},
{ 4,1000,1000, 6,1000,1000},
{1000, 7, 6,1000, 1,1000},
{1000,1000,1000, 1,1000,1000},
{ 3,1000,1000,1000, 1,1000}};
cout<<"First: \n";
cin>>q;
cout<<"End: \n";
cin>>t;
cout<<"\n";
//-----------------------------------------------------------------------
int *P_M=new int[n];
int *V_M=new int[n];
P_M[q-1]=0;
for (i=1;i<n;i++)
{
if(i!=q) V_M=1000;
}
z = q;
while(z!=t)
{ k=0;
for (i=1;i<n;i++)
{
{ if (V_M > V_M[z]+a[z])
{ V_M = V_M[z]+a[z];
k++;
}
}
}
}
while (k!=0);
min = 1000;
xx=0;
for (i=1;i<n;i++)
{
if((V_M=1000)&&(min >= V_M) && (P_M!=V_M))
{ min=V_M;
xx=i;}
}
z=xx;
V_M[xx]=1;//min;
// z=xx;
P_M[xx]=V_M[xx];
}
z=t;
cout<<" Кратчайший путь: \n"<< t << " "<<endl;
while(t!=q)
{
for(i=0;i<n;i++)
{ if(P_M[j]=P_M+a[j])// (P_M[z]-P_M==a[z])
{ z=i;
//cout << j <<" ";
cout<<i;
}
}
delete [] a;
delete [] V_M;
delete []P_M;
getch();
}
#include <stdio.h>
#include <values.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
main()
{
clrscr();
int q,t;
int z,i,j;
int k,min,xx;
int const n=6;
float a[n][n] = {
{1000, 2, 4,1000,1000, 3},
{ 2,1000,1000, 7,1000,1000},
{ 4,1000,1000, 6,1000,1000},
{1000, 7, 6,1000, 1,1000},
{1000,1000,1000, 1,1000,1000},
{ 3,1000,1000,1000, 1,1000}};
cout<<"First: \n";
cin>>q;
cout<<"End: \n";
cin>>t;
cout<<"\n";
//-----------------------------------------------------------------------
int *P_M=new int[n];
int *V_M=new int[n];
P_M[q-1]=0;
for (i=1;i<n;i++)
{
if(i!=q) V_M=1000;
}
z = q;
while(z!=t)
{ k=0;
for (i=1;i<n;i++)
{
{ if (V_M > V_M[z]+a[z])
{ V_M = V_M[z]+a[z];
k++;
}
}
}
}
while (k!=0);
min = 1000;
xx=0;
for (i=1;i<n;i++)
{
if((V_M=1000)&&(min >= V_M) && (P_M!=V_M))
{ min=V_M;
xx=i;}
}
z=xx;
V_M[xx]=1;//min;
// z=xx;
P_M[xx]=V_M[xx];
}
z=t;
cout<<" Кратчайший путь: \n"<< t << " "<<endl;
while(t!=q)
{
for(i=0;i<n;i++)
{ if(P_M[j]=P_M+a[j])// (P_M[z]-P_M==a[z])
{ z=i;
//cout << j <<" ";
cout<<i;
}
}
delete [] a;
delete [] V_M;
delete []P_M;
getch();
}
Перед блоком из 3х delete отсутствует }
цикл
Код:
while (k!=0);
Либо повесит программу, либо не выполнится ни разу
Здесь
Код:
if((V_M=1000)&&(min >= V_M) && (P_M!=V_M))
и здесь
Код:
{ if(P_M[j]=P_M+a[j])// (P_M[z]-P_M==a[z])
присваивание вместо сравнения