4個のベクトルを大きさが小さい順に並び替えて表示するプログラムを作ることです。
問題の結果
Before
1-th Vector : (0,3), 3.00
2-th Vector : (7,7), 9.90
3-th Vector : (1,5), 5.10
4-th Vector : (2,1), 2.24
After
1-th Vector : (2,1), 2.24
2-th Vector : (0,3), 3.00
3-th Vector : (1,5), 5.10
4-th Vector : (7,7), 9.90
#include<stdio.h>
#include<math.h>
#define N 4
struct vector{
int x;
int y;
double r;
};
void InputData(struct vector *data){
data[0].x = 0; data[0].y = 3;
data[1].x = 7; data[1].y = 7;
data[2].x = 1; data[2].y = 5;
data[3].x = 2; data[3].y = 1;
}
/*swap関数で2つのベクトルを入れ替えようとしてもvoid swapとはどの違いがあるか気になります。*/
swap(int *x,int *y){
double r;
r = *x;
*x = *y;
*y = r;
}
/*ベクトルの大きさを求める関数で、sqrt(x^2+y^2)の書き方が正しいかよくわかりません。*/
CalculateR(struct vector &data){
int i;
double r;
for(i=0;i<N;i++){
r = sqrt((data[i].x)^2+(data[i].y)^2);
}
}
/*Beforeを示しましたが、最後のベクトルの大きさの値がよく出てきません。*/
PrintData(int *Data, int N){
printf("Before¥n");
printf("1-th Vector :(%d,%d) , %d¥n"); scanf(&Data[0].x,&Data[0].y,&r);
printf("2-th Vector :(%d,%d) , %d¥n"); scanf(&Data[1].x,&Data[1].y,&r);
printf("3-th Vector :(%d,%d) , %d¥n"); scanf(&Data[2].x,&Data[2].y,&r);
printf("4-th Vector :(%d,%d) , %d¥n"); scanf(&Data[3].x,&Data[3].y,&r);
}
/*ベクトルの大きさを小さい順に並べ替えるコードのヒントをもらえたらありがたいです。*/
SortData(){
}
int main(void){
struct vector data[N];
InputData(data);
CalculateR(data);
printf("Before\n");
PrintData(data);
SortData(data);
printf("After\n");
PrintData(data);
return 0;
}