#include <stdio.h>
#include <math.h>
#define N 100
#define MAX 10001
typedef struct Pro{
float aim;
float change;
bool loc;
}Pro;
Pro P[N];
void InputData(Pro a[],int n){
for(int i=0;i<n;i++){
printf(“第%d进程位置”,i+1);
scanf(“%f”,&a[i].aim);
a[i].loc=false;
}
}
float OutPutFinal(Pro a[],int n){
float sum=0;
for(int i=0;i<n;i++){
sum=sum+a[i].change;
}
return sum/n;
}
void Print(Pro a[],int i){
printf(” %d %3.0f %3.0f\n”,i+1,a[i].aim,a[i].change);
}
int FindAim(Pro a[],int n,float location){
for(int i=0;i<n;i++){
if(a[i].aim>=location){
return i;
}
}
return i;
}
bool Check(Pro a[],int n){
for(int i=0;i<n;i++){
if(!a[i].loc)
return true;
}
return false;
}
void SortUp(Pro a[],int n){
Pro temp;
int k;
for(int i=0;i<n;i++){
k=i;
for(int j=i+1;j<n;j++){
if(a[k].aim>=a[j].aim){
k=j;
}
}
if(k!=i){
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
void SortLow(Pro a[],int n){
Pro temp;
int k;
for(int i=0;i<n;i++){
k=i;
for(int j=i+1;j<n;j++){
if(a[k].aim<=a[j].aim){
k=j;
}
}
if(k!=i){
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
int main(){
int n,location,k;
int i=0;
printf(“输入进程的个数:”);
scanf(“%d”,&n);
printf(“当前位置:”);
scanf(“%d”,&location);
InputData(P,n);
SortUp(P,n);
i=FindAim(P,n,location);
k=i;
printf(” 起始位置%d\n”,location);
printf(” 进程 目标位置 改变位置\n”);
while(Check(P,n)){
P[i].loc=true;
P[i].change=abs(P[i].aim-location);
location=P[i].aim;
Print(P,i);
i++;
if(i==n){
i=0;
SortLow(P,k);
}
}
printf(“ave=平均移动为%.2f\n”,OutPutFinal(P,n));
return 0;
}
#include <math.h>
#define N 100
#define MAX 10001
typedef struct Pro{
float aim;
float change;
bool loc;
}Pro;
Pro P[N];
void InputData(Pro a[],int n){
for(int i=0;i<n;i++){
printf(“第%d进程位置”,i+1);
scanf(“%f”,&a[i].aim);
a[i].loc=false;
}
}
float OutPutFinal(Pro a[],int n){
float sum=0;
for(int i=0;i<n;i++){
sum=sum+a[i].change;
}
return sum/n;
}
void Print(Pro a[],int i){
printf(” %d %3.0f %3.0f\n”,i+1,a[i].aim,a[i].change);
}
int FindAim(Pro a[],int n,float location){
for(int i=0;i<n;i++){
if(a[i].aim>=location){
return i;
}
}
return i;
}
bool Check(Pro a[],int n){
for(int i=0;i<n;i++){
if(!a[i].loc)
return true;
}
return false;
}
void SortUp(Pro a[],int n){
Pro temp;
int k;
for(int i=0;i<n;i++){
k=i;
for(int j=i+1;j<n;j++){
if(a[k].aim>=a[j].aim){
k=j;
}
}
if(k!=i){
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
void SortLow(Pro a[],int n){
Pro temp;
int k;
for(int i=0;i<n;i++){
k=i;
for(int j=i+1;j<n;j++){
if(a[k].aim<=a[j].aim){
k=j;
}
}
if(k!=i){
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
int main(){
int n,location,k;
int i=0;
printf(“输入进程的个数:”);
scanf(“%d”,&n);
printf(“当前位置:”);
scanf(“%d”,&location);
InputData(P,n);
SortUp(P,n);
i=FindAim(P,n,location);
k=i;
printf(” 起始位置%d\n”,location);
printf(” 进程 目标位置 改变位置\n”);
while(Check(P,n)){
P[i].loc=true;
P[i].change=abs(P[i].aim-location);
location=P[i].aim;
Print(P,i);
i++;
if(i==n){
i=0;
SortLow(P,k);
}
}
printf(“ave=平均移动为%.2f\n”,OutPutFinal(P,n));
return 0;
}
版权声明:本文为m0_37848958原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。