【数据结构】预备练习——文件读写

一、先看题目

使用一个文本文件存储一组数据(x),编程读取数据并计算y=1/(200-x)的值,显示并保存结果,如果是非法操作,输出"Error"。

具体要求:

1 输入数据要典型,有代表性,输入数据类型为float。

2 能够处理错误输入数据,并输出"Error"。

3 使用文本文件作为程序的输入和输出。

文件读写参考:

打开文件
fp=fopen("input.txt","r");

错误判断

cpp 复制代码
if(fp==NULL){
	printf("Not SUCH A FILE:%s",af);
	getch();
	return;
}

读入数据

cpp 复制代码
fscanf(fp,"%d",&num);
fscanf(fp,"%f,%d",&x[i],&y[i]);

打开文件(写文件)
fp=fopen("result.txt","w");

写数据
fprintf(fp,"%d,%.2f,%d,%.2f\n",i,x[i],y[i],b[i]);

下面是程序

cpp 复制代码
#include <iostream>
#include <cstdio>

int writeToFile(int n, FILE *f);
float fx(float x);

int main() {
    const int N = 100;

    // 打开文件并写入数据
    FILE *f = fopen("./input.txt", "w");
    if (f == NULL) {
        std::cerr << "Failed to open input file for writing!" << std::endl;
        return 1;
    }
    
    if (writeToFile(N, f) != 0) {
        std::cerr << "Error writing to file!" << std::endl;
        return 1;
    }

    // 打开文件并读取数据
    FILE *fin = fopen("./input.txt", "r");
    if (fin == NULL) {
        std::cerr << "Failed to open input file for reading!" << std::endl;
        return 1;
    }

    FILE *fout = fopen("./output.txt", "w");
    if (fout == NULL) {
        std::cerr << "Failed to open output file!" << std::endl;
        fclose(fin);
        return 1;
    }

    // 动态分配数组
    float *x = new float[N];
    float *y = new float[N];

    // 读取文件内容并计算
    for (int i = 0; i < N; i++) {
        fscanf(fin, "%f", &x[i]);
        y[i] = fx(x[i]);
    }

    // 将结果写入输出文件
    for (int i = 0; i < N; i++) {
        fprintf(fout, "%f\t%f\n", x[i], y[i]);
    }

    // 关闭文件并释放内存
    fclose(fin);
    fclose(fout);
    delete[] x;
    delete[] y;

    return 0;
}

// 向文件中写数据
int writeToFile(int n, FILE *f) {
    if (f == NULL) {
        std::cerr << "Not SUCH A FILE !" << std::endl;
        return 1;
    }
    for (float x = 0; x < n; x++) { 
        fprintf(f, "%f\n", x);
    }
    fclose(f);
    return 0;
}

// 定义函数 f(x)
float fx(float x) {
    if (x == 200) {
        fprintf(stderr, "Error: division by zero\n");
        return -1;
    } else {
        return 1 / (200 - x);
    }
}
相关推荐
深情汤姆1 小时前
C++ 红黑树
数据结构·c++
skaiuijing1 小时前
Sparrow系列拓展篇:消息队列和互斥锁等IPC机制的设计
c语言·开发语言·算法·操作系统·arm
绵绵细雨中的乡音2 小时前
C++第28课-布隆过滤器的介绍
c++·哈希算法
C++忠实粉丝3 小时前
计算机网络socket编程(5)_TCP网络编程实现echo_server
网络·c++·网络协议·tcp/ip·计算机网络·算法
kim56593 小时前
excel版数独游戏(已完成)
算法·游戏·excel·数独
cv君4 小时前
【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦
算法
胜天半子_王二_王半仙4 小时前
c++源码阅读__smart_ptr__正文阅读
开发语言·c++·开源
Ocean☾4 小时前
C语言-详细讲解-P1217 [USACO1.5] 回文质数 Prime Palindromes
c语言·数据结构·算法
程序猿阿伟4 小时前
《C++智能合约与区块链底层交互全解析:构建坚实的去中心化应用桥梁》
c++·区块链·智能合约
沐泽Mu4 小时前
嵌入式学习-C嘎嘎-Day08
开发语言·c++·算法