当前位置:编程学习 > VB >>

各位大侠,小弟在工作中遇到了难题求大家帮忙

  小弟在工作中遇到了个棘手的问题,以前读书的时候学过VB编程只是简单的大学里应付考试用的,现在基本上全还给老师了。所以在这里请大家帮个忙!我遇到的问题是,例如一组数据: 20.3  23 34 46  123  145  174  173.9  220.3  237.2 198.3 183.2 177.3  现在这样的数值从20多到300左右含小数点的数值,怎样把这些数值中的几个数值相加,结果是798.8到800.9范围内的数,那几个相加的数值要显示出来。数值用完就不能重复使用了。(最好是把所有数值输入进去求出结果分成一组一组的显示出来)。
   在这里小弟先谢谢大家了!  QQ 315829567  邮箱 langzexuelong@sina.com  谢谢各位大虾  工作 编程 数据 --------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = "20.3 23 34 46 123 145 174 173.9 220.3 237.2 198.3 183.2 177.3".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => double.Parse(x));
            var result = foo(data, new double[] { }, 798.8, 800.9);
            foreach (var item in result)
            {
                Console.WriteLine("sum: {0}, items: {1}", item.Sum(), string.Join(", ", item.Select(x => x.ToString())));
            }
        }

        static IEnumerable<IEnumerable<double>> foo(IEnumerable<double> data, IEnumerable<double> includenum, double min, double max)
        { 
            double includenum_sum = includenum.Sum();
            if (includenum.Sum() > min && includenum_sum < max) yield return includenum;
            if (includenum.Sum() < min)
            {
                foreach (double d in data.Except(includenum).Where(x => includenum_sum + x < max && (includenum.Count() == 0 || x > includenum.Max())))
                {
                    foreach (var item in foo(data, includenum.Concat(new double[] { d }), min, max))
                    {
                        yield return item;
                    }
                }
            }
        }
    }
}


sum: 799.4, items: 20.3, 23, 34, 46, 145, 173.9, 174, 183.2
sum: 799.8, items: 20.3, 23, 34, 145, 174, 183.2, 220.3
sum: 799.7, items: 20.3, 23, 34, 145, 173.9, 183.2, 220.3
sum: 800.8, items: 20.3, 23, 34, 173.9, 174, 177.3, 198.3
sum: 800.8, items: 20.3, 23, 46, 123, 174, 177.3, 237.2
sum: 800.7, items: 20.3, 23, 46, 123, 173.9, 177.3, 237.2
sum: 800.8, items: 20.3, 34, 46, 123, 174, 183.2, 220.3
sum: 800.7, items: 20.3, 34, 46, 123, 173.9, 183.2, 220.3
sum: 800.8, items: 20.3, 34, 46, 145, 174, 183.2, 198.3
sum: 800.7, items: 20.3, 34, 46, 145, 173.9, 183.2, 198.3
sum: 799.8, items: 20.3, 34, 173.9, 174, 177.3, 220.3
sum: 799.8, items: 20.3, 46, 145, 174, 177.3, 237.2
sum: 799.7, items: 20.3, 46, 145, 173.9, 177.3, 237.2
sum: 799.1, items: 20.3, 46, 174, 177.3, 183.2, 198.3
sum: 799, items: 20.3, 46, 173.9, 177.3, 183.2, 198.3
sum: 799.1, items: 20.3, 123, 198.3, 220.3, 237.2
sum: 800.1, items: 20.3, 145, 177.3, 220.3, 237.2
sum: 799.4, items: 20.3, 177.3, 183.2, 198.3, 220.3
sum: 799.7, items: 23, 34, 145, 177.3, 183.2, 237.2
sum: 799.1, items: 23, 46, 145, 173.9, 174, 237.2
sum: 799.5, items: 23, 145, 174, 220.3, 237.2
sum: 799.4, items: 23, 145, 173.9, 220.3, 237.2
sum: 798.9, items: 34, 46, 123, 177.3, 198.3, 220.3
sum: 800.7, items: 34, 46, 123, 177.3, 183.2, 237.2
sum: 800.5, items: 34, 173.9, 174, 198.3, 220.3
sum: 800.5, items: 46, 123, 174, 220.3, 237.2
sum: 800.4, items: 46, 123, 173.9, 220.3, 237.2
sum: 800.5, items: 46, 145, 174, 198.3, 237.2
sum: 800.4, items: 46, 145, 173.9, 198.3, 237.2
sum: 800.8, items: 46, 174, 177.3, 183.2, 220.3
sum: 800.7, items: 46, 173.9, 177.3, 183.2, 220.3
sum: 799.1, items: 123, 145, 173.9, 174, 183.2
sum: 800.8, items: 145, 198.3, 220.3, 237.2
Press any key to continue . . . --------------------编程问答-------------------- 版主可否私聊 教教我 我现在快愁死了,以前读书的时候学过VB简单的操作,现在全还给老师了。QQ: 315829567 我的联系方式 --------------------编程问答--------------------
引用 2 楼 u012430713 的回复:
版主可否私聊 教教我 我现在快愁死了,以前读书的时候学过VB简单的操作,现在全还给老师了。QQ: 315829567 我的联系方式

