zoukankan      html  css  js  c++  java
  • 2020软件工程作业03

     这个作业属于哪个课程

     https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1

     这个作业要求在哪里

     https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494

     这个作业的目标

     独立编程完成数独

     作业正文

     如下所示

     其他参考文献

     CSDN以及百度

    PSP表格

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

    60

           40

    Estimate

    估计这个任务需要多少时间

    720

          1860

    Development

    开发

    240

           420

    Analysis

    需求分析 (包括学习新技术)

    180

    180

    Design Spec

    生成设计文档

    30

    60

    Design Review

    设计复审

    30

    60

    Coding Standard

    代码规范 (为目前的开发制定合适的规范)

    60

    60

    Design

    具体设计

    60

    90

    Coding

    具体编码

    180

    600

    Code Review

    代码复审

    30

    60

    Test

    测试(自我测试,修改代码,提交修改)

    30

    60

    Reporting

    报告

    60

    120

    Test Repor

    测试报告

    30

    30

    Size Measurement

    计算工作量

    30

    60

    Postmortem & Process Improvement Plan

    事后总结, 并提出过程改进计划

    60

    60

    合计

    1020

    2100

       打开博客园刚看到这个题目我就蒙了。。。光是看到一大堆的素材我就不太想看下去。一瞬间丝入死灰,超出我的范围。在我查看了无数的网络资料,看了无数大佬的代码后,我发现我并没有看懂什么,他们写的数独游戏大部分都是写的九宫格,对于我来说难度有点大,所以,作为学渣的我留下了悔恨的眼泪,后悔大一大二都去打了水漂。重整旗鼓我就打算研究最简单的三宫格(我只能看看最简单是不是能看懂)

    一些结题思路(好像只适用于三宫格)

     

    流程图

     

    关键代码

    行遍历与列遍历void input()

    {
      FILE* fp1;
      fp1 = fopen("input.txt", "r");
      for (int i = 0; i < 3; i++)                      //读取数据
      {
        for (int j = 0; j < 3; j++)
        {
            fscanf(fp1, "%d", &a[i][j]);
            if (a[i][j] != 0)                    //遇到已知数字,放入b数组 ?
           {
             row[t] = i;
             line[t] = j;
             b[t] = a[i][j];
             t++;
         }
       }
      }
    }

    void output()
    {
       FILE* fp2;
       fp2 = fopen("output.txt", "w");
       for (int i = 0; i < 3; i++)
       {
          for (int j = 0; j < 3; j++)
          {
     
            fprintf(fp2, "%d ", a[i][j]);
          }
          fprintf(fp2, " ");
       }
    }

    代码分析

    行遍历与列遍历

    void hang()
    {
       int y = 6;
       for (int i = 0; i < 3; i++)              //从第一行开始遍 ?
       {
          int temp = 0;
          for (int j = 0; j < 3; j++)
          {
          if (a[i][j] != 0)
          temp++;
          }
          if (temp == 2)                         //如果遇到已知两个值的,就把剩下那个空填上
            {
              for (int k = 0; k < 3; k++)        //找出未知数,方法和search一 ?
              {
                if (a[i][k] != 0)
                {
                   y = y - a[i][k];
                }
             }
             for (int f = 0; f < 3; f++)       //把空缺填 ?
             {
                if (a[i][f] == 0)
                {
                   a[i][f] = y;
                } 
              }
              y = 6;
           }
          else
          continue;
         }
    }
     
     
    void lie()
    {
       int y = 6;
       for (int i = 0; i < 3; i++)              //从第一列开始遍 ?
       {
          int temp = 0;
          for (int j = 0; j < 3; j++)
           {
            if (a[j][i] != 0)
            temp++;
           }
          if (temp == 2)                         //如果遇到已知两个值的,就把剩下那个空填上
          {
             for (int k = 0; k < 3; k++)
             {
                if (a[k][i] != 0)
                {
                   y = y - a[k][i];
                }
             }
             for (int f = 0; f < 3; f++)
               {
                if (a[f][i] == 0)
                a[f][i] = y;
               }
            }
            y = 6;
       }
    }

    代码调试

    由于在VS之前就已经执行过了,其实没有什么错误

     

     八

    总结

    只有一句话:我太太太难了。当然,和大佬比起来我啥也不是。从一开始的完全不知道怎么下手,到开始有了一点思路,主要是站在前人的肩膀上,有了大佬提供的思路,才能 有一些想法。完全觉得自己没有啥动手能力,我枯了。感觉对于编程我会的都是一些书面知识。后续的其他宫格我也会继续研究,希望自己有看懂的一天。hhhh

    github地址:https://github.com/Helitrope-daisy/20177670

  • 相关阅读:
    gdb调试libtool封装的可执行文件
    转载 Linux top命令详解
    VirtualBox使用物理硬盘建立磁盘
    【sqlServer】常用语句整理
    【c#基础】特殊集合
    【c# 基础】各种集合的不同情况下的性能
    【c#集合】Lookup 类 有序字典 SortedDictionary<TKey,TValue> 集
    【c#基础】集合--栈Stack 链表 LinkList 有序列表SortedList 字典Dictionary
    【c#基础】集合
    【c#基础】委托、Lambda表达式和事件
  • 原文地址:https://www.cnblogs.com/helitrope/p/12593701.html
Copyright © 2011-2022 走看看