• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
读取TXT文件数据,自动找到每行最小值及其坐标

 

 

使用:

 0 工程建立

我使用的环境  VS2015 

新建一个C++空工程,加入一个 main.cpp,代码如下。

 

 1 修改自己的txt是几行几列的,默认 4*4

 2 修改txt的文件名名称,默认名:这个txt地址放在VS工程下,和main.cpp同一个目录。

其他说明;

1 txt可以存的是小数

2 如果需要最大值和平均值,其函数已经留出,自行调用。

#include<stdio.h>
#include<stdlib.h>

// 1 修改txt 的行列数
#define N 4   //4列
#define L 4  //4行

// 2修改txt名称
const char file_name[50] = "myfile.txt";

// ----------------------------------使用 输入一个一维数组,求其中最小值-------------------------------------
double min(const double *buf, const double bufsize) //计算数组buf中的最小值,参数bufsize为数组buf的元素数量
{
	double tmp = buf[0];
	int i = 0;
	for (; i < bufsize; i++)
	{
		if (tmp >= buf[i])
			tmp = buf[i];
	}
	return tmp;
}

// -----------------------------使用 输入一个一维数组,求其中最小值的列坐标---------------------------------
int min_x(const double *buf, const double bufsize) //计算数组buf中的最小值的坐标 lie是其列数,参数bufsize为数组buf的元素数量
{
	double tmp = buf[0];
	int i = 0;
	int lie = 0;
	for (; i < bufsize; i++)
	{
		if (tmp >= buf[i]) {
			tmp = buf[i];
			lie = i;
		}
	}
	return lie;
}

// -------------------------没有使用 输入一个一维数组,求其中最大值--------------------------------
int max(const int *buf, const int bufsize) //计算数组buf中的最大值,参数bufsize为数组buf的元素数量
{
    int tmp = buf[0];
    int i = 0;
    for (; i < bufsize; i++)
    {
        if (tmp <= buf[i])
            tmp = buf[i];
    }
    return tmp;
}

//----------------------- 没有使用 输入一个一维数组,求其中平均值----------------------------------

float avg(const int *buf, const int bufsize) //计算数组buf中的平均值,参数bufsize为数组buf的元素数量
{
    float sum = 0;
    int i = 0;
    for (; i < bufsize; i++)
    {
        sum += buf[i];
    }
    return sum / bufsize;
}

// ---------------------- 主函数----------------------------------

int main(int argc, char *argv[])
{
	FILE *fp;
	double data[N][L] = { 0.0 };   //二维数组
	double data_hang[L] = { 0.0 };
	int index[N] = { 0 };   //二维数组列下标
	double temp;
	int i, j;
	int count = 0;  //计数器,记录已读出的浮点数
	if ((fp = fopen(file_name, "rb")) == NULL) {
		printf("请确认文件(%s)是否存在!\n", file_name);
		exit(1);
	}
	while (1 == fscanf(fp, "%lf", &temp)) {
		data[count%N][(index[count%N])++] = temp;
		count++;
	}

	printf("				最小值:			列			行");printf("\n");
	for (i = 0; i < L; i++) {
		printf("第%d行元素为: \n", i + 1);
		for (j = 0; j < index[i]; j++) {
			printf("%.0f ", data[j][i]);
			data_hang[j] = data[j][i];
		}
	
     //  每行最小值
		printf("			%.0f			", min(data_hang, L)); //其中  min(data_hang, L)返回一个double的最小值
	  // 每行最小值坐标    
		printf("%d			%d ", min_x(data_hang, L)+1, i);  //其中 min_x(data_hang, L)+1 列    i 行


		printf("\n");
	}



	fclose(fp);
	system("pause");
	return 0;
}

  

 

  

posted on 2018-08-22 02:28  MKT-porter  阅读(600)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3