寒假做業3

電梯調度升級版

題目

題目描述基礎:一棟10層的大樓(樓層編號1-10),設有一臺無限載重的電梯,初始時電梯停在1層。電梯移動1層的耗時爲1,在某一層停靠的耗時爲1(時間初始爲0)。爲了使得乘客等待的時間(電梯在目的層的停靠時刻 - 乘客發出請求時刻)總和最小,請你編寫一個程序來進行電梯調度。html

本次做業是在上一次的電梯調度的代碼上進行改善迭代,不只加入新的功能,也對程序的輸入輸出提出了新的要求。
要求
----------
1、 輸入從文件讀取,輸出是寫入文件。git

你們在學習 C 語言的時候,應該明白了控制檯程序的輸入和輸出。但文件操做每每是以前的課程中被忽略的一個部分,你們有沒有試過「若是我要將程序的輸出保存下來」、「若是我要從一個文件中得到輸入」這些實操的環節呢?若是沒有,如今是一個再好不過的學習機會,來吧,learning by doing!github

要求:輸入輸出改爲文件輸入輸出操做。輸入文件的文件名爲 input.txt 裏面保存着輸入樣例,一個輸入爲一行,輸入的格式見做業的第二條要求。編程

例如:數組

0 1 5
2 2 5
程序輸出每次對應的決策,每一行的輸出格式爲 xx時,停靠在x樓。輸出在文件名爲output.txt的文件中。編程語言

2、此次的乘客再也不像上一次做業那樣只會去頂樓或者是 1 樓了,如今要使咱們的程序功能更加貼近現實。學習

迭代:乘客會前往任意一層,請修改程序代碼並實現。天然,輸入請求就變爲了:每一個請求一行,格式爲 請求時刻 起始樓層數 去往樓層 。一樣,你們也須要本身構造測試樣例,讓這臺「電梯」儘量好的工做。構造五個輸入樣例,最後輸出完成五個請求(全部乘客都到達目的地)後,各乘客的等待時間總和。輸入輸出的詳細例子能夠參加上一次做業的要求。測試

編程語言選擇C或C++均可以,但須要符合編碼規範,且必需要有註釋。編碼規範、註釋、git commit 信息,均可以上網搜索寫法,學會合理使用搜索引擎來學習是計算機專業學生的必經之路。搜索引擎

github使用教程參考:http://www.cnblogs.com/schaepher/p/5561193.html編碼

思路

引入時間變量time記錄總時間,運行到每一個點判斷向上和向下的請求數並執行較大者(向下的請求數=目標樓層比該樓層低的請求個數+此時電梯下方未上電梯的請求個數,向上的請求數同理。當某一請求的請求時刻>time或已經登上電梯時,該請求不歸入計算。),每次運行到請求點或目的地時再執行判斷,直到全部乘客都到達目的地。(紅色部分是與上一次電梯編程不同的地方)。

文件輸入輸出

例1
下面是一個簡單文件讀取程序,首先是寫數據,將數字0~9寫入到data.txt文件中,而後再從data.txt中讀取數據,將讀到的數據存到數組a[10]中,而且打印到控制檯上。
下面是程序:

#include <stdio.h>  
  
int main()  
{  
    //下面是寫數據,將0~9數字寫入到data.txt文件中  
    FILE *fpWrite=fopen("data.txt","w");  
    if(fpWrite==NULL)  
    {  
        return 0;  
    }  
    for(int i=0;i<10;i++)  
        fprintf(fpWrite,"%d ",i);  
    fclose(fpWrite);  
    //下面是讀數據,將讀到的數據存到數組a[10]中,而且打印到控制檯上  
    int a[10]={0};  
    FILE *fpRead=fopen("data.txt","r");  
    if(fpRead==NULL)  
    {  
        return 0;  
    }  
    for(int i=0;i<10;i++)  
    {  
        fscanf(fpRead,"%d ",&a[i]);  
        printf("%d ",a[i]);  
    }  
    getchar();//等待  
  
    return 0;  
}

例2
用c語言實現讀取一個txt文件裏的數據 要按行讀出來

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 1024
int main()
{
 char buf[MAX_LINE];  /*緩衝區*/
 FILE *fp;            /*文件指針*/
 int len;             /*行字符個數*/
 if((fp = fopen("test.txt","r")) == NULL)
 {
 perror("fail to read");
 exit (1) ;
 }
 while(fgets(buf,MAX_LINE,fp) != NULL)
 {
 len = strlen(buf);
 buf[len-1] = '\0';  /*去掉換行符*/
 printf("%s %d \n",buf,len - 1);
 }
  return 0;
}

代碼

相關文章
相關標籤/搜索