Загрузка данных


#include <stdio.h>
#include <string.h>
#include <locale.h>
#define AR_LEN 100

struct Route {
	char number[50];
	char station[50];
	int trips;
};

int main(void) {
	setlocale(LC_ALL, "rus");
	struct Route ar[AR_LEN];
	FILE *f_in = fopen("in.txt", "r");
	struct Route route = {};
	int count = 0;
	int i;
	int cnt;
	while (
		count < AR_LEN && 
		3 == fscanf(f_in, "%s %s %d", route.number, route.station, &cnt)) {
		int num_idx = -1;
		for (i = 0; i < count; ++i) {
			if (strcmp(route.station, ar[i].station) == 0) {
				num_idx = i;
				break;
			}
		}
		if (num_idx == -1) {
			num_idx = count;
			route.trips = cnt;
			++count;
		}
		else {
			route.trips = ar[num_idx].trips += cnt;
		}
		ar[num_idx] = route;
	}
	fclose(f_in);
	for (i = 0; i < count; ++i) {
		printf("%s %s %d\n", 
			ar[i].number,
			ar[i].station,
			ar[i].trips);
	}
	
	return 0;
}




#ifndef FUNC_H
#define FUNC_H

struct Route {
	char station[50];
	int trips;
};

int lt(struct Route a, struct Route b); 
// возвращает true, если a < b лексикографически
void swap(struct Route *pa, struct Route *pb);
// обмен значений двух маршрутов
void ar_sort(struct Route ar[], int n); 
// сортировка массива маршрутов (пока - выбором)
void ar_print(struct Route ar[], int n);
// печать массива маршрутов

#endif



#include <stdio.h>
#include <string.h>
#include "func.h"

int lt(struct Route a, struct Route b) {
	return strcmp(a.station, b.station) < 0;
}

void swap(struct Route *pa, struct Route *pb) {
	// обмен значений двух маршрутов
	struct Route temp = *pa;
	*pa = *pb;
	*pb = temp;
}

void ar_sort(struct Route ar[], int n) {
	// сортировка массива маршрутов (пока - выбором)
	int i;
	for (i = 0; i < n-1; ++i) {
		int imin = i;
		int j;
		for (j = i+1; j < n; ++j) {
			if (lt(ar[j], ar[imin])) {
				imin = j;
			}
		}
		if (i != imin) {
			swap(&ar[i], &ar[imin]);
		}
	}
}

void ar_print(struct Route ar[], int n) {
	// печать массива маршрутов
	int i;
	for (i = 0; i < n; ++i) {
		printf("%s: %d\n", ar[i].station, ar[i].trips);
	}
}



23А   M 37
157МН2 Y 70
23А M 42