如何用c++画三角形
3个回答
2016-03-21 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
/**
*画正三角形程序
*/
#include<iostream>
using namespace std;
int main()
{
int rows;
cout<<"请输入三角形的高的行数:"<<endl;
cin>>rows; //输入三角形的高的行数
int s=10;
int MaxStart=rows*2-1; //计算出这么高的三角型的最底层的星星数.
for(int i=0;i<rows;i++) //画行.
{
s = 1; //控制空格的数量,当s=0后,不再输出空格.
for(int j=0;j<MaxStart;j++) //画列
{
if(j==((MaxStart+1)/2-i)) //第一行开始的星星是在第(MaxStart+1)/2的位置,下一行比上一行前一位,所以-i;
{
for(int k=0;k<((2*i)+1);k++) //计算该行的星星的个数;
{
cout<<"*";
s = 0;
}
}
if(s == 1) //当s=0后,不再输出空格.
cout<<" ";
}
cout<<endl;
}
system("pause");
return 0;
}
*画正三角形程序
*/
#include<iostream>
using namespace std;
int main()
{
int rows;
cout<<"请输入三角形的高的行数:"<<endl;
cin>>rows; //输入三角形的高的行数
int s=10;
int MaxStart=rows*2-1; //计算出这么高的三角型的最底层的星星数.
for(int i=0;i<rows;i++) //画行.
{
s = 1; //控制空格的数量,当s=0后,不再输出空格.
for(int j=0;j<MaxStart;j++) //画列
{
if(j==((MaxStart+1)/2-i)) //第一行开始的星星是在第(MaxStart+1)/2的位置,下一行比上一行前一位,所以-i;
{
for(int k=0;k<((2*i)+1);k++) //计算该行的星星的个数;
{
cout<<"*";
s = 0;
}
}
if(s == 1) //当s=0后,不再输出空格.
cout<<" ";
}
cout<<endl;
}
system("pause");
return 0;
}
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
展开全部
这个题的关键,是判断一个点,落在三角形以内,还是落在三角形以外。
下面调用手头现成的判断一个点,落在凸多边形以内,还是落在凸多边形以外的程序。
int pnpoly(int npol, float *xp, float *yp, float x, float y);
程序步骤:
输入三角形 三个顶点点坐标 xi,yi, 逆时针次序 (保证 叉乘积 为正,为三角形内)
输入填充点的间距 dx,dy
计算 Bounding Box
在 Bounding Box 范围内 找点,落在三角形以内的 调用 你给的drawpoint(int x,int y,int color)
==========================================
#include <stdio.h>
#include <math.h>
int pnpoly(int npol, float *xp, float *yp, float x, float y)
{
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++) {
if ((((yp[i]<=y) && (y<yp[j])) ||
((yp[j]<=y) && (y<yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
int main()
{
float xp[3], yp[3];
float x_max,x_min,y_max,y_min;
float dx,dy;
int i,j;
float x,y;
int color = 5;
for (i=1;i<=3;i++)
{
printf("input x%d y%d:\n",i,i);
scanf("%f %f",&xp[i-1],&yp[i-1]);
};
x_max = xp[0]; x_min = xp[0];
y_max = yp[0]; y_min = yp[0];
for (i=1;i<3;i++){
if (xp[i] > x_max ) x_max = xp[i];
if (xp[i] < x_min ) x_min = xp[i];
if (yp[i] > y_max ) y_max = yp[i];
if (yp[i] < y_min ) y_min = yp[i];
}
printf("input dx dy\n");
scanf("%f %f",&dx,&dy);
for (y=y_min; y<=y_max;y=y+dy) {
for (x=x_min;x<=x_max;x=x+dx) {
if ( pnpoly(3, &xp[0], &yp[0], x, y) == 1)
drawpoint( (int) x, (int) y, color );
// printf("%f %f\n",x,y);
}
}
return 0;
}
下面调用手头现成的判断一个点,落在凸多边形以内,还是落在凸多边形以外的程序。
int pnpoly(int npol, float *xp, float *yp, float x, float y);
程序步骤:
输入三角形 三个顶点点坐标 xi,yi, 逆时针次序 (保证 叉乘积 为正,为三角形内)
输入填充点的间距 dx,dy
计算 Bounding Box
在 Bounding Box 范围内 找点,落在三角形以内的 调用 你给的drawpoint(int x,int y,int color)
==========================================
#include <stdio.h>
#include <math.h>
int pnpoly(int npol, float *xp, float *yp, float x, float y)
{
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++) {
if ((((yp[i]<=y) && (y<yp[j])) ||
((yp[j]<=y) && (y<yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
int main()
{
float xp[3], yp[3];
float x_max,x_min,y_max,y_min;
float dx,dy;
int i,j;
float x,y;
int color = 5;
for (i=1;i<=3;i++)
{
printf("input x%d y%d:\n",i,i);
scanf("%f %f",&xp[i-1],&yp[i-1]);
};
x_max = xp[0]; x_min = xp[0];
y_max = yp[0]; y_min = yp[0];
for (i=1;i<3;i++){
if (xp[i] > x_max ) x_max = xp[i];
if (xp[i] < x_min ) x_min = xp[i];
if (yp[i] > y_max ) y_max = yp[i];
if (yp[i] < y_min ) y_min = yp[i];
}
printf("input dx dy\n");
scanf("%f %f",&dx,&dy);
for (y=y_min; y<=y_max;y=y+dy) {
for (x=x_min;x<=x_max;x=x+dx) {
if ( pnpoly(3, &xp[0], &yp[0], x, y) == 1)
drawpoint( (int) x, (int) y, color );
// printf("%f %f\n",x,y);
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询