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
    这个作业的目标 实现一个命令行程序,不妨称之为Sudoku
    作业正文 如下
    其他参考文献 百度

     

    1、Github项目地址

     https://github.com/qqxy799/20177602

    2、PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划  20  60
    Estimate 估计这个任务需要多少时间  600  1000
    Development 开发 360 540
    Analysis 需求分析 (包括学习新技术) 60 240
    Design Spec 生成设计文档 30 40 
    Design Review 设计复审 20 30 
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 20 
    Design 具体设计 40 60 
    Coding 具体编码 60 150 
    Code Review 代码复审 30 30 
    Test 测试(自我测试,修改代码,提交修改) 30 30 
    Reporting 报告 20 20 
    Test Repor 测试报告 20 20 
    Size Measurement 计算工作量 20 20
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 30 
    合计   1350 2290

     3、思路描述

    1、了解数独的规则,完成数独的算法

    2、用cmd命令行的形式来读出写入文件

    3、进行性能改进以及单元测试

    4、代码说明

    #define _CRT_SECURE_NO_DEPRECATE
    #include <fstream>
    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int main(int argc, char* argv[])
    {
    int m, n;
    FILE* fp1;
    FILE* fp2;
    m = atoi(argv[2]);//命令行输入的第三个参数:宫格阶级
    n = atoi(argv[4]);//命令行输入的第五个参数:待解答盘面数目
    //以文本只读方式打开intput.txt
    fp1 = fopen("input.txt", "r");
    if (fp1 == NULL) //打开文件失败
    return -1;
    //打开output.txt,并立即关闭
    fp2 = fopen("output.txt", "w");
    if (fp2 == NULL) //打开文件失败
    return -1;
    fclose(fp2);//关闭文件
    int i, j, k, num, w, p, q;
    int sudoku[10][10];
    int sign[4] = { 0 };//存放行列中已经出现的数
    fp2 = fopen("output.txt", "a");
    for (num = 0; num < n; num++)
    {
    //输入表盘的二维数组
    for (i = 0; i < m; i++)
    {
    for (j = 0; j < m; j++)
    {
    fscanf(fp1, "%d", &sudoku[i][j]);
    }
    }
    while (1)
    {
    w = 0;
    //判断表盘中是否还有未填数的空格
    for (i = 0; i < m; i++)
    {
    for (j = 0; j < m; j++)
    {
    if (sudoku[i][j] == 0)
    {
    w++;
    }
    }
    }
    if (w == 0)//表示表盘已经填完
    {
    break;
    }
    for (i = 0; i < m; i++)
    {
    for (j = 0; j < m; j++)
    {
    if (sudoku[i][j] != 0)
    continue;
    //若该空格为填入,则进行行列遍历,找到已出现的数
    if (sudoku[i][j] == 0)
    {
    //行遍历
    for (q = 0; q < 3; q++)
    {
    if (sudoku[i][q] != 0)
    {
    sign[sudoku[i][q]] = 1;
    }
    }
    //列遍历
    for (q = 0; q < 3; q++)
    {
    if (sudoku[q][j] != 0)
    {
    sign[sudoku[q][j]] = 1;
    }
    }
    p = 0;//p用于记录该空格的候选数数量
    for (q = 1; q < 4; q++)
    {
    if (sign[q] == 0)//表示该空格所在行列中均没有q
    {
    p++;
    k = q;
    }
    }
    }
    if (p == 1)
    {
    sudoku[i][j] = k;
    }
    //初始化sign[]
    for (q = 0; q < 4; q++)
    {
    sign[q] = 0;
    }
    }
    }
    }
    //输出完整表盘
    for (i = 0; i < 3; i++)
    {
    for (j = 0; j < 3; j++)
    {
    fprintf(fp2, "%d ", sudoku[i][j]);
    if (j == 2)
    fprintf(fp2, " ");
    }
    }
    fprintf(fp2, " ");
    }
    return 0;
    }

    5、调试以及输入输出

     

     6、总结

    在众多大佬以及网络上的各种搜索资料的帮助下,终于是完成了这次作业。通过这次的作业,更是学到了不少东西,典型的就是github。希望能够在以后的学习中,更上一层楼。

    <iframe src="https://free.modao.cc/app/9b2570508a478d7ab4dfa65e447133fc2010d7e9/embed/v2" width="500" height="1000" allowTransparency="true" frameborder="0"></iframe>

  • 相关阅读:
    hive metastore && hiveserver2 . 基本配置
    Flink HA 搭建坑
    protobuf 编译安装
    编译Hadoop 2.7.2支持压缩 转
    centos 6挂载磁盘
    python
    python之面向对象(一)
    python
    python-文件压缩和解压
    python-configparser模块
  • 原文地址:https://www.cnblogs.com/suibian799/p/12622091.html
Copyright © 2011-2022 走看看