#include
void main()
{
int a,b,c;
printf("Please Input a,b,c:");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(a+b<=c||a+c<=b||b+c<=a) /判断是否能构成三角形/
printf("No!\n");
else
{
printf("Yes!\n");
if(a==c||a==b||b==c) /判断是否为等腰三角形/
{
printf("It can be an isoceles triangle!\n");
if(a==c && a==b) /判断是否为等边三角形/
printf("It also can be an equilateral triangle!\n");
else
printf("But it can not be an equilateral triangle!\n");
}
else
{
printf("It can't be an isoceles triangle!\n");
}
}
getch();
}
在几何中,已知三边的长,求三角形的面积,我们都知道使用求积公式:
△=√[s(s-a)(s-b)(s-c)]
其中s=1/2(a+b+c)
这个公式一般称之为海伦公式,因为它是由古希腊的著名数学家海伦首先提出的。有人认为阿基米德比海伦更早了稳这一公式,但是由于没有克凿的证据而得有到数学界的承认。
#include<stdioh>
#include <mathh>
int main()
{
double a,b,c;
scanf("%f%f%f",&a,&b,&c);
// 1 先判断3边 边长是否满足3角形的条件
if(a+b<=c|| a+c<=b && b+c<=a)
{
printf("不可以组成三角形\n");
return 0;
}
// 2 根据公式求三角形的面积
float s = 1/2 (a+b+c);
float mianji = sqrt(s(s-a)(s-b)(s-c));
printf("三角形面积: %f\n", mianji);
// 3 三角的类型都包括: 等腰, 等边, 直角
if(a==b || a== c || b==c)
{
printf("三角类型: 等腰\n");
}
if(a==b && a== c && b==c)
{
printf("三角类型: 等边\n");
}
float a2 = aa;
float b2 = bb;
float c2 = cc;
if(a2+b2 == c2 || a2+c2==b2 || b2+c2==a2)
{
printf("三角类型: 直角\n");
}
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
enum type
{
area,
circumference,
};
class triangle
{
public:
triangle(float a,float b,float c)
{
this->a=a;
this->b=b;
this->c=c;
valid=((a+b)>c&&(a+c)>b&&(b+c)>a);
}
float getarea() const
{
float t;
if(valid)
{
t=(a+b+c)05;
return sqrt(t(t-a)(t-b)(t-c));
}
else
throw "不能构成三角形,无法求面积";
}
float getcircumference() const
{
if(valid)
return a+b+c;
else
throw "不能构成三角形,无法求周长";
}
static void cal(triangle &tr,enum type t)
{
try
{
switch(t)
{
case area:
cout<<"面积:"<<trgetarea()<<endl;
break;
case circumference:
cout<<"周长:"<<trgetcircumference()<<endl;
break;
}
}
catch(const char ex)
{
cout<<ex<<endl;
}
}
private:
float a,b,c;
bool valid;
};
int main()
{
float a,b,c;
cout<<"请输入三角形的三条边长:";
cin>>a>>b>>c;
triangle t(a,b,c);
triangle::cal(t,area);
triangle::cal(t,circumference);
return 0;
}
0000 0 黑色
0001 1 蓝色
0010 2 绿色
0011 3 青色
0100 4 红色
0101 5 品红色
0110 6 棕色
0111 7 白色
1000 8 灰色
1001 9 淡蓝色
1010 10 淡绿色
1011 11 淡青色
1100 12 淡红色
1101 13 淡品色
1110 14 **
DATAS SEGMENT
COLOR DW 02
BKCOLOR DW 15
COLORINFO DB 13,10,'PLEASE INPUT COLOR HEX CODE(0~E):$'
CRLF DB 13,10,'$'
LENINFO DB 13,10,'PLEASE INPUT THE LENGTH:$'
BUFF DB 10,0,10 DUP (0)
POINT DW 200,400,400,200
DW 200,200,300,100
DW 400,200,300,100
DATAS ENDS
STACKS SEGMENT
DW 200 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
MOV AX,0A000H
MOV ES,AX
CALL INPUTCOLOR
MOV AH,9
MOV DX,OFFSET CRLF
INT 21H
CALL INPUTLEN
MOV AX,0012H
INT 10H ;设置64048016图形模式
MOV AL,2
CALL SET_WRITE_MODE
MOV AX,BKCOLOR
CALL CLEAR
MOV CX,4
MOV SI,OFFSET POINT
DDD: PUSH CX
PUSH SI
MOV AX,[SI]
PUSH AX
MOV AX,[SI+2]
PUSH AX
MOV AX,[SI+4]
PUSH AX
MOV AX,[SI+6]
PUSH AX
CALL LINE
POP SI
ADD SI,8
POP CX
LOOP DDD
MOV AH,01H
INT 21H
MOV AX,4C00H
INT 21H
PIXEL:
PUSH BP
PUSH BX
PUSH CX
PUSH DS
MOV BP,SP
MOV AX,80
MOV BX,WORD PTR[BP+12] ;BX<=Y
MUL BX ;(DX:AX)<=80Y
MOV BX,AX ;
MOV AX,WORD PTR[BP+14] ;AX<--X
MOV CL,8 ; | |
DIV CL ;AL<=商(X/8),AH<=余数(X%8) SP-> | |
MOV CL,AH ;CL<=AH | DS |<-BP
MOV AH,0 ; | CX |<-BP+2
ADD BX,AX ;BX(OFFSET)<=80Y+X/8 | BX |<-BP+4
MOV AL,80H ; | BP |<-BP+6
SHR AL,CL ;AL(MASK)<=(80H>>CL) |返回地址|<-BP+8
PUSH AX ; | COLOR |<-BP+10
MOV DX,3CEH ; | Y |<-BP+12
MOV AL,8 ; | X |<-BP+14
OUT DX,AL ; | |
MOV DX,3CFH ; PIXEL堆栈结构
POP AX
OUT DX,AL
MOV AL,ES:[BX]
MOV AX,WORD PTR[BP+10] ;AX<=COLOR
MOV BYTE PTR ES:[BX],AL
POP DS
POP CX
POP BX
POP BP
RET 6
LINE:
PUSH BP
MOV BP,SP
SUB SP,16
MOV WORD PTR[BP-6],0 ;X=0
MOV WORD PTR[BP-8],0 ;Y=0
MOV WORD PTR[BP-14],1 ;INCX=1
MOV WORD PTR[BP-16],1 ;INCY=1
MOV AX,WORD PTR[BP+6] ;AX<=X2
SUB AX,WORD PTR[BP+10] ;AX<=X2-X1
JNC L1 ;IF X2>=X1,JMP L1
NEG AX ;IF X2<X1,DELTA_X=-DELTA_X
MOV WORD PTR[BP-14],-1 ;INCX<=-1
L1: CMP AX,0 ;IF DELTA_X!=0,JMP L11
JNE L11 ;
MOV WORD PTR[BP-14],0 ;INCX<=0
L11: MOV WORD PTR[BP-10],AX ;DELTA_X<=AX SP-> | |
MOV AX,WORD PTR[BP+4] ;AX<=Y2 | INCY |
SUB AX,WORD PTR[BP+8] ;AX<=Y2-Y1 | INCX |<-BP-14
JNC L2 ;IF Y2>=Y1,JMP L2 | DELTA_Y|<-BP-12
NEG AX ;IF Y2<Y1,DELTA_Y=-DELTA_Y | DELTA_X|<-BP-10
MOV WORD PTR[BP-16],-1 ;INCY<=-1 | Y |<-BP-8
L2: CMP AX,0 ;IF DELTA_Y!=0,JMP L22 | X |<-BP-6
JNE L22 ; |DISTANCE|<-BP-4
MOV WORD PTR[BP-16],0 ;INCY<=0 | T |<-BP-2
L22: MOV WORD PTR[BP-12],AX ;DELTA_Y<=AX | BP |<-BP
LP4: MOV AX,WORD PTR[BP-10] ;AX<=DELTA_X |返回地址|<-BP+2
CMP AX,WORD PTR[BP-12] ; | Y2 |<-BP+4
JG LP5 ;DELTA_X>DELTA_Y | X2 |<-BP+6
MOV AX,WORD PTR[BP-12] ; | Y1 |<-BP+8
MOV WORD PTR[BP-4],AX ;DISTANCE<=DELTA_Y | X1 |<-BP+10
JMP LP51 ; | |
LP5: MOV AX,WORD PTR[BP-10] ; LINE堆栈结构
MOV WORD PTR[BP-4],AX ;DISTANCE<=DELTA_X
LP51: INC AX
MOV WORD PTR[BP-2],AX
LP6: PUSH WORD PTR[BP+10]
PUSH WORD PTR[BP+8]
PUSH COLOR
CALL PIXEL
MOV AX,WORD PTR[BP-6] ;AX<=X
ADD AX,WORD PTR[BP-10] ;AX<=X+DELTA_X
MOV WORD PTR[BP-6],AX ;X=X+DELTA_X
MOV AX,WORD PTR[BP-8] ;AX<=Y
ADD AX,WORD PTR[BP-12] ;AX<=Y+DELTA_Y
MOV WORD PTR[BP-8],AX ;Y=Y+DELTA_Y
MOV AX,WORD PTR[BP-6] ;AX<=X
CMP AX,WORD PTR[BP-4]
JLE LP7 ;IF X<=DISTANCE,JMP LP7
MOV AX,WORD PTR[BP-6] ;X>DISTANCE
SUB AX,WORD PTR[BP-4] ;AX<=X-DISTANCE
MOV WORD PTR[BP-6],AX ;X=X-DISTANCE
MOV AX,WORD PTR[BP+10] ;AX<=X1
ADD AX,WORD PTR[BP-14] ;AX<=X1+INCX
MOV WORD PTR[BP+10],AX ;X1=X1+INCX
LP7: MOV AX,WORD PTR[BP-8] ;AX<=Y
CMP AX,WORD PTR[BP-4]
JLE LP8 ;IF Y<=DISTANCE,JMP LP8
MOV AX,WORD PTR[BP-8] ;Y>DISTANCE
SUB AX,WORD PTR[BP-4] ;AX<=Y-DISTANCE
MOV WORD PTR[BP-8],AX ;Y=Y-DISTANCE
MOV AX,WORD PTR[BP+8] ;AX<=Y1
ADD AX,WORD PTR[BP-16] ;AX<=Y1+INCY
MOV WORD PTR[BP+8],AX ;Y1=Y1+INCY
LP8: DEC WORD PTR[BP-2] ;IF T!=0,JMP LP6
JZ LP9
JMP LP6
LP9: MOV SP,BP
POP BP
RET 8
SET_WRITE_MODE:
PUSH AX
MOV DX,3CEH
MOV AL,5
OUT DX,AL
MOV DX,3CFH
POP AX
OUT DX,AL
MOV DX,3CEH
MOV AL,8
OUT DX,AL
MOV DX,3CFH
MOV AL,0FFH
OUT DX,AL
RET
CLEAR:
MOV BX,0
CLR1: MOV ES:[BX],AL
INC BX
CMP BX,80480
JNB CLR2
JMP CLR1
CLR2: RET
INPUTCOLOR:
MOV AH,9
MOV DX,OFFSET COLORINFO
INT 21H
MOV AH,1
INT 21H
CMP AL,30H
JB INPUTCOLOR
CMP AL,39H
JB INPUTOK
CMP AL,61H
JB BIGCHAR
SUB AL,20H
BIGCHAR:CMP AL,'A'
JB INPUTCOLOR
CMP AL,'F'
JNB INPUTCOLOR
INPUTOK:MOV AH,0
MOV [COLOR],AX
RET
INPUTLEN:
MOV AH,9
MOV DX,OFFSET LENINFO
INT 21H
MOV AH,10
MOV DX,OFFSET BUFF
INT 21H
CALL ABC ;AX为长度
CMP AX,50
JA Q1
MOV AX,50;最小50
JMP OK
Q1:
CMP AX,480
JB OK
MOV AX,480
OK:
MOV BX,640
SUB BX,AX
MOV CX,1
SHR BX,CL
MOV SI,OFFSET POINT ;X居中
MOV [SI],BX
MOV BX,480
SUB BX,AX
MOV CX,1;Y居中
SHR BX,CL
MOV CX,480
SUB CX,BX
MOV [SI+2],CX
MOV BX,[SI]
MOV DX,BX;1X
MOV CX,[SI+2];1Y
ADD BX,AX
MOV [SI+4],BX ;2X
MOV [SI+6],CX ;2Y
MOV [SI+8],DX
MOV [SI+10],CX
MOV [SI+16],BX
MOV [SI+18],CX
PUSH AX
PUSH CX
MOV CX,1
SHR AX,CL
POP CX
ADD DX,AX
MOV [SI+12],DX;3X
MOV [SI+20],DX;3X
MOV BX,866;866
POP AX
MUL BX
MOV BX,1000
DIV BX
SUB CX,AX
MOV [SI+14],CX
MOV [SI+22],CX
RET
;POINT DW 200,200,400,200 1P-2P
; DW 200,200,300,100 1P-3P
; DW 400,200,300,100 2P-3P
ABC PROC
MOV CH,0
MOV BX,OFFSET BUFF
MOV CL,[BX+1]
CMP CX,0
JZ ABCD
PUSH CX
ADD BX,2
PUSH BX
L0: SUB [BX],30H
INC BX
LOOP L0
POP BX
MOV AX,0
MOV CH,0
MOV CL,[BX-1]
L111: MOV DL,10
MUL DL
ADD AL,BYTE PTR [BX]
INC BX
LOOP L111
POP CX
ABCD: RET
ABC ENDP
CODES ENDS
END START
以上就是关于C++程序设计题。编程实现,已知三条边分别为a,b,c,判断是否满足构成一个三角形。全部的内容,包括:C++程序设计题。编程实现,已知三条边分别为a,b,c,判断是否满足构成一个三角形。、C程序设计问题:根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角的类型、用c++面向对象程序设计写一段求三角形周长和面积的代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)