汇编语言-求毕达哥拉斯三角形的边

1. 题目:给定一条最长边,求所有可能的毕达哥拉斯三角形。

2.
实验要求:一个毕达哥拉斯三角形的三条边是由三个正整数A、B和C组成,从而A2+B2=C2。例如,数字3、4、5,由于9+16=25,而形成一个毕达哥拉斯三角形。写一段完整的汇编程序,实现输入一个值给C,然后显示值为C时,所有可能的毕达哥拉斯三角形。例如,如果输入5作为C的值,那么输出可以是:

A             
B             
C

3                   
4                  
5

4                   
3                  
5

3.
提示:由于C边的值已经给定,建立一个双重循环,外循环将A初值设1,每次循环加1,直到等于C-1;内循环将B值设为1,每次循环加1,直到等于C-1。在内循环中如果A2+B2=C2成立,则当前的A、B、C是一个毕达哥拉斯三角形的边,并显示,如果不成立,继续循环。


 1 ; Example assembly language program
2 ; Author: karllen
3 ; Date: revised 5/2014
4
5 .386
6 .MODEL FLAT
7
8 ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
9
10 INCLUDE io.h ; header file for input/output
11
12 cr EQU 0dh ; carriage return character
13 Lf EQU 0ah ; line feed
14
15 .STACK 4096 ; reserve 4096-byte stack
16
17 .DATA
18 promot BYTE "Please Enter a number as the max slide ",0
19 value BYTE 40 DUP(?)
20 nc DWORD ?
21 na DWORD ?
22 nb DWORD ?
23 n DWORD ?
24
25 answer BYTE " A B C ",0
26 crLf BYTE cr,Lf,0
27
28
29 .CODE ; start of main program code
30 _start:
31 mov ebx,0
32 mov ecx,0
33
34 output promot
35 input value,40
36 atod value
37
38 mov nc,eax
39 mov n, eax
40
41 mul nc
42 mov nc,eax ;C*C
43 output answer
44 output crLf
45 doFirstWhile:
46 inc ebx
47 mov ecx,0
48 cmp ebx,n
49 jge endFirstWhile ;大于等于n则转移
50
51 mov eax,ebx
52 mul ebx
53 mov na,eax ;A*A
54 doSecondWhile:
55 inc ecx
56 cmp ecx,n
57 jge endSecondWhile ;大于等于n则转移
58 ;执行比较
59
60 mov eax,ecx
61 mul ecx ;B*B
62 mov nb,eax
63 mov edx,nb
64
65 add edx,na ;A*A+B*B
66
67 cmp edx,nc
68 jne stanIf ;不等于则转移
69
70 ;output answer
71 dtoa value,ebx
72 output value
73
74 dtoa value,ecx
75 output value
76
77 dtoa value,n
78 output value
79 output crLf
80
81 jmp doSecondWhile
82 stanIf:
83 jmp doSecondWhile
84 endSecondWhile:
85 jmp doFirstWhile
86
87 endFirstWhile:
88
89 INVOKE ExitProcess, 0 ; exit with return code 0
90
91 PUBLIC _start ; make entry point public
92
93 END ; end of source code

汇编语言-求毕达哥拉斯三角形的边,布布扣,bubuko.com

时间: 2024-08-07 08:30:58

汇编语言-求毕达哥拉斯三角形的边的相关文章

HDOJ 2202 最大三角形 凸包旋转卡壳求最大三角形面积

凸包旋转卡壳求最大三角形面积 最大三角形 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3316    Accepted Submission(s): 1119 Problem Description 老师在计算几何这门课上给Eddy布置了一道题目,题目是这样的:给定二维的平面上n个不同的点,要求在这些点里寻找三个点,使他们构成的三角

汇编语言-求分段函数值

计算函数值 题目:计算给定函数值 要求:编制程序,计算下面函数值 其中,从键盘输入x,y,输出数据为a. 输入输出时候都要求有提示信息. 考查知识点:分支结构的应用. 代码如下: 1 ; Example assembly language program -- 2 ; Author: karllen 3 ; Date: revised 5/2014 4 5 .386 6 .MODEL FLAT 7 8 ExitProcess PROTO NEAR32 stdcall, dwExitCode:DW

hdu 3934&&poj 2079 (凸包+旋转卡壳+求最大三角形面积)

链接:http://poj.org/problem?id=2079 Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 8173   Accepted: 2423 Description Given n distinct points on a plane, your task is to find the triangle that have the maximum area, whose vertices

叉乘、快速排斥与跨立实验及求取三角形面积

<pre name="code" class="cpp">叉乘 (一)判断方向 (二)判断线段相交 (三)求三角形面积 (一)判断方向 叉乘的性质如下: (1). P x Q > 0; 表示P在Q的顺时针方向; (2). p x Q < 0; 表示P在Q的逆时针方向; (3). P x Q = 0; 表示P和Q是共线的 P(x1,y1),Q(x2,y2), P*Q=x1y2-x2y1 判断结果三种状态 模版为: struct point {

汇编语言-求X的阶乘

1. 题目:求X的阶乘值 2. 要求:输入一个整型数(不超过10),求出其阶乘值后输出,求阶乘的算法用子程序来实现. 3. 提示:可以用递归来实现,也可以用简单的循环来实现. 这里使用循环来实现: 对于汇编新手,最好通过高级语言的编程测试,然后再写汇编代码,这样效果会好一些. 求阶乘的C++代码如下: 1 //The program is to find the factorial from 1 to 10 2 //author:Karllen 3 //Date: 05/21/2014 4 5

汇编语言-求所有的素因子

求给定整数的所有素因子 1. 题目:求给定整数的所有素因子 2. 要求:输入一个整数,求出其所有素因子,并表现为乘积方式,求因子的算法用子程序来实现.例如,输入480,输出480=2*2*2*2*2*3*5 C++代码如下 1 //The program is to find all the prime factors of a number 2 //Author:Karllen 3 //Date: 05/22/2014 4 #include <iostream> 5 6 void findP

求最大三角形——poj2079

用旋转卡壳的思想,固定住一点,然后剩下两点通过单峰函数的性质进行移动 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<vector> #include<algorithm> using namespace std; typedef double db; const db eps=1e-8; const db pi=acos(-

NYOJ 815 三角形【海伦公式】

/* 关键点:海伦公式 解题人:lingnichong 解题时间:2014-10-04 21:48:47 解题体会:海伦公式的使用 */ 三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 在数学中,如果知道了三个点的坐标,我们就可以判断这三个点能否组成一个三角形:如果可以组成三角形,那么我们还可以求出这个三角形的面积.作为一个大学生,如果给你三个点的坐标,你能快速判断出这三个点能组成一个三角形吗?如果可以组成三角形,你能快速求出三角形的面积吗? 输入 第一行输

百度2017春招笔试真题编程题集合之寻找三角形

题目描述 三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用'R', 'G', 'B'表示. 现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大.但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同. 输入描述: 首先输入一个正整数N三维坐标系内的点的个数.(N <= 50) 接下来N行,每一行输入 c x y z,c为'R', 'G', 'B' 的其中一个.x,y,z是该点的坐标.(坐标均是0到999之间的整数) 输出描述: 输出一个数表示最大的三