rendered paste body#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
int xsize;
int ysize;
char filename[20]="./macierz.txt";
FILE*plik=fopen(filename,"r");
fscanf(plik,"%d %d\n",&xsize,&ysize);
xsize++;
ysize++;
int macierz[xsize][ysize];
char wiersz[100],*pch,*p=new char[2];
int x ,y=0, val, zmiana = 1, k, min_k, nr=1;
printf("Rozmiar tablicy: %d x %d \n", xsize-1, ysize-1);
// Czytamy z pliku i uzupelniamy macierz
while(fgets(wiersz, 100, plik)!=NULL){
x=0;
pch = strtok (wiersz," ");
while (pch != NULL){
p=strncpy(p,pch,1);
p[1]='\0';
val = atoi(pch);
macierz[x][y]=val;
pch = strtok (NULL, " ");
x++;
}
y++;
}
fclose(plik);
printf("\nmacierz poczatkowa\n");
for(int y_=0; y_<ysize;y_++){
for(int x_=0; x_<xsize; x_++ ){
if (x_ == xsize-1) printf ("|");
printf("%5d ",macierz[x_][y_]);
}
printf("\n");
}
for (y=0; y<ysize-1; y++){
// Szukamy minimum w rzedzie
int min_x=0;
int min_val=macierz[0][y];
for (x=0; x< xsize-1 ; x++)
if ( macierz[x][y] < min_val )
{
min_val = macierz[x][y];
min_x = x;
}
for (x=0; x< xsize-1 ; x++)
macierz[x][y] = macierz[x][y] - min_val;
}
for (x=0; x<xsize-1; x++){
// Szukamy minimum w kolumnie
int min_y=0;
int min_val=macierz[x][0];
for (y=0; y< ysize-1 ; y++)
if ( macierz[x][y] < min_val )
{
min_val = macierz[x][y];
min_y = y;
}
for (y=0; y< ysize-1 ; y++)
macierz[x][y] = macierz[x][y] - min_val;
}
printf("\nmacierz po normalizacji \n");
for(int y_=0; y_<ysize;y_++){
for(int x_=0; x_<xsize; x_++ ){
if (x_ == xsize-1) printf ("|");
printf("%5d ",macierz[x_][y_]);
}
printf("\n");
}
// Proces rozkładu zapotrzebowania transportowego
for (y=0; y<ysize-1; y++){
int jest, ile;
do{
for (x=0; x<xsize-1; x++){
if (macierz[x][y]==0){
jest=x;
for (y=0; y<ysize-1; y++){
if (macierz[x][y]==0){
jest=x;
cout<<x;
}
}
}
if (macierz[x][y]==0){
int Ai = macierz[xsize-1][y];
int Bi = macierz[x][ysize-1];
int Mini=Ai;
if (Bi<Ai)
Mini=Bi;
macierz[x][y] = Mini;
macierz[xsize-1][y] -= Mini;
macierz[x][ysize-1] -= Mini;
}
else
macierz[x][y] = -200;
}
}
while(jest=0);
}
macierz[3][3] = 0;
printf("\nmacierz po optymallizacji \n");
for(int y_=0; y_<ysize;y_++){
for(int x_=0; x_<xsize; x_++ ){
if (x_ == xsize-1) printf ("|");
printf("%5d ",macierz[x_][y_]);
}
printf("\n");
}
system("PAUSE");
return EXIT_SUCCESS;
}