네 가지 연산 랜덤 생성기 -----부분 코드 설명 및 모든 코드 주소

4773 단어

제목 요구


소프트웨어의 기본 기능은 다음과 같습니다.프로그램은 입력 매개 변수 n을 받은 다음에 n개의 가감승제(기호 ±*÷로 표시) 연습 문제를 무작위로 생성할 수 있다. 숫자마다 0과 100 사이, 연산자는 3개에서 5개 사이이다.2. 각 연습 문제에는 적어도 두 가지 연산자가 포함되어야 한다.또한 초등학생은 점수와 마이너스의 개념이 없기 때문에 당신이 낸 연습문제는 연산 과정에서 마이너스와 비정수가 나타나면 안 된다. 예를 들어 3÷5+2=2.6, 2-5+10=7 등 산식이 나타나면 안 된다.연습문제가 생성된 후, 생성된 n개의 연습문제와 그에 대응하는 정답을 파일'result.txt'에 출력하고, 추가 정보를 출력하지 마십시오. 파일 디렉터리는 프로그램 디렉터리와 일치합니다.4. 프로그램이 받은 매개 변수가 4일 때 다음은 출력 파일의 예이다.2018010203 13+17-1=2911*15-5=160 3+10+4-16=1 15 ÷5+3-2=4 소프트웨어 부가 기능 요구 사항은 다음과 같습니다.문제 출제와 정답 구해를 포함한 괄호가 있는 연산식을 지원한다.산식에 존재하는 괄호 수는 반드시 2쌍보다 크고 연산자의 개수를 초과해서는 안 된다는 것을 주의해야 한다.2. 확장 프로그램 기능은 진분수의 출제와 연산을 지원한다(예를 들어 1/6+1/8+2/3=23/24).본 기능을 실현할 때 연산시 점수의 자동화를 지원해야 한다. 예를 들어 1/2+1/6=2/3이 4/6이 아니라 계산 과정과 결과가 모두 진분수가 되어야 한다.

코드 주소: 글의 밑부분 참조


프로젝트 예상 시간 및 실제 시간


psp2.1
작업 내용
계획 완료에 필요한 시간 (h)
실제 완성에 필요한 시간 (h)
Planning
계획
0.1
0.1
Esimate
이 임무는 얼마나 걸릴지 가늠하다
50
24
Developement
개발하다
48
22.5
Analysis
수요 분석(신기술 학습 포함)
2
2
Design Spec
설계 문서 생성
1
1
Coding Standard
코드 사양
1
0.5
Design
구체적 설계
2
1
Coding
세부 코드
20
15
Coding review
코드 재심
1
1
Test
테스트
1
2
Reporting
보고
3
1.5
Test Report
테스트 보고서
0
0
Size Measurement
작업량을 계산하다
0.5
0.5
Postmortem & Process Improvement Plan
사후 총결산을 하고 과정 개선 계획을 제출하다
1
1

부분 코드 설명


기본 기능


사칙 연산 표현식 생성하기
	int num = sc.nextInt();
	boolean judge=judge(num);
	Random random=new Random();
	int realnum=num-random.nextInt(num);
	char[] operator=new char[]{'+','-','*','/'};
	//       。  
	if(judge){			
		//        
		for(int i=0;i

결과에 음수와 소수가 나타나는 것을 피하다

				try {
					String a ="";
					a=a+jse.eval(ex);
					int b = Integer.valueOf(a);
					if( b<0) {
						i=i-1;
				}
				else{
					expression1.add(ex);
				}
				}
				catch (NumberFormatException e) {
						// TODO Auto-generated catch block
						i=i-1;
						
				}

추가 기능


임의 생성 괄호
			int m=random.nextInt(n-1)+2;
			int num0=0;
		    while(num0==0){
				for(int k=0;k

소포의 숫자를 삭제하는 무의미한 괄호
				ArrayList numbers=new ArrayList();
				for(int b=0;b<=n;b++) {
					String number0='('+String.valueOf(number[b])+')';
					numbers.add(number0);
				}
				num0=0;
				for(String number0:numbers) {
					ex=ex.replace(number0, String.valueOf(number[num0]));
					num0++;
				}

진분수 가감 연산
for(int i=0;inumber[k+1]) {
				int temp=number[k];
				number[k]=number[k+1];
				number[k+1]=temp;
			}
		}
		result1=number[0];
		result2=number[1];
		boolean flag=false;
		boolean flag2=false;
		for(int k=0;k<=n-1;k++) {
		    result1=number[(k+1)*2]*result2+number[(k+1)*2+1]*result1;
			result2=result2*number[(k+1)*2+1];
			int result0=division(result1,result2);
			result1/=result0;
			result2/=result0;
			if(k==n-1&&result1>result2) {
				flag=true;//        ,      
			}
			else if(k==n-1&&result1==result2) {
				flag2=true;//   1,    1,   1/1
			}
		}
		if(flag) {
			i--;
			continue;
		}
		String ex = new String();
		for(int k=0;k

총결산


/이번 작업은 많은 시간이 걸렸는데 그 중에서 개인적으로 가장 어려운 점은 괄호를 생성하는 것이다. 오른쪽 괄호를 생성하는지 왼쪽 괄호를 생성하는지 안 생성하는지 어떻게 판단하는가이다.진분수는 상대적으로 간단하다. 정상적인 두 냥으로 연산하고 순환하여 마지막 결과를 얻는다.스스로 써서 자바 라이브러리의 다양한 함수 운용을 미리 숙지할 수 있다면 작업량이 크게 줄어들 것이다. 이번 프로젝트를 포함해서도 자바스크립트의 eval 함수를 사용하여 계산된 코드량을 면할 수 있다.그리고 스트링 클래스의 일부 함수도 나를 도와 많은 일을 면하게 했다.나는 자바가 가지고 있는 함수를 유연하게 활용하는 것을 습득하면 많은 일을 줄일 수 있다는 것을 깊이 느꼈다.그 밖에 코드를 쓰기 전에 인터넷에서 다른 사람의 코드를 참고하고 선인의 경험을 빌려 더 적은 시간에 더 많은 일을 할 수 있고 다른 사람의 지혜를 배워서 자신의 생각보다 더 많은 것을 얻을 수 있다.

github 주소:https://github.com/lost1deer/javaWork.git

좋은 웹페이지 즐겨찾기