Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


это снова я)))
Код: Выделить весь код
#include "stdafx.h"
#include <iostream>
#include <string.h>
//#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <math.h>
#include <iomanip>
using namespace std;
const 
int N=6;
int n1=7;
int n2=7;
long int Sa=0;
long int Sb=0;
typedef long int predpr[N];
typedef long int rasp[N][N];
predpr A,B,alfa,betta,B_d,x;
rasp c,p;
int ik;
long int f,f0,x_min,Sp;
unsigned char Nt,x_p,r,r_min,ki,kj,Na,Nb,i,j,h,l;
char d;
unsigned char u[N*N];


int kkk(unsigned char ki,unsigned char kj)
{int i,j;
int k,k_min;
bool b;
b=1;
for (i=1;i<=Na;i++)
for (j=1;i<=Nb;j++)
if (p[i][j]==-1)
{k=(c[i][j]-alfa[i]-betta[j]);
if (b==true)
{b=false;
ki=i;
kj=j;
k_min=k;
} else if (k<k_min) 
{k_min=k;
ki=k;
kj=j;
}}
return k_min;
}

void gotoxy(int x, int y)// Аналог функции gotoxy в Паскале
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);	
}


void PrintS(unsigned char x,unsigned char y, char  s[30])
{gotoxy(x,y);
cout<<s;
}

void Print(int x,int y,int a )
{gotoxy(x,y);
printf("%d",a);
}
void Tabl()
{system("cls");
h=6+Na*3;
l=14+Nb*7;
gotoxy(1,3);
//for (i=1;i<=Na+1;i++)
//{gotoxy(1,i*3+2);
//}
for (i=1;i<=Na;i++)
{gotoxy(5,i*3+3);
std::cout<<"A"<<i;
}
for (i=1;i<=Nb;i++)
{gotoxy(i*(n1+1)+n1-2,3);
std::cout<<"B"<<i;
}
l=Nb*(n1+1)+n1+3;
h=Na*3+6;
PrintS(4,3,"\\Bj");
PrintS(4,4,"Ai\\");
PrintS(l,4,"Ui");
PrintS(3,h," Vj");

}
void W_P()
{int i,j,h,l,k;
long int c_max;
k=0;
for (i=1;i<=Na;i++)
{
h=i*3+4;
for (j=1;j<=Nb;j++) 
{
l=j*(n1+1)+n2-5;
gotoxy(l,h);
std::cout<<std::setw(n1)<<" ";
if (p[i][j]>0) 
{
k++;
Print(l-floor(log((double)p[i][j])/log(10.0))+5,h,p[i][j]);
}
else if (p[i][j]==0) 
{
Print(l+n1-2,h,p[i][j]);
k++;
}}}
//while (a_b=true) 
{k++;}
if (k>Na+Nb-1) PrintS(40,1,"k > n+m-1");
}
void W_W(predpr a,unsigned char b,char c)
{int i,l,m;
for (i=1;i<=b;i++)
{gotoxy(32,1);
system("cls");
std::cout<<c<<i<<'= ';
//Rid(a[i],n1);
switch (c)
{case 'A':{gotoxy(n2-floor(log((double)a[i])/log(10.0)),i*3+4);break;}
case 'B': {gotoxy(n2+i*(n1+1)-floor(log((double)a[i])/log(10.0)),4);break;}
}
std::cout<<a[i];
}}
void div_mod(char c, char& a, char& b)
{
 b=c % Nb;
 a=c / Nb +1;
 if (!b) { b=Nb; a--; }
}
void Rek(unsigned char Xi,unsigned char Yi,bool z, unsigned char   c)
{
unsigned char i,j;
z=false;
switch (c)
{case 1:{for (i=1;i<=Na;i++) if (i!=Xi) if (p[i][Yi]>-1) 
{u[(Xi-1)*Nb+Yi]=(ki-1)*Nb+kj;
z=!z;
exit;
}break;}
case 2:{ for (i=1;i<=Nb;i++) if (i!=Yi) if (p[Xi][i]>-1)
{if (u[(Xi-1)*Nb+i]==0) 
{u[(Xi-1)*Nb+Yi]=(Xi-1)*Nb+i;
c=1;
Rek(Xi,i,z,c);
if (z=true)  exit;
}else if ((Xi==ki) && (i=kj)) 
{u[(Xi-1)*Nb+Yi]=(ki-1)*Nb+kj;
z=!z;
exit;
}}u[(Xi-1)*Nb+Yi]=0;
c=c%2+1;}
break;}}

