소프트웨어 공학 2차 작업

6716 단어
소프트워크 2차 작업
컨텐트
읽기 강의 예습(https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html) 섹션 2:개인 개발 기술
개인 프로그램(본 작업의 내용은 웹 사이트에서 유래한 것:https://www.cnblogs.com/xinz/p/7417960.html, 및https://www.cnblogs.com/jiel/p/4810756.html)의 인물인 아초처럼 초등학교 네 개의 연산 문제를 자동으로 생성할 수 있는 명령행인'소프트웨어'를 쓴다.C, C++ 또는 C# 등의 언어로 구현할 수 있습니다.
요구 사항
각각 초등학교 1, 2, 3, 4, 5학년의 네 가지 연산 요구를 실현할 수 있고 각 학년의 난이도 요구를 점차적으로 실현할 수 있다. 입력을 통해 서로 다른 학년을 선택할 수 있고 각 학년은 어려움을 구분해야 한다. 중, 이 세 등급은 3, 4, 5학년에 대해 괄호와 여러 개의 연산자 프로그램을 지원하여 옳고 그름을 판단하고 누적 득점과 시간을 한 번에 100개의 문제를 낼 수 있다.또한 중복(예를 들어 2+3과 3+2가 중복된) 상상을 충분히 발휘하여 초등학생 수학 검측에 필요한 기능을 충족시키는 작업 2git 학습과 코드 클라우드 코드 위탁 관리 플랫폼 gitee 읽기 사이트 주소는 다음과 같다git의 사용에 관한 것이다.https://www.liaoxuefeng.com/wiki/896043488029600또는https://gitee.com/help/categories/43이전에 이미 등록된 코드 클라우드 계정을 통해 작업 1에 쓴 코드를 gitee 플랫폼의 개인 창고에 간단하게 위탁 관리하는 것을 배울 수 있다
블로그에서 작업과 쓴 코드를 포함하고gitee에 위탁된 링크를 제공합니다
코드 링크
https://gitee.com/tao_tao_chen1/soft_work/blob/master/Math.cpp
감상
미치겠네. PAT 알고리즘 문제 안의 간단한 계산기에 따라 개량하여 모든 기능을 실현하려고 했는데 데이터 구조의 기초가 튼튼하지 않아서 그 코드는 아무리 고쳐도 안 된다. 가장 기초적인 순환 분기문구로만 쓸 수 있고 코드는 600줄에 가깝게 썼지만 가치 있는 것이 적어서 점수 계산을 실현했다. 시간 관계로 인해 시간과 중복이 없는 기능은 실현되지 못했다.다음에 기회가 되면 다시 와서 수정하겠습니다.
코드
/*      
        10  2     ,     10  3     ,     20  3     
        100  2     ,     100  3     ,     1000  3     
        2   1    ,   2   2    。   1             
        2   1    ,   2         ,   3          (             )(a/b/c      3      abc    )
                ,             ,   4        (          )
*/
#include
#include
#include 
#include 
using namespace std;
//           A1081            
typedef long long ll;
int ans4,ans5,ans6;//   
ll gcd(ll a,ll b){//                
 return b==0?a:gcd(b,a%b);
}
struct Fraction{//  
	ll up,down;//  ,  
};
Fraction reduction(Fraction result){//     
	if(result.down<0){
		result.down=-result.down;
		result.up=-result.up;
		
	}
	if(result.up==0){
		result.down=1;
	}else{
		int d=gcd(abs(result.up),abs(result.down));
		result.down/=d;
		result.up/=d;
	}
	return result;
}
//       
Fraction add(Fraction f1,Fraction f2){
	Fraction result;
	result.up=f1.up*f2.down+f2.up *f1.down;
	result.down=f1.down*f2.down;
	return reduction(result);
}
Fraction minu(Fraction f1,Fraction f2){
	Fraction result;
	result.up=f1.up*f2.down-f2.up *f1.down;
	result.down=f1.down*f2.down;
	return reduction(result);
}
Fraction multi(Fraction f1,Fraction f2){
	Fraction result;
	result.up=f1.up*f2.up;
	result.down=f1.down*f2.down;
	return reduction(result);
}
Fraction divide(Fraction f1,Fraction f2){
	Fraction result;
	result.up=f1.up*f2.down;
	result.down=f1.down*f2.up;
	return reduction(result);
}
//     
void showResult(Fraction r){
	reduction(r);
	if(r.down==1) printf("%lld
",r.up); else if(abs(r.up)>r.down){// ans4=r.up/r.down; ans5=abs(r.up)%r.down; ans6=r.down; }else{// ans4=0; ans5=r.up; ans6=r.down; } } int ans; int ans1;// int ans2;// double ans3;//(a/b/c 3 ) int a1[100],b1[100],c1[100];//10 int main(){ Fraction sum,sum2,temp,sum3,sum4; sum.up=0; sum.down=1; sum2.up=0; sum2.down=1; sum3.up=1; sum3.down=1; sum4.up=1; sum4.down=1; int right=0; int wrong=0; int grade; int degree;//3 Difficulty level,respectively are difficult=3 medium=2 easy=1 int num;// printf(" , 1, 2, 3, 4, 5
"); scanf("%d",&grade); printf(" , 1, 2, 3
"); scanf("%d",&degree); switch(grade){ case 1: if(degree==1){ printf("
"); printf("
"); scanf("%d",&num); srand((unsigned) (time(NULL))); for(int i=0;i=n2){ a1[i]=n1; b1[i]=n2; } else{ a1[i]=n2; b1[i]=n1; } } for(int i=0;i=0&&n1+n3-n2>=0){ a1[i]=n1; b1[i]=n2; c1[i]=n3; i++;} } for(int i=0;i=0&&n1+n3-n2>=0){ a1[i]=n1+10; b1[i]=n2+10; c1[i]=n3+10; i++;} } for(int i=0;i=n2){ a1[i]=n1; b1[i]=n2; } else{ a1[i]=n2; b1[i]=n1; } } for(int i=0;i=0&&n1+n3-n2>=0){ a1[i]=n1; b1[i]=n2; c1[i]=n3; i++;} } for(int i=0;i=0&&n1+n3-n2>=0){ a1[i]=n1; b1[i]=n2; c1[i]=n3; i++;} } for(int i=0;i0){ i++; printf(" %d * %d-%d =
",n1,n2,n3); scanf("%d",&ans); if(n1*n2-n3==ans){ printf(" !
"); right++;} else{ printf(" !
"); wrong++;} } else{ i++; printf(" %d * %d+%d =
",n1,n2,n3); scanf("%d",&ans); if(n1*n2+n3==ans){ printf(" !
"); right++;} else{ printf(" !
"); wrong++;} } } printf(" %d , %d
",right,wrong);} break; case 4: if(degree==1){ printf(" "); printf("
"); scanf("%d",&num); srand((unsigned) (time(NULL))); for(int i=0;i

좋은 웹페이지 즐겨찾기