m0_73386123 2023-09-11 06:50 采纳率: 42.9%
浏览 42
已结题

c语言 算法 输入参数 找区间数据

输入两个整数,比如
7 回车
15回车
在文件x.txt中找出相关区间
x中文件内容是
——
1
3
5
..
12
14
..
23
24
26
27
28
——
1
..
5
6
8
9
..
15
16
17
——
——是区间分隔符,..是内部分隔符上下之间大等于3即可
区间都是3层结构,分a,b,c,三段
区间长度,内部数据长度都不统一
根据7找a,b,c的最后一个数据是否是正负2差距
7+2,7-2,比如5=7-2,14=15-1满足就输出第一个区间
——
1
3
5
..
12
14
..
23
24
26
27
28
——
要输出区间
7对应在b,15对应在c,输出
7对应在a,15对应在b,输出
只有两种结果 abc,bca
不能跨界,比如7在a,15在c,ac~b,不成立
要求同时满足
然后输出整个区间
c语言,或者python都可以

  • 写回答

24条回答

  • 进哥聊编程 新星创作者: 编程框架技术领域 2023-09-18 09:36
    关注
    获得6.90元问题酬金

    以下是用Python实现的代码,可以读取指定文件x.txt中的数据并进行查找:

    # 读取文件内容
    with open("x.txt", "r") as f:
        contents = f.readlines()
    
    # 去除每行末尾的换行符
    contents = [line.strip() for line in contents]
    
    # 定义函数:判断一个数是否在指定区间内
    def in_range(num, range_str):
        if num < int(range_str.split("..")[0]):
            return False
        if num > int(range_str.split("..")[1]):
            return False
        return True
    
    # 定义函数:获取指定区间内的数据
    def get_data_in_range(data, range_str):
        range_start = int(range_str.split("..")[0])
        range_end = int(range_str.split("..")[1])
        data_in_range = []
        for num in data:
            if in_range(num, range_str):
                data_in_range.append(num)
        return data_in_range
    
    # 输入两个数
    num1 = int(input())
    num2 = int(input())
    
    # 查找符合条件的区间
    for i in range(len(contents)):
        if contents[i] == "——":
            continue
        range_a = contents[i].split(" ")[-1]  # 区间a
        range_b = contents[i+1].split(" ")[-1]  # 区间b
        range_c = contents[i+2].split(" ")[-1]  # 区间c
        data_a = contents[i+1].split(" ")[:-1]  # 区间a内的数据
        data_b = contents[i+2].split(" ")[:-1]  # 区间b内的数据
        data_c = contents[i+3].split(" ")[:-1]  # 区间c内的数据
        
        # 判断符不符合条件
        if abs(int(data_a[-1])-num1) != 2 or abs(int(data_b[-1])-num2) != 2:
            continue
        if in_range(num1+2, range_b) and in_range(num2-2, range_c):
            print("abc:")
            print(contents[i:i+4])
            print(get_data_in_range(data_a, range_a))
            print(get_data_in_range(data_b, range_b))
            print(get_data_in_range(data_c, range_c))
        elif in_range(num1+2, range_c) and in_range(num2-2, range_b):
            print("bca:")
            print(contents[i:i+4])
            print(get_data_in_range(data_b, range_b))
            print(get_data_in_range(data_c, range_c))
            print(get_data_in_range(data_a, range_a))
    

    代码中使用了两个函数,in_range函数用于判断一个数是否在指定区间内,get_data_in_range函数用于获取指定区间内的数据。

    在判断符不符合条件时,先判断区间a对应的数据与第一个输入的数之间是否是正负2差距,再判断区间b和区间c对应的数据是否分别包含第二个输入的数加减2后的结果。如果符合条件,则输出符合条件的区间以及内部的数据。

    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 修改了问题 9月13日
  • 修改了问题 9月13日
  • 请详细说明问题背景 9月12日
  • 展开全部