void kontur()
{char i,j,k,mi,mj,l;
bool z;
long int p_m;
for (i=1;i<=N*N;i++) u[i]=0;
l=1;
Rek(ki,kj,z,l);
i=ki; j=kj;
k=u[(i-1)*Nb+j];
div_mod(k,i,j);
mi=i;
mj=j;
l=1;
do
{l++;
k=u[(i-1)*Nb+j];
div_mod(k,i,j);
if (l%2==1) 
if (p[i][j]<p[mi][mj]) 
{
mi=i; mj=j;
}}
while ((i==ki) && (j==kj));
i=ki; j=kj; l=0;
p_m=p[mi][mj];
do
{
if (l%2==0) 
{
p[i][j]=p[i][j]+p_m;
} else 
{
p[i][j]=p[i][j]-p_m;
}
if (l==0) p[i][j]++;
k=u[(i-1)*Nb+j];
div_mod(k,i,j);
l++;}
while ((i==ki) && (j==kj));
p[mi][mj]=-1;
}
void Nul(predpr a)
{int i;
for (i=1;i<=N;i++)
a[i]=0;
}
long int  FF()
{int i,j;
long int f;
f=0;
for (i=1;i<=Na;i++)
for (j=1;i<=Nb;j++)
if (p[i][j]>0) 
f=f+c[i][j]*p[i][j];
i++;
j++;
gotoxy(65,Nt+2);
std::cout<<"F"<<Nt<<"="<<f;
return f;
}
/*bool a_b()
{int k,i,j;
predpr Z_a,Z_b;
bool d;
Nul(Z_a);
Nul(Z_b);
alfa[1]=0;
Z_a[1]=1;
k=1;
do
d=true;
for (i=1;i<=Na;i++)
if (Z_a[i]==1)
for (j=1;j<=Nb;j++)
if ((p[i][j]>-1)&&(Z_b[j]==0))
{
Z_b[j]=1;
betta[j]=c[i][j]-alfa[i];
k++;
d=false;
}
for (i=1;i<=Nb;i++)
if (Z_b[i]==1) for (j=1;j<=Na;j++)
if  ((p[i][j]>-1)&&(Z_a[j]==0)) 
{Z_a[j]=1;
alfa[j]=c[i][j]-betta[i];
k++;
d=false;
}
while ((k==Na+Nb) || d);
if (d=true) 
{i=1;
while (Z_a[i]==1) {i++;}
while (Z_b[j]==0) {j++;}
p[i][j]=0;
Print((j+1)*(n1+1)+n2-8,i*3+4,p[i][j]);
}
return d;
}*/

void Pauza()
{char ad;
//d=KeyPressed;
getch();
gotoxy(40,1);
system("cls");
}



int _tmain(int argc, _TCHAR* argv[])
{
Nul(alfa); 
Nul(betta);
Nt=1;
system("cls");
Na=1;
Nb=1;
do
{
std::cout<<"Postavshiki:";
std::cin>>Na;
std::cout<<"Potrebiteli:";
std::cin>>Nb;}
while (((Na>1)&&(Na<=N-1))&&((Nb>1)&&(Nb<=N-1)));
Tabl();
/*PrintS(1,1,"Kol-vo tovara");
W_W(A,Na,'A');
W_W(B,Nb,'B');
gotoxy(1,1);
system("cls");
cout<<"Stoimost perevozki:";
for (i=1;i<=Na;i++)
for (i=j;j<=Nb;j++)
{gotoxy(29,1);
system("cls");
cout<<"A"<<i<<"->B"<<j<<"";
cin>>c[i][j];
//Rid(c[i][j],5);
Print((n1+1)*j+n2-4,i*3+3,c[i][j]);
}*/
getch();

	return 0;
}
Дело такое.вместо того чтобы вывести A[от 1 до 2] и B[ от 1 до 3] процеДУРА tabl() выводит A[i] где i сначала символы потом цифры.если значениям Na и Nb изначально присвоить какие то значения( например 2 и 3) то вывод нормальный.я думаю что чтото с типами не так

Отправлено: 22:51, 31-03-2009 | #42