исправление алгоритма

Тема в разделе "C/C++/C#", создана пользователем aaaaaaaaaa, 4 май 2011.

Наш партнер Genesis Hackspace
  1. aaaaaaaaaa

    aaaaaaaaaa Гость

    помогите пожалуйста найти ошибку. программа должна находить начальный опорный план транспортной задачи методом минимального элемента. но что то не получается, а в чем ошибка не пойму.
    Спасибо

    #include "stdafx.h"

    using namespace System;
    #include<stdio.h>
    #include <conio.h>

    int main(array<System::String ^> ^args)
    {
    int m,n,i,j;
    int *A= new int [m];
    int *B= new int [n];
    int** C;
    int s;
    int** matr;

    if( A==NULL){
    Console::WriteLine("Не удалось выделить память!");
    return 1;}
    if( B==NULL){
    Console::WriteLine("Не удалось выделить память!");
    return 1;}
    Console::WriteLine("Введите количество поставщиков (A)");
    scanf("%d",&m);
    Console::WriteLine("Введите запасы поставщиков");
    for(i=0;i<=m;i++){
    printf("A[%d]= ",i);
    scanf("%d", &A);
    }
    Console::WriteLine("Введите количество потребителей (;)");
    scanf("%d",&n);
    Console::WriteLine("Введите заявки потребителей ");
    for(i=0;i<=n;i++){
    printf("B[%d]= ",i);
    scanf("%d", &B);
    }

    Console::WriteLine("Введите матрицу стоимости ");
    C = new int* [m];
    for(i=0;i<=m;i++)
    C= new int [n];

    for (i=0;i<=m;i++)
    for(j=0;j<=n;j++){
    printf("C[%d][%d]= ", i,j);
    scanf("%d", &C[j]);
    }
    for (i=0;i<=m;i++)
    for(j=0;j<=n;j++){
    printf("C[%d][%d]= %d \n",i,j,C[j]);

    }

    matr= new int* [m];
    for(i=0;i<=m;i++)
    matr= new int [n];
    if( matr==NULL){
    Console::WriteLine("Не удалось выделить память!");
    return 1;}
    int r,k;
    int min;
    min= 1000;
    for(i=0;i<=m;i++)
    for(j=0;j<=n;j++){
    for(i=0;i<=m;i++)
    for(j=0; j<=n;j++){
    if(C[j]< min)
    {
    min=C[j];
    r=i;
    k=j;
    }
    }
    if (A[r]<B[k])
    {
    matr[r][k]=A[r];
    B[k]=B[k]-A[r];
    A[r]=0;
    for(r=0;r<=m;r++){
    C[r][j]=999;
    }

    }
    if(B[k]>A[r])
    {
    matr[r][k]=B[k];
    A[r]=B[k]-A[r];
    B[k]=0;
    for(k=0;k<=n;k++){
    C[k]=999;
    }
    }
    if(A[r]=B[k])
    {
    matr[r][k]=B[k];
    A[r]=B[k]-A[r];
    B[k]=0;
    for(k=0;k<=n;k++){
    C[k]=999;
    }
    }
    }


    Console::WriteLine("Опорный план: ");
    for (r=0;r<=m;r++)
    for(k=0;k<=n;k++){
    printf("matr[%d][%d]= %d \n",r,k,matr[r][k]);
    }

    Console::WriteLine(" Значение целевой функции для этого опорного плана равно: ");
    printf("%d",s);
    _getch();
    }
     
Загрузка...

Поделиться этой страницей