Anastasiya9kmmr |
03-07-2019 10:25 2877880 |
Как ограничить массив?
В общем надо ограничить промежуток а б а не получается если что вот задание.
Составить программу, формирующую одномерный массив, состоящий из N вещественных элементов. Найти максимальный элемент массива и его индекс. Сжать массив, удалив из него элементы, модуль которых находится в интервале [a, b] (задаваемого пользователем). Освободившиеся в конце массива элементы заменить нулями. Вычислить сумму элементов массива, расположенных до последнего положительного элемента.
А это код. Но проблема что пользователь не имеет возможности ввести интервал.
Код:
#include<stdio.h>
#include<math.h>
#include<locale.h>
#define MAX "Индекс максимального элемента равен: "
#define AL printf("[%d]=",i)
#define SUM "Сумма элементов массива, расположенных до последнего положительного элемента: "
#define SORTARR "Отсортированный массив"
printf("N не отрицательное ");
scanf("%d",&n1);
printf("N отрицательное ");
scanf("%d",&n2);
//максималочка
int searchMAX(float *array)
{
int number,i,j;
float max;
for(i=0,max=array[i],j=1,number=i;i<N1&&j<N1;i>N2&&j>N2,i++,j++)
if(max<array[j])
{
max=(array[j]);
number=j;
}
return(number);
}
//сум
int sum_after(float *array){
int i,ok=-1;
float sum=0.0;
for(i=0;i<N;i++){
if(array[i]<0 && !(ok))
{
ok=1;
continue;
}
if(ok) sum+=fabs(array[i]);}
return(sum);
}
//предел
void arraymsort(float *array, float b, float a, int size)
{
int i,j,k;
for(i=0;i<size;i++)
{
if(array[i]<=a && array[i]>=b) {
k=i;
for(j=i+1;j<size;j++)
{
array[i]=array[j];
i++;
if(i==(size-1)) array[i]=0;
}i=k-1;}}
for(i=0;i<size;i++)
printf("[%d]=%2.0f\t",i,*(array+i));
}
int main(int argc, char* argv[])
{
setlocale(LC_ALL,".1251");
float array[N], sum;
int i;
for(i=0;i<N1,i>N2;i++)
{
AL;
scanf("%f",array+i);
}
printf("%s",MAX);
//номера макс
int h=searchMAX(array);
printf("%d\n",h);
//сумма
printf("%s",SUM);
sum=sum_after(array);
printf("%2.2f\n",sum);
// сжат
printf("%s\n",SORTARR);
arraymsort(array,5,10,N);
return 0;
}
|