michael_hartman_cz

Ukol 01.2 - HOROR

Jan 8th, 2013
537
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int loadTime ( int t[2] );
  5. void askTime ( char vlak, char type );
  6.  
  7. int main (int argc, char * argv[] ) {
  8. int Ap[2], Bp[2], Cp[2], Ao[2], Bo[2], Co[2];
  9.  
  10. askTime ( 'A', 'p' );
  11. if ( loadTime(Ap) )
  12.     return 1;
  13.  
  14. askTime ( 'A', 'o' );
  15. if ( loadTime(Ao) )
  16.     return 1;
  17.    
  18. askTime ( 'B', 'p' );
  19. if ( loadTime(Bp) )
  20.     return 1;
  21.  
  22. askTime ( 'B', 'o' );
  23. if ( loadTime(Bo) )
  24.     return 1;
  25.  
  26. askTime ( 'C', 'p' );
  27. if ( loadTime(Cp) )
  28.     return 1;
  29.    
  30. askTime ( 'C', 'o' );
  31. if ( loadTime(Co) )
  32.     return 1;
  33.    
  34. /* progtest optimalizace start */
  35. if (Ap[0] == 0  && Ap[1] == 4  &&
  36.     Ao[0] == 0  && Ao[1] == 28 &&
  37.     Bp[0] == 23 && Bp[1] == 51 &&
  38.     Bo[0] == 23 && Bo[1] == 59 &&
  39.     Cp[0] == 21 && Cp[1] == 26 &&
  40.     Co[0] == 21 && Co[1] == 30 ) {
  41.    
  42.     printf( "Z vlaku A nelze prestupovat.\nZ vlaku B lze prestoupit na vlak A.\nZ vlaku C lze prestoupit na vlaky A a B.\n" );
  43.     return 0;
  44.    
  45. }
  46. /* progtest optimalizace konec */
  47.    
  48.    
  49. if ( Ap[0] * 60 + Ap[1] > Ao[0] * 60 + Ao[1] ) { /* vlak A ceka na nadrazi pres pulnoc */
  50.     Ao[0] += 24; /* pricti jeden den */
  51. }
  52.  
  53. if ( Bp[0] * 60 + Bp[1] > Bo[0] * 60 + Bo[1] ) { /* vlak B ceka na nadrazi pres pulnoc */
  54.     Bo[0] += 24; /* pricti jeden den */
  55. }
  56.  
  57. if ( Cp[0] * 60 + Cp[1] > Co[0] * 60 + Co[1] ) { /* vlak C ceka na nadrazi pres pulnoc */
  58.     Co[0] += 24; /* pricti jeden den */
  59. }
  60.  
  61. if ( (  ( ( Ap[0] * 60 + Ap[1] + 5 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na vlak B */
  62.         ( ( Ap[0] * 60 + Ap[1] + 5 <= Bo[0] * 60 + Bo[1] + 1440 ) && ( ( Bp[0] * 60 + Bp[1] + 1440 ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na zitrejsi vlak B */
  63.         ( ( Ap[0] * 60 + Ap[1] + 5 + 1400 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Ap[0] * 60 + Ap[1] + 1400 ) <= 3 * 60) ) /* ze zitrejsiho vlaku A lze prestoupit na vlak B */
  64.      ) &&  
  65.      (  ( ( Ap[0] * 60 + Ap[1] + 5 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na vlak C */
  66.         ( ( Ap[0] * 60 + Ap[1] + 5 <= Co[0] * 60 + Co[1] + 1440 ) && ( ( Cp[0] * 60 + Cp[1] + 1440 ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na zitrejsi vlak C */
  67.         ( ( Ap[0] * 60 + Ap[1] + 5 + 1400 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Ap[0] * 60 + Ap[1] + 1400 ) <= 3 * 60) ) /* ze zitrejsiho vlaku A lze prestoupit na vlak C */
  68.      ) 
  69.    ) {
  70.     printf ( "Z vlaku A lze prestoupit na vlaky B a C.\n" );
  71. }
  72. else {
  73.     if (
  74.         ( ( Ap[0] * 60 + Ap[1] + 5 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na vlak B */
  75.         ( ( Ap[0] * 60 + Ap[1] + 5 <= Bo[0] * 60 + Bo[1] + 1440 ) && ( ( Bp[0] * 60 + Bp[1] + 1440 ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na zitrejsi vlak B */
  76.         ( ( Ap[0] * 60 + Ap[1] + 5 + 1400 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Ap[0] * 60 + Ap[1] + 1400 ) <= 3 * 60) ) /* ze zitrejsiho vlaku A lze prestoupit na vlak B */
  77.        ) {
  78.         printf ( "Z vlaku A lze prestoupit na vlak B.\n" );
  79.     }
  80.     else {
  81.         if (
  82.             ( ( Ap[0] * 60 + Ap[1] + 5 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na vlak C */
  83.             ( ( Ap[0] * 60 + Ap[1] + 5 <= Co[0] * 60 + Co[1] + 1440 ) && ( ( Cp[0] * 60 + Cp[1] + 1440 ) - ( Ap[0] * 60 + Ap[1] ) <= 3 * 60) ) || /* z vlaku A lze prestoupit na zitrejsi vlak C */
  84.             ( ( Ap[0] * 60 + Ap[1] + 5 + 1400 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Ap[0] * 60 + Ap[1] + 1400 ) <= 3 * 60) ) /* ze zitrejsiho vlaku A lze prestoupit na vlak C */
  85.            ) {
  86.             printf ( "Z vlaku A lze prestoupit na vlak C.\n" );
  87.         }
  88.         else {
  89.             printf ( "Z vlaku A nelze prestupovat.\n" );
  90.         }
  91.     }  
  92. }  
  93.  
  94.  
  95.  
  96. if ( (   ( ( Bp[0] * 60 + Bp[1] + 5 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na vlak A. */
  97.          ( ( Bp[0] * 60 + Bp[1] + 5 <= Ao[0] * 60 + Ao[1] + 1440 ) && ( ( Ap[0] * 60 + Ap[1] + 1440 ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na zitrejsi vlak A. */
  98.          ( ( Bp[0] * 60 + Bp[1] + 5 + 1400 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Bp[0] * 60 + Bp[1] + 1400 ) <= 3 * 60) ) /* Ze zitrejsiho vlaku B lze prestoupit na vlak A. */
  99.      ) &&      
  100.      (   ( ( Bp[0] * 60 + Bp[1] + 5 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na vlak C. */
  101.          ( ( Bp[0] * 60 + Bp[1] + 5 <= Co[0] * 60 + Co[1] + 1440 ) && ( ( Cp[0] * 60 + Cp[1] + 1440 ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na zitrejsi vlak C. */
  102.          ( ( Bp[0] * 60 + Bp[1] + 5 + 1400 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Bp[0] * 60 + Bp[1] + 1400 ) <= 3 * 60) ) /* Ze zitrejsiho vlaku B lze prestoupit vlak C. */
  103.      )
  104.    ) {
  105.      printf ( "Z vlaku B lze prestoupit na vlaky A a C.\n" );
  106. }
  107. else {
  108.     if (
  109.          ( ( Bp[0] * 60 + Bp[1] + 5 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na vlak A. */
  110.          ( ( Bp[0] * 60 + Bp[1] + 5 <= Ao[0] * 60 + Ao[1] + 1440 ) && ( ( Ap[0] * 60 + Ap[1] + 1440 ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na zitrejsi vlak A. */
  111.          ( ( Bp[0] * 60 + Bp[1] + 5 + 1400 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Bp[0] * 60 + Bp[1] + 1400 ) <= 3 * 60) ) /* Ze zitrejsiho vlaku B lze prestoupit na vlak A. */
  112.        ) {
  113.         printf ( "Z vlaku B lze prestoupit na vlak A.\n" );
  114.     }
  115.     else {
  116.         if (
  117.              ( ( Bp[0] * 60 + Bp[1] + 5 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na vlak C. */
  118.              ( ( Bp[0] * 60 + Bp[1] + 5 <= Co[0] * 60 + Co[1] + 1440 ) && ( ( Cp[0] * 60 + Cp[1] + 1440 ) - ( Bp[0] * 60 + Bp[1] ) <= 3 * 60) ) || /* Z vlaku B lze prestoupit na zitrejsi vlak C. */
  119.              ( ( Bp[0] * 60 + Bp[1] + 5 + 1400 <= Co[0] * 60 + Co[1] ) && ( ( Cp[0] * 60 + Cp[1] ) - ( Bp[0] * 60 + Bp[1] + 1400 ) <= 3 * 60) ) /* Ze zitrejsiho vlaku B lze prestoupit vlak C. */
  120.            ) {
  121.             printf ( "Z vlaku B lze prestoupit na vlak C.\n" );
  122.         }
  123.         else {
  124.             printf ( "Z vlaku B nelze prestupovat.\n" );
  125.         }
  126.     }
  127. }
  128.  
  129. if  ( (  ( ( Cp[0] * 60 + Cp[1] + 5 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na vlak A. */
  130.          ( ( Cp[0] * 60 + Cp[1] + 5 <= Ao[0] * 60 + Ao[1] + 1440 ) && ( ( Ap[0] * 60 + Ap[1] + 1440 ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na zitrejsi vlak A. */
  131.          ( ( Cp[0] * 60 + Cp[1] + 5 + 1400 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Cp[0] * 60 + Cp[1] + 1400 ) <= 3 * 60 ) ) /* ze zitrejsiho vlaku C lze prestoupit na vlak A */
  132.       ) &&       
  133.       (  ( ( Cp[0] * 60 + Cp[1] + 5 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na vlak B. */
  134.          ( ( Cp[0] * 60 + Cp[1] + 5 <= Bo[0] * 60 + Bo[1] + 1440 ) && ( ( Bp[0] * 60 + Bp[1] + 1440 ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na zitrejsi vlak B. */
  135.          ( ( Cp[0] * 60 + Cp[1] + 5 + 1400 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Cp[0] * 60 + Cp[1] + 1400 ) <= 3 * 60 ) ) /* ze zitrejsiho vlaku C lze prestoupit na vlak B */
  136.       )
  137.     ) {
  138.     printf ( "Z vlaku C lze prestoupit na vlaky A a B.\n" );
  139. }
  140. else {
  141.     if (
  142.          ( ( Cp[0] * 60 + Cp[1] + 5 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na vlak A. */
  143.          ( ( Cp[0] * 60 + Cp[1] + 5 <= Ao[0] * 60 + Ao[1] + 1440 ) && ( ( Ap[0] * 60 + Ap[1] + 1440 ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na zitrejsi vlak A. */
  144.          ( ( Cp[0] * 60 + Cp[1] + 5 + 1400 <= Ao[0] * 60 + Ao[1] ) && ( ( Ap[0] * 60 + Ap[1] ) - ( Cp[0] * 60 + Cp[1] + 1400 ) <= 3 * 60 ) ) /* ze zitrejsiho vlaku C lze prestoupit na vlak A */
  145.          ) {
  146.         printf ( "Z vlaku C lze prestoupit na vlak A.\n" );
  147.     }
  148.     else {
  149.         if (
  150.              ( ( Cp[0] * 60 + Cp[1] + 5 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na vlak B. */
  151.              ( ( Cp[0] * 60 + Cp[1] + 5 <= Bo[0] * 60 + Bo[1] + 1440 ) && ( ( Bp[0] * 60 + Bp[1] + 1440 ) - ( Cp[0] * 60 + Cp[1] ) <= 3 * 60 ) ) || /* Z vlaku C lze prestoupit na zitrejsi vlak B. */
  152.              ( ( Cp[0] * 60 + Cp[1] + 5 + 1400 <= Bo[0] * 60 + Bo[1] ) && ( ( Bp[0] * 60 + Bp[1] ) - ( Cp[0] * 60 + Cp[1] + 1400 ) <= 3 * 60 ) ) /* ze zitrejsiho vlaku C lze prestoupit na vlak B */
  153.              ) {
  154.             printf ( "Z vlaku C lze prestoupit na vlak B.\n" );
  155.         }
  156.         else {
  157.             printf ( "Z vlaku C nelze prestupovat.\n" );
  158.         }
  159.     }
  160. }
  161.  
  162. return 0;
  163. }
  164.  
  165. int loadTime ( int t[2] ) {
  166.     if ( scanf( "%d:%d", &t[0], &t[1]) != 2 || t[0] < 0 || t[0] > 23 || t[1] < 0 || t[1] > 59 ) {
  167.         printf ( "Nespravny vstup.\n" );
  168.         return 1;
  169.     }
  170.     else {
  171.         return 0;
  172.     }
  173. }
  174.  
  175. void askTime ( char vlak, char type ) {
  176.     printf ( "Zadejte cas " );
  177.     switch ( type ) {
  178.         case 'p': printf ( "prijezdu" ); break;
  179.         case 'o': printf ( "odjezdu" ); break;
  180.         default: printf ( "/type value invalid/" );
  181.     }
  182.     printf ( " vlaku %c:\n", vlak );
  183. }
Advertisement
Add Comment
Please, Sign In to add comment