Вывести на печать все пары индексов массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста дописать программу для динамических массивов.

Задание:

Даны 2 динамических массива размерность n. Вывести на печать все пары индексов, для которых a[i]*b[i]>10. Подсчитать число пар и сумму этих произведений.
Листинг программы
  1. #include <stdio.h>
  2. int *mem (int n);
  3. void vvod (int *mas1, int n);
  4. //void vvod (int *mas2, int n);
  5. int pr (int *mas1, int *mas2, int n);
  6. void show(int *mas1, int n);
  7. void main ()
  8. {
  9. int n, rez;
  10. int*mas1;
  11. int*mas2;
  12. printf ("\n Vvod razmera massivov");
  13. scanf ("%d", &n);
  14. mas1=mem (n);
  15. mas2=mem (n);
  16. printf ("\n Vvod elementov massiva 1");
  17. vvod(mas1,n);
  18. printf ("\n Vvod elementov massiva 2");
  19. vvod(mas2,n);
  20. rez=pr(mas1,mas2, n);
  21. }
  22. int*mem (int n)
  23. {
  24. int *m;
  25. m=(int*)calloc(n, sizeof (int));
  26. return m;
  27. }
  28. void vvod (int*mas, int n)
  29. {
  30. for (int i=0; i<n; i++)
  31. scanf ("%d", mas +i);
  32. }
  33. int pr (int*mas1, int*mas2, int n)
  34. {
  35. int a=0;
  36. int kol=0;
  37. int par=0;
  38. int sum=0;
  39. for (int i=0; i<n; i++)
  40. {
  41. a=*(mas1+i) * *(mas2+i);
  42. if (a>10)
  43. {
  44. par=i;
  45. kol+=1;
  46. sum+=a;
  47. printf ("%5d", sum);
  48. }
  49. }
  50. }
  51. void show (int mas3, int kol)
  52. {
  53. int i=0;
  54. for (int i=0; i<=kol; i++)
  55. printf ("%5d", (mas3+1));
  56. }

Решение задачи: «Вывести на печать все пары индексов массива»

textual
Листинг программы
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     int i,N,Summa=0,KolVo=0;
  7.     cout<<"Type N:\n";
  8.     cin>>N;
  9.     int *MasA=new int[N];
  10.     int *MasB=new int[N];
  11.     int *Hlp = new int[N];
  12.     for(i=1;i<N;i++)
  13.     {
  14.         cout<<"Type value of Massiv A:\n"<<i;
  15.         cin>>MasA[i];
  16.         cout<<"Type value of Massiv B:\n"<<i;
  17.         cin>>MasB[i];
  18.         if(MasA[i]*MasB[i]>10)
  19.         {
  20.             Summa=Summa+MasA[i]*MasB[i];
  21.             KolVo++;
  22.             Hlp[i]=i;
  23.         }
  24.         else
  25.             Hlp[i]=0;
  26.     }
  27.     cout<<"\nSUMMA:"<<Summa;
  28.     cout<<"\nKolVo:"<<KolVo;
  29.     for(i=1;i<N;i++)
  30.     {
  31.         if(Hlp[i]>0)
  32.             cout<<"\nINDEXES:"<<Hlp[i];
  33.  
  34.     }
  35.     delete MasA;
  36.     delete MasB;
  37.     delete Hlp;
  38.     return 0;
  39. }

Объяснение кода листинга программы

В этом коде:

  1. Объявляются три переменные типа int: i, N, Summa.
  2. Пользователю предлагается ввести значение переменной N.
  3. Динамически выделяется память под два массива (MasA и MasB) по N элементов.
  4. Динамически выделяется память под массив Hlp (помощнический) по N элементов.
  5. В цикле for (от 1 до N-1) пользователь вводит значения для элементов MasA и MasB.
  6. Если произведение элементов MasA[i] и MasB[i] больше 10, то к Summa прибавляется произведение элементов, к KolVo добавляется единица, а в Hlp записывается i.
  7. Если произведение элементов MasA[i] и MasB[i] меньше или равно 10, то в Hlp записывается 0.
  8. После окончания цикла выводятся значения Summa и KolVo.
  9. В цикле for (от 1 до N-1) выводятся индексы i, для которых Hlp[i] больше нуля.
  10. Выделяемая память освобождается.
  11. Программа завершается возвратом 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы