- •Int main (void) {
- •Int main(void) {
- •Void f102(file* filein, double* y) {
- •Int main(void){
- •Int main (void) {
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void) {
- •Int main(void){
- •Int main(void) {
- •Int main(void) {
- •Int main(void) {
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
- •Int main(void){
Int main(void){
FILE*in;
FILE*out;
int result;
out=fopen(“output.txt”, “w”); if(out==NULL) return 1;
in=fopen(“input.txt”, “r”); if(in==NULL) {fclose(out); return 1;}
f124(in, &result);
if (result==False) fprintf(out, “false”);
fprintf(out, “%d”, result);
fclose(in); fclose(out);
return 0;
}
void f124(FILE* filein, int* otvet){
int q, a1, a2, a3, s=0.0, n=0.0; double y=0.0;
q=fscanf(filein, “%d”, &a1);
if(q==EOF) {*otvet=0; return;}
assert(q==1);
while((q=fscanf(filein, “%d”, &a2))==1){
if(a1<a2&&a3<a2) or (a1>a2&&a3>a2) {s+=a1; n++;}
y=(double)s/(double)n;
*otvet=y;
else {*otvet=False; return ;}
}
assert(q==EOF);
return;
}
Задача №25.
Вычислить максимальное расстояние (разность порядковых номеров) между соседними максимумами в последовательности целых чисел. Первый и последний элементы могут быть максимумами, в этом случае сравнение рассматривается только для одного соседнего элемента.
Ответ: одно число – искомое расстояние. Если в последовательности менее двух максимумов, то в ответ надо записать слово false.
Задача №26.
Определить среднее арифметическое всех значений элементов последовательности целых чисел, учитывая только одно из значений для каждого постоянного участка.
Ответ: одно вещественное число – искомое среднее арифметическое. При решении можно считать, что последовательность не пуста.
#include <stdio.h>
#include <assert.h>
void f126(FILE*, double*);
Int main(void) {
FILE*in;
FILE*out;
double result;
out=fopen(“output.txt”, “w”); if(out==NULL) return 1;
in=fopen(“input.txt”, “r”); if(in==NULL) {fclose(out); return 1;}
f126(in, &result);
fprintf(out, “%d”, result);
fclose(in); fclose(out);
return 0;
}
void f126(FILE* filein, double*otvet){
int q, a1, a2, s=0.0, n=0.0; double t;
q=fscanf(filein, “%d”, a1);
s+=a1; n=1.0;
while ((q=fscanf(filein, “%d”, &a2))=1); {
if (a2!=a1) {s+=a2; n++; a1=a2;}
}
assert (q==EOF);
t=(double)s/(double)n;
*otvet=t;
return;
}
Задача №27.
Определить среднее арифметическое значений постоянных участков последовательности целых чисел.
Ответ: одно вещественное число – искомое среднее арифметическое. Если в последовательности нет постоянных участков, то ответ должен быть 0.
#include <stdio.h>
#include <assert.h>
void f127(FILE*, int*);
Int main(void){
FILE*in;
FILE*out;
int result;
out=fopen(“output.txt”, “w”); if (out==NULL) return 1;
in=fopen(“input.txt”, “r”); if (in==NULL) {fclose(out); return 1;}
q=fscanf(in, “%d”, &last);
f127(in, &result);
fprintf(out, “%d”, result);
fclose(in); fclose(out);
return 0;
}
void f127(FILE* in, int* otvet){
int a1, a2, s=0.0, n=0.0, q; double y;
q=fscanf(filein, “%d”, &a1);
if(q==EOF) {*otvet=0; return;} assert(q==1);
while ((q=fscanf(filein, “%d”, &a2))==1){
if (a1==a2) {s+=a1; n++;}
y=(double)s/(double)n;
*otvet=y;
return;
}
Задача №28.
Определить максимальную сумму подряд идущих элементов в последовательности вещественных чисел (т.е. элементов, имеющих последовательные номера от некоторого k до некоторого m).
Ответ: одно число – значение искомой максимальной суммы. При решении задачи можно считать, что последовательность не пуста.
Задача №29.
Последовательность вещественных чисел представляет собой коэффициенты многочлена, записанные в порядке возрастания степеней. Требуется вычислить значение многочлена и его производной в заданной точке Х. В файле данных сначала записано число Х, а далее за ним записываются элементы последовательности коэффициентов. Хотя бы одно число из последовательности и число Х обязательно присутствуют в файле.
Ответ: два числа – значение многочлена и производной.
Последовательности w={a1,a2,…,an} сопоставим многочлен Pw(t)=a1+a2 t+…+an t^(n-1), причем будем считать, что пустой последовательности сопоставлен многочлен, тождественно равный 0. Поскольку w*a={a1,…,an,a} при n>1, то получаем Pw*a(t)=Pw(t) + a*t^n, откуда P ҆ w*a(t)=P ҆ w(t)+n*a*t^(n-1)
Для фиксированного вещественного числа х сопоставим последовательности w длины >=1 четыре числа:
P=Pw(x); dp=P ҆ w(x), n-число элементов в w, M=x^(n-1) (считаем, что нулевая степень любого числа х равна 0, в частности 0.0^0=0.0). При переходе от последовательности w к последовательности w*a эти 4 числа пересчитываются следующим образом:
p(new)=p+a*M(new); dp(new)=dp+n*a*M; n(new)=n+1; M(new)=M*x
#include <stdio.h>
#include <assert.h>
void f129(FILE*, double *, double *);