P
prettynetty
Здравствуйте, заранее извиняюсь, если что то неправильно оформила.
Дано несколько массивов чисел (типы массивов различны). Длины массивов вводятся пользователем. Требуется для каждого массива выполнить заданные действия.
Ввести и обработать два одномерных массива, содержащие соответственно n целых и m вещественных компонентов. Вычислить:
1) произведение положительных элементов массива;
2) сумму элементов массива, расположенных до минимального элемента.
3) Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.
Если в пункте 1 и 2 я более ли менее уверена, то с 3-им пунктом возникают проблемы
<!--shcode--><pre><code class='"[code'>[/code]"]
#include<windows.h>
#include<stdio.h>
#include<math.h>
template <class Type> void VVOD(Type *mas1, int m);
template <class Type> void VYVOD(Type mas1, int m);
template <class Type> Type PR(Type *mas1, int m, bool &x);
template <class Type> Type SUM(Type *mas1, int m);
template <class Type> void OBR(Type *mas1, int m);
main()
{
SetConsoleOutputCP(1251);
int mas1[25],m,n,pr1;
float pr2;
bool x;
printf("Введите размерности m и n:\n");
scanf("%d%d",&m,&n);
float *mas2=new float[n];
printf("Для массива типа int:\n");
VVOD(mas1,m);
printf("Для массива типа float:\n");
VVOD(mas2,n);
printf("Массив типа int:\n");
VYVOD(mas1,m);
printf("Массив типа float:\n");
VYVOD(mas2,n);
pr1=PR(mas1,m,x);
if(x==true)
{
printf("Произведение положительных элементов массива типа int равно: %d\n", pr1);
}
else printf("Положительных элементов нет\n");
pr2=PR(mas2,n,x);
if(x==true)
{
printf("Произведение положительных элементов массива типа float равно:%f\n", pr2);
}
else printf("Положительных элементов нет:\n");
printf("Произведение положительных элементов массива типа float равно:%f\n", pr2);
printf("Сумма положительных элементов, расположенных до минимального равна:\n");
printf("для массива типа int - %d\n",SUM(mas1,m));
printf("для массива типа float -%f\n\n ",SUM(mas2,n));
printf("Преобразованные массивы:\n");
OBR(mas1,m);
OBR(mas2,n);
printf("\n");
VYVOD(mas1,m);
printf("\n");
VYVOD(mas2,n);
return 0;
}
template <class Type> void VVOD(Type *mas1, int m)
{
int i;
for(i=0;i<m;i++)
{
printf("Введите -ый элемент массива:\n");
scanf("%d", &mas1);
}
return;
}
template <class Type> void VYVOD(Type mas1, int m)
{
int i;
for(i=0;i<m;i++)
printf("%d",mas1);
printf("\n");
return;
}
template <class Type> Type PR(Type *mas1, int m, bool &x)
{
x=false;
int i;
Type pr=1;
for(i=0;i<m;i++)
if(mas1>0)
{
pr*=mas1;
x=true;
}
return pr;
}
template <class Type> Type SUM(Type *mas1, int m)
{
Type sum=0;
int i,min=0;
for(i=1;i<m;i++)
if(mas1<mas1[min])
min=i;
for(i=0;i<min;i++)
sum+=mas1;
return sum;
}
template <class Type> void OBR(Type *mas1, int m)
{
Type temp;
int i, min;
bool flag=true;
while(flag)
{
flag=false;
for(i=0;i<m-1;i++)
{
if(a>a[i+2] && mod(i,2)==0)
{
temp=a;
a=a[i+2];
a[i+2]=temp;
flag=true;
}
else if(a>a[i+2] && mod(i,2)==1)
{
temp=a;
a=a[i+2];
a[i+2]=temp;
flag=true;
}
}
}
}
return;
}[/CODE]
Дано несколько массивов чисел (типы массивов различны). Длины массивов вводятся пользователем. Требуется для каждого массива выполнить заданные действия.
Ввести и обработать два одномерных массива, содержащие соответственно n целых и m вещественных компонентов. Вычислить:
1) произведение положительных элементов массива;
2) сумму элементов массива, расположенных до минимального элемента.
3) Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.
Если в пункте 1 и 2 я более ли менее уверена, то с 3-им пунктом возникают проблемы
<!--shcode--><pre><code class='"[code'>[/code]"]
#include<windows.h>
#include<stdio.h>
#include<math.h>
template <class Type> void VVOD(Type *mas1, int m);
template <class Type> void VYVOD(Type mas1, int m);
template <class Type> Type PR(Type *mas1, int m, bool &x);
template <class Type> Type SUM(Type *mas1, int m);
template <class Type> void OBR(Type *mas1, int m);
main()
{
SetConsoleOutputCP(1251);
int mas1[25],m,n,pr1;
float pr2;
bool x;
printf("Введите размерности m и n:\n");
scanf("%d%d",&m,&n);
float *mas2=new float[n];
printf("Для массива типа int:\n");
VVOD(mas1,m);
printf("Для массива типа float:\n");
VVOD(mas2,n);
printf("Массив типа int:\n");
VYVOD(mas1,m);
printf("Массив типа float:\n");
VYVOD(mas2,n);
pr1=PR(mas1,m,x);
if(x==true)
{
printf("Произведение положительных элементов массива типа int равно: %d\n", pr1);
}
else printf("Положительных элементов нет\n");
pr2=PR(mas2,n,x);
if(x==true)
{
printf("Произведение положительных элементов массива типа float равно:%f\n", pr2);
}
else printf("Положительных элементов нет:\n");
printf("Произведение положительных элементов массива типа float равно:%f\n", pr2);
printf("Сумма положительных элементов, расположенных до минимального равна:\n");
printf("для массива типа int - %d\n",SUM(mas1,m));
printf("для массива типа float -%f\n\n ",SUM(mas2,n));
printf("Преобразованные массивы:\n");
OBR(mas1,m);
OBR(mas2,n);
printf("\n");
VYVOD(mas1,m);
printf("\n");
VYVOD(mas2,n);
return 0;
}
template <class Type> void VVOD(Type *mas1, int m)
{
int i;
for(i=0;i<m;i++)
{
printf("Введите -ый элемент массива:\n");
scanf("%d", &mas1);
}
return;
}
template <class Type> void VYVOD(Type mas1, int m)
{
int i;
for(i=0;i<m;i++)
printf("%d",mas1);
printf("\n");
return;
}
template <class Type> Type PR(Type *mas1, int m, bool &x)
{
x=false;
int i;
Type pr=1;
for(i=0;i<m;i++)
if(mas1>0)
{
pr*=mas1;
x=true;
}
return pr;
}
template <class Type> Type SUM(Type *mas1, int m)
{
Type sum=0;
int i,min=0;
for(i=1;i<m;i++)
if(mas1<mas1[min])
min=i;
for(i=0;i<min;i++)
sum+=mas1;
return sum;
}
template <class Type> void OBR(Type *mas1, int m)
{
Type temp;
int i, min;
bool flag=true;
while(flag)
{
flag=false;
for(i=0;i<m-1;i++)
{
if(a>a[i+2] && mod(i,2)==0)
{
temp=a;
a=a[i+2];
a[i+2]=temp;
flag=true;
}
else if(a>a[i+2] && mod(i,2)==1)
{
temp=a;
a=a[i+2];
a[i+2]=temp;
flag=true;
}
}
}
}
return;
}[/CODE]