Функции Шаблоны Массивы

  • Автор темы prettynetty
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

prettynetty

#1
Дано несколько массивов чисел (типы массивов различны). Длины массивов вводятся пользователем. Требуется для каждого массива выполнить заданные действия.
Ввести и обработать два одномерных массива, содержащие соответственно n целых и m вещественных компонентов. Вычислить:
1) произведение положительных элементов массива;
2) сумму элементов массива, расположенных до минимального элемента.
3) Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.

для целочисленного массива все считает и выводит, а с вещественным возникают проблемы
<!--shcode--><pre><code class='"[i'>[/i]"]#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("Введите %d-ый элемент массива:\n",i);
scanf("%d", &mas1);
}
return;
}
template <class Type> void VYVOD(Type mas1, int m)
{
int i;
for(i=0;i<m;i++)
printf("%d\t",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++)
if(mas1>0)
sum+=mas1;
return sum;
}
template <class Type> void OBR(Type *mas1, int m)
{
bool change = true;
while(change)
{
change = false;
for(int i = 0; i < (m - 1) / 2 * 2; i += 2)
if (mas1 > mas1[i + 2])
{
Type temp;
temp=mas1;
mas1=mas1[i+2];
mas1[i+2]=temp;
change = true;
}
}

change = true;
while(change)
{
change = false;
for(int i = 1; i < (m - 2) / 2 * 2; i += 2)
if (mas1 > mas1[i + 2])
{
Type temp;
temp=mas1;
mas1=mas1[i+2];
mas1[i+2]=temp;
change = true;
}
}
}[/CODE]
 
Статус
Закрыто для дальнейших ответов.