計算機科学のブログ

C - 小さなツール - 1つのことだけをうまくやる - 小さなツール

Head First C ―頭とからだで覚えるCの基本David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の3章(小さなツール - 1つのことだけをうまくやる)、p.133(プールパズル)の解答を求めてみる。

Makefile

all: bermuda
	./bermuda < gpsdata.csv

bermuda: bermuda.c
	cc bermuda.c -o bermuda

コード

bermuda.c

#include <stdio.h>
int main()
{
    float latitude;
    float longitude;
    char info[80];
    while (scanf("%f,%f,%79[^\n]]", &latitude, &longitude, info) == 3)
    {
        if (26 <= latitude && latitude <= 34)
        {
            if (-76 <= longitude && longitude <= -64)
            {
                printf("%f,%f,%s\n", latitude, longitude, info);
            }
        }
    }
}

CSVファイル

gpsdata.csv

42.363400,-71.098465,Speed = 21
42.363327,-71.096588,Speed = 23
42.363255,-71.096710,Speed = 17
30.363255,-71.096710,Speed = 17

入出力結果(Terminal, Zsh)

% make
cc bermuda.c -o bermuda
./bermuda < gpsdata.csv
30.363255,-71.096710,Speed = 17
%