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

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

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

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

Задание:

Даны 2 динамических массива размерность n. Вывести на печать все пары индексов, для которых a[i]*b[i]>10. Подсчитать число пар и сумму этих произведений.
#include <stdio.h>
 
int *mem (int n);
void vvod (int *mas1, int n);
//void vvod (int *mas2, int n);
int pr (int *mas1, int *mas2, int n);
void show(int *mas1, int n);
 
void main ()
{
    int n, rez;
    int*mas1;
    int*mas2;
    printf ("\n Vvod razmera massivov");
    scanf ("%d", &n);
    mas1=mem (n);
    mas2=mem (n);
    printf ("\n Vvod elementov massiva 1");
    vvod(mas1,n);
    printf ("\n Vvod elementov massiva 2");
    vvod(mas2,n);
    rez=pr(mas1,mas2, n); 
}
 
int*mem (int n)
{
    int *m;
    m=(int*)calloc(n, sizeof (int));
    return m;
}
 
void vvod (int*mas, int n)
{
    for (int i=0; i<n; i++)
        scanf ("%d", mas +i);
}
 
int pr (int*mas1, int*mas2, int n)
{
    int a=0;
    int kol=0;
    int par=0;
    int sum=0;
    for (int i=0; i<n; i++)
    {
        a=*(mas1+i) * *(mas2+i);
        if (a>10)
        {
            par=i;
            kol+=1;
            sum+=a;
            printf ("%5d", sum);
        }
    }
}
void show (int mas3, int kol)
{
    int i=0;
    for (int i=0; i<=kol; i++)
        printf ("%5d", (mas3+1));
}

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

textual
Листинг программы
#include <iostream>
using namespace std;
 
int main()
{
    int i,N,Summa=0,KolVo=0;
    cout<<"Type N:\n";
    cin>>N;
    int *MasA=new int[N];
    int *MasB=new int[N];
    int *Hlp = new int[N];
    for(i=1;i<N;i++)
    {
        cout<<"Type value of Massiv A:\n"<<i;
        cin>>MasA[i];
        cout<<"Type value of Massiv B:\n"<<i;
        cin>>MasB[i];
        if(MasA[i]*MasB[i]>10)
        {
            Summa=Summa+MasA[i]*MasB[i];
            KolVo++;
            Hlp[i]=i;
        }
        else
            Hlp[i]=0;
    }
    cout<<"\nSUMMA:"<<Summa;
    cout<<"\nKolVo:"<<KolVo;
    for(i=1;i<N;i++)
    {
        if(Hlp[i]>0)
            cout<<"\nINDEXES:"<<Hlp[i];
 
    }
    delete MasA;
    delete MasB;
    delete Hlp;
    return 0;
}

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

В этом коде:

  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
Похожие ответы