C++程序设计题。编程实现,已知三条边分别为a,b,c,判断是否满足构成一个三角形。

C++程序设计题。编程实现,已知三条边分别为a,b,c,判断是否满足构成一个三角形。,第1张

#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++面向对象程序设计写一段求三角形周长和面积的代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9392780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存