Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. /*Лаб. работа №3 - В таблице А размера N за один просмотр необходимо
  2. каждый элемент заменить на ближайший следующий за ним элемент, который больше его.
  3. Если такого элемента нет, то заменить его на ноль.*/
  4. #define _CRT_SECURE_NO_WARNINGS
  5. #include <stdio.h>
  6. #include "replace.h"
  7. #define CHECK(x) if(x) { printf("ERROR %d\n", __LINE__); exit(EXIT_FAILURE); }
  8. int main(int argc, int *argv[])
  9. {
  10. STACK stack, ans;
  11. int size, i, n, *val;
  12. i = 0;
  13. n = 0;
  14. printf("Please enter the size of array\n");
  15. scanf("%d", &size);
  16. if (!(val = (int*)malloc(size * sizeof(int))))
  17. {
  18. printf("ERROR\n");
  19. exit(EXIT_FAILURE);
  20. }
  21. CHECK(create(&stack, size));
  22. CHECK(create(&ans, size));
  23. printf("How many numbers do you want to enter?\n");
  24. scanf("%d", &n);
  25. CHECK(n > size);
  26. printf("Enter numbers\n");
  27. for (i = 0; i < n; i++)
  28. {
  29. scanf("%d", &val[i]);
  30. if (i > 0) {
  31. int tmp;
  32. CHECK(pop(&stack, &tmp));
  33. if (val[tmp] < val[i])
  34. tmp = i;
  35. CHECK(push(&stack, tmp));
  36. }
  37. CHECK(push(&stack, i));
  38. }
  39. for (i = 0; i < n; i++)
  40. {
  41. int tmp;
  42. CHECK(pop(&stack, &tmp));
  43. if (n - i - 1 == tmp)
  44. tmp = 0;
  45. else
  46. tmp = val[tmp];
  47. CHECK(push(&ans, tmp));
  48. }
  49. for (int i = 0; i < n; i++)
  50. {
  51. int tmp;
  52. CHECK(pop(&ans, &tmp));
  53. printf("%d ", tmp);
  54. }
  55. free(val);
  56. destroy(&stack);
  57. destroy(&ans);
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement