Вывести на печать все пары индексов массива - 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;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются три переменные типа int: i, N, Summa.
- Пользователю предлагается ввести значение переменной N.
- Динамически выделяется память под два массива (MasA и MasB) по N элементов.
- Динамически выделяется память под массив Hlp (помощнический) по N элементов.
- В цикле for (от 1 до N-1) пользователь вводит значения для элементов MasA и MasB.
- Если произведение элементов MasA[i] и MasB[i] больше 10, то к Summa прибавляется произведение элементов, к KolVo добавляется единица, а в Hlp записывается i.
- Если произведение элементов MasA[i] и MasB[i] меньше или равно 10, то в Hlp записывается 0.
- После окончания цикла выводятся значения Summa и KolVo.
- В цикле for (от 1 до N-1) выводятся индексы i, для которых Hlp[i] больше нуля.
- Выделяемая память освобождается.
- Программа завершается возвратом 0.