input2 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "common.h"
  2. int main(int ac, char *av[])
  3. {
  4. int *A, *B, i, j;
  5. unsigned int lengthA, lengthB, num_matches = 0;
  6. /* sanity check of command line arguments */
  7. if (ac < 2)
  8. ERR_MESG("Usage: string-matching <number of elements in A> [elements of A] [elements of B]");
  9. lengthA = atoi(av[1]);
  10. if (ac < lengthA + 2)
  11. ERR_MESG("string-matching: not enough command-line arguments");
  12. lengthB = ac - lengthA - 2;
  13. /* initialise the arrays */
  14. if (NULL == (A = Malloc(lengthA, int)) ||
  15. NULL == (B = Malloc(lengthB, int)))
  16. ERR_MESG("main: out of memory\n");
  17. for (i = 0; i < lengthA; i++)
  18. A[i] = atoi(av[i+2]);
  19. for (i = 0; i < lengthB; i++)
  20. B[i] = atoi(av[i+lengthA + 2]);
  21. #if 0
  22. for (i = 0; i < lengthA; i++)
  23. printf("%d ", A[i]);
  24. putchar('\n');
  25. for (i = 0; i < lengthB; i++)
  26. printf("%d ", B[i]);
  27. putchar('\n');
  28. #endif
  29. if (lengthA < lengthB) {
  30. printf("No matches\n");
  31. return 0;
  32. }
  33. for (i = 0; i <= lengthA - lengthB; i++) {
  34. for (j = 0; j < lengthB; j++) {
  35. if (A[i+j] != B[j])
  36. break;
  37. }
  38. if (j == lengthB)
  39. num_matches++;
  40. }
  41. printf("%d matches\n", num_matches);
  42. return 0;
  43. }