分布式系统K-可靠算法

环境 VC6.0 控制台
代码
#include<stdio.h>
#include<stdlib.h>
#include <memory.h>
#define  SIZE_NODE 100
#define  SIZE_BLOCK 15

void main()
{
    
int n = 0, m = 0;
    printf("请输入 节点数(小于等于%d的正整数):",SIZE_NODE);
    scanf("%u"&n);
    
while ( n > SIZE_NODE )
    {
        printf("节点数超出了范围!\n");
        printf("请输入 节点数(小于等于%d的正整数):",SIZE_NODE);
        scanf("%u"&n);
        fflush(stdin);
    }
    fflush(stdin);
    printf("请输入文件块数(小于等于%d的正整数):",SIZE_BLOCK);
    scanf("%u"&m);
    
while ( m > SIZE_BLOCK )
    {
        printf("文件块数超出了范围!\n");
        printf("请输入文件块数(小于等于%d的正整数):",SIZE_BLOCK);
        scanf("%u"&m);
        fflush(stdin);
    }
    printf("\n节点数:%d,文件块数:%d\n",n,m);

    
/*动态分配二维数组*/
    
bool isFormatErr = false//判断格式错误
    int  max_antiFactor = 0//最大反分布式系数
    int  dist_coefficient = 0//分布式系数
    int  *antiFactor_arrary = (int*)malloc(sizeof(int)*m); //反分布式系数数组
      memset(antiFactor_arrary, 0, m*sizeof(antiFactor_arrary));//初始化数组值为0
    char **node_array = (char**) malloc(sizeof(char *)*n);//节点数组
    for ( int i = 0; i < n; ++i)
    {
        node_array[i]=(char *)malloc(sizeof(char)*m);
        
do
        {
            printf("请输入第%d个节点(%d位0 1数):",i+1,m);
            fflush(stdin);
            scanf("%s",node_array[i]);
            
for (int j = 0 ; j < m ; ++j)
            {
                
if (node_array[i][j] != '0' && node_array[i][j] != '1')
                {
                    isFormatErr = true;
                    printf("第%d个节点输入了非0 1的非法字符!请重新输入\n",i+1);
                    
break;
                }
            }
            
if ( j == m )
            {
                
for (j = 0 ; j < m ; ++j)
                {
                    
if (node_array[i][j] == '0')
                        antiFactor_arrary[j]++;        
                }
                
isFormatErr = false;
            }
        } while (isFormatErr);

    }
    printf("\n%d %d\n",n,m);
    
for ( i = 0; i < n; ++i)
    {
        printf("%s\n",node_array[i]);
        free(node_array[i]);
    }
    max_antiFactor = antiFactor_arrary[0];
    
for (int j = 1 ; j < m ; ++j)
    {
        
if (antiFactor_arrary[j] > max_antiFactor)
            max_antiFactor = antiFactor_arrary[j];
    }
    dist_coefficient = n - max_antiFactor;
    printf("分布式系数为:%d\n",dist_coefficient);
  free(antiFactor_arrary);
    free(node_array);
}

 

posted @ 2010-10-22 10:20  zhouli  阅读(310)  评论(0编辑  收藏  举报