Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int* numbersInRange(int a, int b, int k, int d, int * pSize);
- int countDigits(int num, int d);
- int main()
- {
- int a = 1, b = 100, k = 1, d = 3, size = 0;
- int* arr = numbersInRange(a, b, k, d, &size);
- if (arr == NULL) // Allocation failed
- {
- printf("\nAllocation failed.\n\n");
- return 1;
- }
- printf("\nThe number %d will appear exactly %d time%s in %d numbers from %d to %d\n\n", d, k, (k < 2) ? "" : "s", size, a, b);
- for (int i = 0; i < size; i++)
- printf("%d%s ", arr[i], (i==size-1) ? "." : ",");
- printf("\n");
- free(arr);
- return 0;
- }
- int* numbersInRange(int a, int b, int k, int d, int * pSize)
- {
- int size = 0;
- for (int i = a; i <= b; i++)
- {
- if (countDigits(i, d) == k)
- size++;
- }
- int* ptr = (int*)malloc(size * sizeof(int));
- if (ptr == NULL) // Allocation failed
- {
- *pSize = 0;
- return NULL;
- }
- int z = 0;
- for (int i = a; i <= b; i++)
- {
- if (countDigits(i, d) == k)
- ptr[z++] = i;
- }
- *pSize = size;
- return ptr;
- }
- int countDigits(int num, int d)
- {
- int count = 0;
- while (num != 0)
- {
- if (num % 10 == d)
- count++;
- num /= 10;
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment