Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- typedef struct {
- int first, second;
- } range;
- void input(range *ob)
- {
- printf("Input first second: "); scanf("%d %d", &ob->first, &ob->second);
- }
- int check(range ob)
- {
- return ob.first < ob.second ? 1 : 0;
- }
- void output(int in_range, range ob)
- {
- printf("%s [%d;%d).\n", in_range == 0 ? "Out off range" : "In range", ob.first, ob.second);
- }
- int is_in_range(int pnt, range ob)
- {
- return (pnt >= ob.first && pnt < ob.second) ? 1 : 0;
- }
- void rangePrintUnion(range ob1, range ob2)
- {
- int i;
- range u;
- if (is_in_range(ob2.first, ob1) && is_in_range(ob2.second, ob1)) {
- u = ob1;
- }
- else if (is_in_range(ob1.first, ob2) && is_in_range(ob1.second, ob2))
- {
- u = ob2;
- }
- else if (is_in_range(ob2.second, ob1)) {
- u.first = ob2.first;
- u.second = ob1.second;
- }
- else if (is_in_range(ob2.first, ob1))
- {
- u.first = ob1.first;
- u.second = ob2.second;
- }
- else
- {
- u = ob2;
- for (i = ob1.first; i < ob1.second; i++) printf("%d ", i);
- }
- for (i = u.first; i < u.second; i++) printf("%d ", i);
- putchar('\n');
- }
- void main()
- {
- int t;
- range ob1, ob2;
- input(&ob1);
- input(&ob2);
- if (!check(ob1)) printf("Range [%d;%d) is incorrect.\n", ob1.first, ob1.second);
- if (!check(ob2)) printf("Range [%d;%d) is incorrect.\n", ob2.first, ob2.second);
- printf("input num: "); scanf("%d", &t);
- output(is_in_range(t, ob1), ob1);
- output(is_in_range(t, ob2), ob2);
- rangePrintUnion(ob1, ob2);
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment