C/C++

Нужна программа на языке С.

Задачи:
1) Найти сумму и общее количество тех элементов заданного массива X1,X2, … ,Xn, абсолютная величина которых отличается от Р не более, чем на Т.

2) Найти сумму и число тех элементов массива X, которые попадают на заданный отрезок.
1)

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(void) {
int n, i, c, p, t;
long long s;
int* box = NULL;
printf("n: ");
scanf_s("%i", &n);
box = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; ++i) {
printf("box[%i] >>> ", i);
scanf_s("%i", &box[i]);
}
system("cls");
for (i = 0; i < n; ++i) printf("%4i", box[i]);
putchar('\n');
s = c = 0;
printf("p: ");
scanf_s("%i", &p);
printf("t: ");
scanf_s("%i", &t);
for (i = 0; i < n; ++i) {
if (fabs(fabs(box[i]) - p) <= t) {
s += box[i];
++c;
}
}
printf("Sum: %lli\nCount: %i\n", s, c);
free(box);
system("pause > nul");
return 0;
}
МС
Макс Сабуров
62 079
Лучший ответ
С массивом из n целых чисел (n интерактивно вводится с экрана) от l до m (модули l и m где-то до двух миллиардов и задаются заранее, имея ввиду, что тип int - это четырёхбайтные знаковые целые !); числа P,T,a и b вводятся с экрана тоже как числа типа int, а суммы вычисляются как восьмибайтные целые типа long long int:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
int main() { int i,n,*X,P,T,a,b,k,K,l=-10,m=10; long long int s,S; srand(time(NULL)); for (;;) { printf("n P T a b > "); scanf("%d%d%d%d%d",&n,&P,&T,&a,&b); k=K=0; s=S=0; X=(int*)malloc(4*n); for (i=0; i< n; i++) { X[i]=rand()%(m-l+1)+l; if (X[i] >=a&&X[i] <=b) { K++; S+=X[i]; } if (fabs(fabs(X[i])-P) <=T) { k++; s+=X[i]; } printf("%d ",X[i]); }
printf("\n%d %llu\n%d %llu\n",k,s,K,S); } return 0; }
Андрей //////
Андрей //////
28 648