Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как ограничить массив? (http://forum.oszone.net/showthread.php?t=341144)

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;
}


lxa85 03-07-2019 13:37 2877921

  1. Код
    Код:

    printf("N не отрицательное ");
    scanf("%d",&n1);
    printf("N отрицательное ");
    scanf("%d",&n2);

    Должен быть расположен внутри функции main (){}
    Т.к. сейчас он находится неизвестно где.
  2. Не забывайте, что C++ регистрочувствительный.
    Следовательно n1 и N1 -- это разные вещи.
    Обратите внимание на регистр вводимых переменных.


Время: 19:07.

Время: 19:07.
© OSzone.net 2001-