如何在编写此程序时?(标签-ios|关键词-stream)

在编写此程序时,我试过很多例子,结果都是正确的,但是提交上去就是错的。用类编程是为了练习课上所学成果,请各位帮我看看问题在哪,以下是题目以及我的代码。谢谢!

img

#include<iostream>
using namespace std;

class fraction {
    int p, fenm = 1, fenz = 0; int a[10][2];
public:
    void setgroup(int m, int a[][2]);
    void output();
};

void fraction::setgroup(int m, int c[][2])
{
    int i;
    p = m;
    for (i = 0; i < p; i++) { a[i][0] = c[i][0]; a[i][1] = c[i][1]; }
}

void fraction::output()
{
    int i, j, temp;
    for (i = 0; i < p; i++)
    {
        fenm *= a[i][1];
        for (j = 0; j < p; j++) if (i != j) a[i][0] *= a[j][1];
        fenz += a[i][0];
    }
    if (fenm > fenz) temp = fenm; else temp = fenz;
    for (i = 2; i < temp; i++)
    {
        if (fenz % i == 0 && fenm % i == 0) {
            fenz /= i; fenm /= i;
        }
    }
    if (fenm == 1) cout << fenz;
    else cout << fenz << "/" << fenm;
}

int main()
{
    int n, b[10][2], i; char str;
    cin >> n;
    for (i = 0; i < n; i++) cin >> b[i][0] >> str >> b[i][1];
    fraction fen;
    fen.setgroup(n, b);
    fen.output();
    return 0;
}

  • 这篇博客: 个人测试Stream底层原理与逻辑中的 首先我们做一个测试 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 下面流中的map和forEach函数式接口方法
    通俗来讲,map其实就是类型转换的作用,
    我只是测试所以还是返回的数组,forEach我用作输出控制台

    int[] ints ={1,2,3};
          Arrays.stream(ints).map(arr->{
             int i=0;  i++;
         System.out.println(i+"次");
         return arr;}).forEach(System.out::println);
    

    下面是执行结果

    //执行结果
    1次
    1
    1次
    2
    1次
    3
    

    可以看出其实Stream底层是多线程运行的,有多少数据需要处理就创建多少个线程,而且是并发的,当某线程运行完成,会进入等待状态,等待它线程执行完成,然后以正确的顺序得到结果,之间是没有任何关系的,各运行各自的,但是数据是安全的,至于是不是上了锁,怎么实现的 我就没有没有时间研究了

    通过Stream.of方式测试

       	  Stream.of(1,2,3).map(arr->{
             int i=0;  i++;
          System.out.println(i+"次");
          return arr;}).forEach(System.out::println);