下载一个C#,新建一个控制台程序,贴上上面的代码,即可得到结果

下载地址:http://go.microsoft.com/?linkid=9709940 --------------------编程问答-------------------- 用C语言吗? 还有就是里面的数字不能重复使用怎么办 --------------------编程问答--------------------
引用 4 楼 u012430713 的回复:
用C语言吗? 还有就是里面的数字不能重复使用怎么办

你看结果中哪个不对。 --------------------编程问答-------------------- 我看明白了版主 那是不同的数相加 同一个结果 太感谢你了!  我是直接将代码复制过去就可以吗 --------------------编程问答--------------------
引用 6 楼 u012430713 的回复:
我看明白了版主 那是不同的数相加 同一个结果 太感谢你了!  我是直接将代码复制过去就可以吗

对的。

是C#,不是C,别搞错了。至少需要2010版本,也可以是2012 2013。 --------------------编程问答-------------------- 我直接用你给我连接下载的 谢谢版主 十分的感谢 --------------------编程问答-------------------- 版主我怎么运行不对呀, 你可以远程帮我吗?  我的QQ315829567
--------------------编程问答--------------------
引用 9 楼 u012430713 的回复:
版主我怎么运行不对呀, 你可以远程帮我吗?  我的QQ315829567


你最好下这个:http://go.microsoft.com/?linkid=9709969
前面那个是在线安装的,这个是离线版本的。下载好以后解压缩直接安装。 --------------------编程问答-------------------- 我的结果显示的那个 窗口怎么显示  --------------------编程问答-------------------- 按ctrl+f5 --------------------编程问答-------------------- 十分感谢 版主   收徒弟一拜 --------------------编程问答-------------------- 版主能否设计个固定的窗口,每次使用时只需要把数字输进去,然后输出每组数据。 --------------------编程问答-------------------- 这么懒呀,这个自个弄下不就好了 --------------------编程问答-------------------- 学习。。。。。 --------------------编程问答--------------------
引用 14 楼 u012430713 的回复:
版主能否设计个固定的窗口,每次使用时只需要把数字输进去,然后输出每组数据。


这个,你可以自己尝试改写,有不懂的欢迎来论坛提问。只能授人以渔,授人以鱼的事情是没法做的。 --------------------编程问答-------------------- 是我确实不怎么会鼓捣 所以在这里请教大家跟大家学习下 --------------------编程问答--------------------
引用 18 楼 u012430713 的回复:
是我确实不怎么会鼓捣 所以在这里请教大家跟大家学习下


找本书先入门下吧。 --------------------编程问答-------------------- 我现在是急用在工作上,版主推荐本书吧,多学学以后用得到
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,