资源简介

c语言实现的tsv文件读取程序,其中有两个测试用例,可对测试用例进行分析

资源截图

代码片段和文件信息

/* Sample Solution to COMP20005 Assignment 1  2018s1.
*/

#include 
#include 
#include 

#define NGRPS 3 /* input data is split into NGRPS*/
#define MAXDAYS 10000 /*input data covre max days*/

const int MONTH[13] = { 0312831303130313130313031 };
/*struct define*/
typedef struct
{
int yy;
int mm;
int dd;
int day;
}Date;
typedef struct
{
Date date;
int  daycount;
}data;
/* function prototypes */
int leapyear(int year);
int days_diff(Date beg Date end);
int print_date(Date val);
void print_data(data d);
data get_data(FILE * in);
int mygetchar();
void printf_month(int yearint monthint nint sum);
void print_group(data *g int size);
print_week(int weeki float* ave int i);
void ave_week(data *g int sizefloat * ave);
/* main program binds it all together
*/
int main()
{
/* storage for all of the input data */
data data_array[MAXDAYS];
int data_size = 0; /*the size of data_array*/
FILE *fin = fopen(“pedestrians-melbcent-full.tsv“ “r“);

/*skip first and second line*/
char *s = (char*)malloc(1000);
fgets(s1000fin);
fgets(s 1000fin);

/*read data*/
while (1)
{
data in;
in = get_data(fin);
if (in.daycount < 0)
break;
data_array[data_size++] = in;
}
/*Stage 1*/
printf(“S1: total data lines = %d days\n“ data_size );
printf(“S1: first data line  = “); print_data(data_array[0]);
printf(“S1: first data line  = “); print_data(data_array[data_size-1]);
printf(“\n“);
/*Stage 2*/
int days = days_diff(data_array[0].date data_array[data_size - 1].date);
printf(“S2: range spanned    = %d days\n“days );
printf(“S2: coverage ratio   = %2.1f%%\n“ (float)data_size/days*100);
printf(“\n“);
/*Stage 3*/
for (int year = data_array[0].date.yy i=0; year <= data_array[data_size - 1].date.yy;++year)
{
for (int month = data_array[i].date.mm; data_array[i].date.yy == year && i < data_size;++month)
{
int sum=0n=0;
for (int day = data_array[i].date.dd; data_array[i].date.mm == month &&i {
sum += data_array[i].daycount;
++n;
}
printf_month(year month n sum);
}
}
printf(“\n“);
/*Stage 4*/
int group_size = data_size / NGRPS;
int remainder = data_size%NGRPS;
/*split into NGRPS near-equal sized */
data *group[NGRPS]; /*store first address of every group*/
int groupsize[NGRPS]; /*store the size of every group*/
for (int i = 0pos=0; i < NGRPS&&pos {
int size = groupsize[i] = group_size + ((NGRPS - remainder <= i) ? 1 : 0);
data *group_i = (data*)malloc(sizeof(data)*(size)); //记得free!
for (int j=0;j group_i[j] = data_array[pos];
group[i] = group_i;
}
/*print groups‘s information*/
for (int i = 0; i < NGRPS; ++i)
{
printf(“S4: group %d data “ i);
print_group(group[i] groupsize[i]);
}
printf(“\n“);
/*calaulate and store average of days*/
float *group_days_ave[NGRPS];/*

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        6018  2018-04-25 22:13  main.c
     文件         303  2018-04-25 22:20  readme.txt

评论

共有 条评论