一个编程题目的习语言实现

来源:互联网 发布:数据结构 算法 严 编辑:程序博客网 时间:2024/04/24 19:55


feter1网友在群中提了如下一个编程题目:
    现有一数组,其元素值见文件test.txt,要求通过编程的方法求出这组数中值最大的元素、值最小的元素和中值元素。结果通过编程的方法写入文本文件中输出。
    数据源文件的结构说明如下:
a) 文件中的第一行为数组中元素总数(不包括自身所在行),第一行不参与运算。
b) 从第二行起为数组中的元素取值。
c) 中值,即数组中元素按照一定顺序排序后,位于中间的数即为该数组的中值。如,数组{13,5,8,14,22,37,26,19,11}的中值为14。

    上面问题的习程序实现如下: ( 程序带有调试打印语句 )

#包含 "习语言系统.接口"

无返回值 插入数字( 整数类型 *数组, 整数类型 数组长度, 整数类型 *数据个数, 整数类型 添加数 )
{
整数类型 你,我;

如果( * 数据个数 等于 0 并且 数组长度>0)
{
   数组[0] = 添加数;
   (*数据个数) 加加;
}
或者( 数组长度 > *数据个数 )
{
   数组[*数据个数] = 添加数;
  
   步进循环(你 = *数据个数; 你> 0; 你 减减 )
   {
    如果( 数组[ 你] > 数组[你-1] )
    {
     我= 数组[你];
     数组[你]=数组[你-1];
     数组[你-1]=我;
    }
   }
   (*数据个数) 加加;
}
系统_格式输出(“%(换行)%(整数):%(整数),%(整数),%(整数),%(整数),%(整数),%(整数),%(整数),%(整数)”,
*数据个数, 数组[0] ,数组[1],数组[2],数组[3],数组[4],数组[5],数组[6],数组[7]);
}

整数类型 主函数( )
{
文件类型 *wj;
字符类型 行[256]={48,48,48,48,48,48,48,48,48,48,48,48,48};
整数类型 总数=0,当前数字;
整数类型 *输入数组, 有效数 = 0;

wj = 系统_文件_打开(“test.txt”, “r+”);

如果( wj 等于 空指针 )
{
   系统_输出字符串并换行(“无法打开文件test.txt”);
   返回 1;
}
如果( 系统_文件_读字符串( 行, 255, wj) != 空指针 )
{
   系统_格式输出(“%(整数),%(整数),%(整数),%(整数),%(整数)”,行[0] ,行[1],行[2],行[3],行[4]);
   如果( 系统_是数字( 系统_当前字(行) ) )
   {
    总数 = 系统_字符串转整数( 行, 空指针, 10 );
    系统_格式输出(“%(换行)总数=%(整数)”,总数);
   }
   否则
   {
    系统_输出字符串并换行(“首行无效”);
    返回 2;
   }
}

如果(总数 等于 0 )
{
   系统_输出字符串并换行(“总数错误,请检查数据文件”);
   返回 3;
}

输入数组 = ( 整数类型 *)系统_申请内存数组( 总数,类型长度(整数类型) );
如果( 输入数组 等于 空指针 )
{
   系统_输出字符串并换行(“内存不足”);
   返回 4;
}

循环( 非 系统_文件_结束( wj ) )
{
   如果( 系统_文件_读字符串( 行, 255, wj) == 空指针 )
    跳出;
  
   当前数字 = 系统_字符串转整数( 行, 空指针, 10 );
   系统_格式输出(“%(换行)当前数字=%(整数)”,当前数字);
   如果( 有效数 < 总数 )
    插入数字( 输入数组,总数, &有效数, 当前数字 );
   否则
    跳出;
}

系统_格式输出(“%(换行)最大数字=%(整数)”,输入数组[0]);
系统_格式输出(“%(换行)最小数字=%(整数)”,输入数组[总数-1]);
系统_格式输出(“%(换行)中值数字=%(整数)”,输入数组[总数/2]);
系统_文件_定位( wj , 0, 宏_定位_文件尾);
系统_文件_格式输出(wj,“%(换行)最大数字=%(整数)”,输入数组[0]);
系统_文件_格式输出(wj, “%(换行)最小数字=%(整数)”,输入数组[总数-1]);
系统_文件_格式输出(wj, “%(换行)中值数字=%(整数)”,输入数组[总数/2]);

系统_文件_关闭( wj );
系统_释放内存( 输入数组);
返回 0;
}

点击这里下载源码、目标代码

原创粉丝点击