hozer

VULab1

Sep 18th, 2014
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. typedef struct {
  5.     int first, second;
  6. } range;
  7.  
  8. void input(range *ob)
  9. {
  10.     printf("Input first second: "); scanf("%d %d", &ob->first, &ob->second);
  11. }
  12.  
  13. int check(range ob)
  14. {
  15.     return ob.first < ob.second ? 1 : 0;
  16. }
  17.  
  18. void output(int in_range, range ob)
  19. {
  20.     printf("%s [%d;%d).\n", in_range == 0 ? "Out off range" : "In range", ob.first, ob.second);
  21. }
  22.  
  23. int is_in_range(int pnt, range ob)
  24. {
  25.     return (pnt >= ob.first && pnt < ob.second) ? 1 : 0;
  26. }
  27.  
  28. void rangePrintUnion(range ob1, range ob2)
  29. {
  30.     int i;
  31.     range u;
  32.  
  33.     if (is_in_range(ob2.first, ob1) && is_in_range(ob2.second, ob1)) {
  34.         u = ob1;
  35.     }
  36.     else if (is_in_range(ob1.first, ob2) && is_in_range(ob1.second, ob2))
  37.     {
  38.         u = ob2;
  39.     }
  40.     else if (is_in_range(ob2.second, ob1)) {
  41.         u.first = ob2.first;
  42.         u.second = ob1.second;
  43.     }
  44.     else if (is_in_range(ob2.first, ob1))
  45.     {
  46.         u.first = ob1.first;
  47.         u.second = ob2.second;
  48.     }
  49.     else
  50.     {
  51.         u = ob2;
  52.         for (i = ob1.first; i < ob1.second; i++) printf("%d ", i);
  53.     }
  54.  
  55.     for (i = u.first; i < u.second; i++) printf("%d ", i);
  56.     putchar('\n');
  57. }
  58.  
  59. void main()
  60. {
  61.     int t;
  62.     range ob1, ob2;
  63.    
  64.     input(&ob1);
  65.     input(&ob2);
  66.  
  67.     if (!check(ob1)) printf("Range [%d;%d) is incorrect.\n", ob1.first, ob1.second);
  68.     if (!check(ob2)) printf("Range [%d;%d) is incorrect.\n", ob2.first, ob2.second);
  69.  
  70.     printf("input num: "); scanf("%d", &t);
  71.  
  72.     output(is_in_range(t, ob1), ob1);
  73.     output(is_in_range(t, ob2), ob2);
  74.  
  75.     rangePrintUnion(ob1, ob2);
  76.  
  77.     getch();
  78. }
Advertisement
Add Comment
Please, Sign In to add comment