Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Bus.h"
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <string.h>
- int current = 0;
- const int size = 50;
- void declareBus(BUS *bus, char* num, char** stops, int count, int n) {
- bus[n].num = (char*)malloc((strlen(num) + 1)* sizeof(char));
- strcpy(bus[n].num, num);
- bus[n].count = count;
- for (int i = 0; i < count; i++) {
- bus[n].stops[i] = (char*)malloc((strlen(stops[i]) + 1)* sizeof(char));
- strcpy(bus[n].stops[i], stops[i]);
- }
- }
- void nullingArrays(char* num, char** stops) {
- for (int i = 0; i < size; i++) {
- num[i] = { '0' };
- for (int j = 0; j < size * 2; j++) {
- stops[i][j] = { '0' };
- }
- }
- }
- void printBus(BUS *bus, int n) {
- printf("Bus number = ");
- puts(bus[n].num);
- printf("Stops");
- printf("\n");
- for (int i = 0; i < (bus[n].count); i++) {
- puts(bus[n].stops[i]);
- printf(" <==> ");
- }
- }
- int maxN(int a, int b) {
- if (a > b) {
- return a;
- }
- return b;
- }
- int maxOfLen(int a, int b) {
- if (a > b) {
- return a;
- }
- return b;
- }
- void SwapStr(char* a, char* b) {
- int c = maxOfLen(strlen(a), strlen(b));
- char* swp = (char*)malloc(c * sizeof(char));
- a > b ? b = (char*)realloc(b, c) : a = (char*)realloc(a, c);
- strcpy(swp, a);
- strcpy(a, b);
- strcpy(b, swp);
- }
- int addStops(char* stopAdd, BUS *bus, int n){
- bus[n].stops[bus[n].count] = (char*)malloc(strlen(stopAdd+1)*sizeof(char));
- strcpy(bus[n].stops[bus[n].count], stopAdd);
- bus[n].count++;
- return bus[n].count;
- }
- void changeStops(BUS* bus, char* stopChange, int number, int n) {
- strcpy(bus[n].stops[number], stopChange);
- }
- int addStopsToWay(char* stopAdd, BUS* bus, int n, int place) {
- if (bus[n].max_stops_size == bus[n].count) {
- *bus[n].stops = (char*)realloc(*bus[n].stops, bus[n].count * 2);
- bus[n].max_stops_size *= 2;
- }
- int c = 0;
- for (int i = 0; i < bus[n].count; i++) {
- c = maxOfLen(c, strlen(bus[n].stops[i]));
- }
- char* swp = (char*)malloc(c * sizeof(char));
- strcpy(swp, stopAdd);
- char* swp1 = (char*)malloc(c * sizeof(char));
- for (int i = place; i < bus[n].count+1; i++) {
- strcpy(swp1, bus[n].stops[i]);
- strcpy(bus[n].stops[i], swp);
- strcpy(swp, swp1);
- }
- free(swp);
- free(swp1);
- bus[n].count++;
- return bus[n].count;
- }
- void changeStopsOrder(BUS* bus, int n, int num1, int num2) {
- SwapStr(bus[n].stops[num1], bus[n].stops[num2]);
- }
- void deleteBusStopByNum(BUS* bus, int num, int n) {
- int c = 0;
- for (int i = 0; i < bus[n].count; i++) {
- c = maxOfLen(c, strlen(bus[n].stops[i]));
- }
- for (int i = num; i < bus[n].count-1; i++) {
- strcpy(bus[n].stops[i], bus[n].stops[i+1]);
- }
- free(bus[n].stops[bus[n].count]);
- bus[n].count--;
- }
- void deleteBusStopByName(BUS* bus, char* name, int n) {
- int c = 0;
- if (!strcmp(bus[n].num, name)) { // if num == name -> 0
- c++;
- }
- deleteBusStopByNum(bus, c, n);
- }
- void printBusArr(BUS_ARRAY *busArr) {
- for (int i = 0; i < current; i++) {
- printBus(busArr[i].bus, i);
- }
- }
- void addBusToBusArr(BUS_ARRAY *busArr, BUS *bus,int n) {
- strcpy(busArr[current].bus[current].num, bus[n].num);
- for (int i = 0; i < bus[n].count; i++) {
- busArr[current].bus[current].stops[i] = (char*)malloc((strlen(bus[n].stops[i]) + 1) * sizeof(char));
- strcpy(busArr[current].bus[current].stops[i], bus[n].stops[i]);
- }
- busArr[current].bus[current].count = bus[n].count;
- current++;
- };
- void deleteBusFromArr(BUS_ARRAY *busArr, int number) {
- int maxNumLen = 0;
- int maxStopLen = 0;
- for (int i = 0; i < current; i++) {
- maxNumLen = maxOfLen(maxNumLen, strlen(busArr[i+1].bus[i+1].num));
- for (int j = 0; j < busArr[i].bus[i].count; j++) {
- maxStopLen = maxOfLen(maxStopLen, (strlen(busArr[i].bus[i].stops[j])));
- }
- }
- for (int i = 0; i < current; i++) {
- busArr[i].bus[i].num = (char*)realloc(busArr[i].bus[i].num, maxNumLen);
- for (int j = 0; j < busArr[i].bus[i].count; j++) {
- busArr[i].bus[i].stops[j] = (char*)realloc(busArr[i].bus[i].stops[j], maxStopLen);
- }
- }
- for (int i = number; i < busArr[current].count-1; i++) {
- strcpy(busArr[i].bus[i].num, busArr[i + 1].bus[i + 1].num);
- for (int j = 0; j < (busArr[i].bus[i].count); j++) {
- strcpy(busArr[i].bus[i].stops[j], busArr[i+1].bus[i+1].stops[j]);
- }
- busArr[i].bus[i].count = busArr[i + 1].bus[i + 1].count;
- }
- current--;
- }
- void changeBus(BUS_ARRAY *busArr,BUS *bus, int number, int n) {
- int c = 0;
- int mxnum = 0;
- mxnum = maxN(busArr[number].bus[number].count, busArr[n].bus[n].count);
- int f = maxOfLen(strlen(busArr[number].bus[number].num), strlen(busArr[n].bus[n].num));
- busArr[number].bus[number].num = (char*)realloc(busArr[number].bus[number].num, f);
- strcpy(busArr[number].bus[number].num, busArr[n].bus[n].num);
- for (int i = 0; i < mxnum; i++) {
- f = maxOfLen(strlen(busArr[number].bus[number].stops[i]), strlen(busArr[n].bus[n].stops[i]));
- }
- for (int i = 0; i < mxnum; i++) {
- busArr[number].bus[number].stops[i] = (char*)realloc(busArr[number].bus[number].stops[i], f);
- }
- for (int i = 0; i < mxnum; i++) {
- strcpy(busArr[number].bus[number].stops[i], busArr[n].bus[n].stops[i]);
- }
- free(bus);
- }
RAW Paste Data
Copied