Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define LIMIT_LOW 0
- #define LIMIT_HIGH 25
- /* 構造体の定義 */
- typedef struct tag {
- int temp; /* 温度 */
- struct tag *next; /* 1つ後のデータへのポインタ変数 */
- } tempData; /* 温度データ */
- /* 新データ作成関数 */
- tempData* makeNewNode(int t) {
- tempData* pNewNode;
- /*** person 型のメモリ領域確保 ***/
- pNewNode = (tempData*)malloc(sizeof(tempData));
- if (pNewNode != NULL) {
- /*** データ設定 ***/
- pNewNode->temp= t;
- pNewNode->next = NULL;
- }
- return pNewNode ;
- }
- /* リストから,引数で指定された温度より低いデータを削除する関数 */
- void removeFromList(tempData **ppTop, int argTemp) {
- /* 必要な変数を追加する */
- tempData *pNow; /* 温度データリスト内の現在位置 */
- tempData *pPrev = NULL; /* 温度データリスト内の現在位置の1つ手前 */
- /* リストから,引数で指定された温度より低いデータを削除する */
- pNow = *ppTop;
- while (pNow != NULL) {
- if(pNow->temp < argTemp) {
- pPrev->next = pNow->next;
- } else {
- pPrev = pNow;
- }
- pNow = pNow->next;
- }
- }
- int main(void) {
- int temp; /* 温度入力用変数 */
- tempData *pTop; /* 温度データリストの先頭 */
- tempData *pNow; /* 温度データリスト内の現在位置 */
- tempData *pNew; /* 温度データの新規データ */
- int c, ave; /* 平均計算用 */
- /* 最初のデータは,必ず範囲内のデータであるとする */
- scanf("%d", &temp);
- pTop = makeNewNode(temp);
- pNow = pTop;
- /* 次のデータを入力 */
- scanf("%d", &temp);
- ave = temp;
- c = 1;
- while ((LIMIT_LOW <= temp) && (temp <= LIMIT_HIGH)) {
- /* リスト末尾に追加 */
- pNew = makeNewNode(temp);
- pNow->next = pNew;
- pNow = pNew;
- /* 集計 */
- ave = ave + temp;
- c = c + 1;
- /* 次のデータを入力 */
- scanf("%d", &temp);
- }
- /* 平均値を計算 */
- ave = ave / c;
- /* 平均より小さいデータを削除 */
- removeFromList(&pTop, ave);
- /* データを表示する処理 */
- /* 出力 */
- pNow = pTop ;
- while (pNow != NULL) {
- printf("%d\n", pNow->temp);
- pNow = pNow->next;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment