Advertisement
nightshroud

C задача

Nov 19th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. Условие на задачата:
  2. Всички естествени числа със сума на цифрите S са подредени в растящ ред. Така например при S=3 се получава редицата 3, 12, 21, 30, 102, 111, 120, 201, 210, 300, ... . Напишете програма на C++, която по зададени S и N, намира N-тия член на тази редица.
  3.  
  4. Вход: Естествено число S(сумата) и N(номер на член от редицата).
  5. Изход: Едно число - търсеният Nти член.
  6.  
  7. Пример:
  8. Вход: S=3,N=5
  9. Изход: 102
  10.  
  11. Решение:
  12.  
  13. #include <stdio.h>
  14.  
  15. unsigned int sum(unsigned int num) {
  16. unsigned int r, sum = 0;
  17.  
  18. while (num > 0) {
  19. r = num % 10;
  20. sum = sum + r;
  21. num /= 10;
  22. }
  23.  
  24. return sum;
  25. }
  26.  
  27. int find(unsigned int S, unsigned int N) {
  28. int i = 0, cnt = 0;
  29. while (1) {
  30. if (sum(++i) == S) {
  31. if (++cnt == N)
  32. return i;
  33. }
  34. }
  35. }
  36.  
  37. int main() {
  38. printf("find: %in", find(3, 5));
  39. }
  40.  
  41. Написана така работи, като намира 5тото число при сума 3.
  42.  
  43. Въпроса е, как да преправя викането на find функцията в main, за да взима числа от потребителя?
  44. Аз пробвах това ама забива след въвеждането на второто число.
  45. Единствено е сменен кода в main.
  46.  
  47. int main() {
  48. int k=0,l=0;
  49. printf("Please enter the Sum of numbers");
  50. scanf("%k");
  51. fflush(stdin);
  52. printf("\nPlease enter the position of number");
  53. scanf("%l");
  54. printf("find: %in", find(k, l));
  55. }
  56.  
  57. Как да го оправя?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement