
一个简单的C++问题。新手不懂。。。。
ProblemDescription两个坐标点能确定一个矩形,请按矩形的面积大小进行排序输出。每一行给出两个坐标点x1,y1,x2,y2,表示一个矩形。请按要求输出面积。...
Problem Description
两个坐标点能确定一个矩形,请按矩形的面积大小进行排序输出。每一行给出两个坐标点x1,y1,x2,y2,表示一个矩形。请按要求输出面积。当输入的x1,y1,x2,y2均为0时输入结束(不作处理)。(假设坐标点的值为0到1000之间的非负整数,行数不超过100)
处理到文件结束.
这是我写的:
#include<iostream>
using namespace std;
int main()
{
int x1,y1,x2,y2,s,x,y;
while(cin>>x1>>y1>>x2>>y2)
{
if(x1==0 && y1==0 && x2==0 && y2==0)
break;
else
{
x=x1-x2;
y=y1-y2;
s=x*y;
if(s<0)
s=-s;
else
s=s;
}
cout<<s<<endl;
}
return 0;
}
老师说没排序,要用数组,怎么写啊?? 展开
两个坐标点能确定一个矩形,请按矩形的面积大小进行排序输出。每一行给出两个坐标点x1,y1,x2,y2,表示一个矩形。请按要求输出面积。当输入的x1,y1,x2,y2均为0时输入结束(不作处理)。(假设坐标点的值为0到1000之间的非负整数,行数不超过100)
处理到文件结束.
这是我写的:
#include<iostream>
using namespace std;
int main()
{
int x1,y1,x2,y2,s,x,y;
while(cin>>x1>>y1>>x2>>y2)
{
if(x1==0 && y1==0 && x2==0 && y2==0)
break;
else
{
x=x1-x2;
y=y1-y2;
s=x*y;
if(s<0)
s=-s;
else
s=s;
}
cout<<s<<endl;
}
return 0;
}
老师说没排序,要用数组,怎么写啊?? 展开
5个回答
展开全部
将s设置为一个较大的数组,比如说s[100],将每次计算的面积,按照排序算法存储进去。增加一个变量记录输入的次数。到输入结束之后,按照顺序输出。
算法是对的,就是要按照老师要求的格式再修改一下。当年学C++也是这样一步步走出来的。
算法是对的,就是要按照老师要求的格式再修改一下。当年学C++也是这样一步步走出来的。
展开全部
创建一个数组,将每次得到的s值存入该数组,全部存完后进行冒泡排序,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不排序,怎么有大小之分。。。你比比对角线就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
回答:
#include<iostream>
using namespace std;
int main()
{
int i,j,x1,y1,x2,y2,s,x,y;
int sz[100] = {0};
int Count = 0,empt;
while(cin>>x1>>y1>>x2>>y2)
{
if(x1==0 && y1==0 && x2==0 && y2==0)
break;
else
{
x=x1-x2;
y=y1-y2;
s=x*y;
if(s<0)
s=-s;
else
s=s;
sz[Count] = s;
Count++;
}
}
for (i = 0; i < Count-1; i++)
{
for (j = i+1; j < Count; j++)
{
if (sz[i] < sz[j])
{
empt = sz[i];
sz[i] = sz[j];
sz[j] = empt;
}
}
}
for (i = 0; i < Count; i++)
{
if (0 == sz[i])
{break;}
cout << sz[i] << endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int i,j,x1,y1,x2,y2,s,x,y;
int sz[100] = {0};
int Count = 0,empt;
while(cin>>x1>>y1>>x2>>y2)
{
if(x1==0 && y1==0 && x2==0 && y2==0)
break;
else
{
x=x1-x2;
y=y1-y2;
s=x*y;
if(s<0)
s=-s;
else
s=s;
sz[Count] = s;
Count++;
}
}
for (i = 0; i < Count-1; i++)
{
for (j = i+1; j < Count; j++)
{
if (sz[i] < sz[j])
{
empt = sz[i];
sz[i] = sz[j];
sz[j] = empt;
}
}
}
for (i = 0; i < Count; i++)
{
if (0 == sz[i])
{break;}
cout << sz[i] << endl;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <time.h>
using namespace std;
#define MAXlen 100
void sort(int a[][5],int n) {
int i,j,k;
int t;
for(i = 0;i < MAXlen - 1;i++) {
k = i;
for(j = i + 1;j < MAXlen;j++) {
if(a[k][4] > a[j][4]) k = j;
}
if(k != i) {
t = a[k][0];a[k][0] = a[i][0];a[i][0] = t;
t = a[k][1];a[k][1] = a[i][1];a[i][1] = t;
t = a[k][2];a[k][2] = a[i][2];a[i][2] = t;
t = a[k][3];a[k][3] = a[i][3];a[i][3] = t;
t = a[k][4];a[k][4] = a[i][4];a[i][4] = t;
}
}
}
int main() {
int i,s;
int point[100][5]; // point[i][0]:x1,point[i][1]:y1,point[i][2]:x2,point[i][3]:y2,point[i][4]:s
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i < MAXlen ; i++) {
point[i][0] = (unsigned int)rand() % 1001;
point[i][1] = (unsigned int)rand() % 1001;
point[i][2] = (unsigned int)rand() % 1001;
point[i][3] = (unsigned int)rand() % 1001;
s = (point[i][2] - point[i][0]) * (point[i][3] - point[i][1]);
if(s < 0) s = -s;
point[i][4] = s;
if(i % 5 == 0) printf("\n");
printf("(%3d,%3d),(%3d,%3d):%7d ",point[i][0],point[i][1],point[i][2],point[i][3],point[i][4]);
}
printf("\n");
sort(point,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i < MAXlen ; i++) {
if(i % 5 == 0) printf("\n");
printf("(%3d,%3d),(%3d,%3d):%7d ",point[i][0],point[i][1],point[i][2],point[i][3],point[i][4]);
}
printf("\n\n");
return 0;
}
#include <time.h>
using namespace std;
#define MAXlen 100
void sort(int a[][5],int n) {
int i,j,k;
int t;
for(i = 0;i < MAXlen - 1;i++) {
k = i;
for(j = i + 1;j < MAXlen;j++) {
if(a[k][4] > a[j][4]) k = j;
}
if(k != i) {
t = a[k][0];a[k][0] = a[i][0];a[i][0] = t;
t = a[k][1];a[k][1] = a[i][1];a[i][1] = t;
t = a[k][2];a[k][2] = a[i][2];a[i][2] = t;
t = a[k][3];a[k][3] = a[i][3];a[i][3] = t;
t = a[k][4];a[k][4] = a[i][4];a[i][4] = t;
}
}
}
int main() {
int i,s;
int point[100][5]; // point[i][0]:x1,point[i][1]:y1,point[i][2]:x2,point[i][3]:y2,point[i][4]:s
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i < MAXlen ; i++) {
point[i][0] = (unsigned int)rand() % 1001;
point[i][1] = (unsigned int)rand() % 1001;
point[i][2] = (unsigned int)rand() % 1001;
point[i][3] = (unsigned int)rand() % 1001;
s = (point[i][2] - point[i][0]) * (point[i][3] - point[i][1]);
if(s < 0) s = -s;
point[i][4] = s;
if(i % 5 == 0) printf("\n");
printf("(%3d,%3d),(%3d,%3d):%7d ",point[i][0],point[i][1],point[i][2],point[i][3],point[i][4]);
}
printf("\n");
sort(point,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i < MAXlen ; i++) {
if(i % 5 == 0) printf("\n");
printf("(%3d,%3d),(%3d,%3d):%7d ",point[i][0],point[i][1],point[i][2],point[i][3],point[i][4]);
}
printf("\n\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询