fork download
  1. #include <stdio.h>
  2.  
  3. #define LEN 100
  4.  
  5. void sum(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length);
  6. void sub(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length);
  7.  
  8. /*
  9. Беззнаковая целочисленная длинная арифметика
  10. с использованием массивов.
  11. Ввод:
  12. * 2 длинных числа в виде массивов до 100 элементов
  13. * В один элемент массива нельзя вводить число > 9
  14. Вывод:
  15. * Результат сложения и разности чисел-массивов
  16. */
  17. int main() {
  18. int num1[LEN], num2[LEN], sum_result[LEN + 1], sub_result[LEN];
  19. int len1, len2, sum_length, sub_length;
  20.  
  21. // Ввод первого числа
  22. len1 = 0;
  23. while (len1 < LEN && scanf("%1d", &num1[len1]) == 1) {
  24. len1++;
  25. }
  26.  
  27. // Ввод второго числа
  28. len2 = 0;
  29. while (len2 < LEN && scanf("%1d", &num2[len2]) == 1) {
  30. len2++;
  31. }
  32.  
  33. // Сложение
  34. sum(num1, len1, num2, len2, sum_result, &sum_length);
  35. for (int i = 0; i < sum_length; i++) {
  36. printf("%d", sum_result[i]);
  37. }
  38. printf("\n");
  39.  
  40. // Вычитание
  41. sub(num1, len1, num2, len2, sub_result, &sub_length);
  42. if (sub_length == -1) {
  43. printf("n/a\n");
  44. } else {
  45. for (int i = 0; i < sub_length; i++) {
  46. printf("%d", sub_result[i]);
  47. }
  48. printf("\n");
  49. }
  50.  
  51. return 0;
  52. }
  53.  
  54. void sum(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length) {
  55. // ... реализация сложения ...
  56. }
  57.  
  58. void sub(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length) {
  59. // ... реализация вычитания ...
  60. }
  61.  
Success #stdin #stdout 0.01s 5284KB
stdin
1 9 4 4 6 7 4 4 0 7 3 7 0 9 5 5 1 6 1
2 9
stdout
n/a