We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
/// @brief Function to print all packages in a given town/// @param t The Townvoidprint_all_packages(townt){// Print the town nameprintf("%s:\n",t.name);// Loop on all available officesfor(intoffice=0;office<t.offices_count;office++){// Print the office numberprintf("\t%d:\n",office);// Loop on all available packagesfor(intpackage=0;package<t.offices[office].packages_count;package++){// Print the id of the packageprintf("\t\t%s\n",t.offices[office].packages[package].id);}}}/// @brief Function to send all acceptable packages from a source post office to a target post office/// @param source town source/// @param source_office_index twon source index/// @param target town target/// @param target_office_index twon target indexvoidsend_all_acceptable_packages(town*source,intsource_office_index,town*target,inttarget_office_index){// Pointers 'src' and 'tgt' are initialized to point to the source and target post offices respectivelypost_office*src=(source->offices)+source_office_index;post_office*tgt=(target->offices)+target_office_index;// An array 'temp_package' is created to temporarily store packages that meet the weight criteriapackagetemp_package[src->packages_count];// 'tem_package_size' is used to keep track of the number of packages in 'temp_package'inttem_package_size=0;// Iterate over all packages in the source post officefor(intouter_pkg_counter=0;outer_pkg_counter<src->packages_count;/*Conditional increament*/){// Filtering Packages: If a package's weight falls within the acceptable range of the target post officeif((((src->packages[outer_pkg_counter]).weight)>=(tgt->min_weight))&&(((src->packages[outer_pkg_counter]).weight)<=(tgt->max_weight))){// Moving Packages: Adding to 'temp_package'temp_package[tem_package_size++]=(src->packages[outer_pkg_counter]);// Removing from the source post office by shifting the remaining packages in the arrayfor(intinner_pkg_counter=outer_pkg_counter;inner_pkg_counter<((src->packages_count)-1);inner_pkg_counter++){src->packages[inner_pkg_counter]=src->packages[inner_pkg_counter+1];}// Decreament source packages count after removing them(src->packages_count)--;}else{// The Weight NOT falls within the acceptable range of the target post officeouter_pkg_counter++;}}// The target post office's package array is reallocated to accommodate the new packagestgt->packages=realloc((tgt->packages),((tgt->packages_count)+tem_package_size)*sizeof(package));// The packages stored in 'temp_package' are added to the target post office's package arrayfor(inttgt_counter=0;tgt_counter<tem_package_size;tgt_counter++){tgt->packages[(tgt->packages_count)++]=temp_package[tgt_counter];}}/// @brief Function to find the town with the most number of packages/// @param towns Array of twons/// @param towns_count Number of twons/// @return twon structtowntown_with_most_packages(town*towns,inttowns_count){// The function initializes 'max_town' to the first town in the array and 'max_packages' to 0townmax_twon=*towns;intmax_packages=0;// The Loop calculates the total number of packages in the first town by iterating through its post officesfor(intoffice_counter=0;office_counter<(towns->offices_count);office_counter++){max_packages+=towns->offices[office_counter].packages_count;}// Then moves to the next town and decrements 'towns_count'towns++;towns_count--;// For each remaining town, the Loop calculates the total number of packageswhile(towns_count--){intcurrent_packages=0;// The Loop calculates the total number of packages in the currnt town by iterating through its current post officesfor(intcurrent_office_counter=0;current_office_counter<(towns->offices_count);current_office_counter++){current_packages+=towns->offices[current_office_counter].packages_count;}// If the current town has more packages than the previous maximum, the function updates 'max_packages' and 'max_town'if(current_packages>max_packages){max_packages=current_packages;max_twon=*towns;}// Moving to the next town in the arraytowns++;}// After iterating through all the towns, the function returns the town with the most packagesreturnmax_twon;}/// @brief Function to find a town by name/// @param towns Array of towns/// @param towns_count Numbre of towns/// @param name The name string to search on/// @return Town if available or null if nottown*find_town(town*towns,inttowns_count,char*name){// Loop on all townswhile(towns_count--){// Search on the town by comparing its name with used name to searchif(!strcmp((towns->name),name)){returntowns;}towns++;}// No town foundreturnNULL;}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Post Transition
You are viewing a single comment's thread. Return to all comments →
.c