- •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;}
f120(in, &result);
fprintf(out, “%d”, result);
fclose(in); fclose(out);
return 0;
}
void f120(FILE* filein, int* otvet){
int q, a1, a2, d, M;
q=fscanf(filein, “%d”, &a1;);
if(q==EOF) {*otvet=0; return;}
assert (q==1);
d=1; M=0;
while ((q=fscanf(filein, “%d”, &a2))==1){ if(a1==a2) d++; else { if(d>=2&&d>M) {M=d; d=1;} } a1=a2; } assert(q==EOF); *otvet=M; return; }
Задача №21.
Определить длину (количество элементов) в постоянном участке последовательности целых чисел, имеющем наибольшую сумму своих элементов.
Ответ: одно число – искомое количество элементов. Если в последовательности нет постоянных участков, то в файл ответа вывести слово false. Если же в последовательности несколько участков с максимальной суммой, то нужно вывести длину первого из них.
#include <stdio.h>
#include <assert.h>
void f121(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;}
f121(in, &result);
fprintf(out, “%d”, result);
fclose(in); fclose(out);
return 0;
}
void f121(FILE* filein, int* otvet){
int q, s=0, sold=-1000000, l=0, lfin=0, b=0, a, aold, h;
q=fscanf(filein, “%d”, &aold);
if(q==EOF) {*otvet=10000000; return;}
while ((q=fscanf(filein, “%d”, &a))==1){
if(a=aold) { if (h=0) {s=a+aold; l=2; b=1;}
else {s+=a; l++;}
} else {
if(h=1) {
if (s>sold) {
lfin=l;
sold=s;
} h=0; }
}
aold=a;
}
if (b=0) {*y=1000000;}
else {*y=lfin;}
return;
}
Задача №22.
Определить наибольшую длину (количество элементов) возрастающих участков последовательности вещественных чисел.
Ответ: одно число – искомое количество элементов. Если в последовательности нет возрастающих участков (в том числе, для пустой и одноэлементной последовательностей), то в качестве ответа надо вывести в файл слово false.
Задача №23.
Определить наибольшую сумму элементов по возрастающим участкам последовательности вещественных чисел (т.е. максимум из сумм элементов по каждому возрастающему участку).
Ответ: одно число – искомая максимальная сумма. Если в последовательности нет возрастающих участков, то в ответ записать слово false.
Задача №24.
Вычислить среднее арифметическое экстремумов последовательности целых чисел. Элемент последовательности называется экстремумом (максимумом или минимумом), если элементы, стоящие рядом с ним, строго меньше (строго больше). В частности, первый и последний элементы также могут быть экстремумами, в этом случае сравнение рассматривается только для одного соответствующего соседнего элемента.
Ответ: одно число – искомое среднее арифметическое. Если в последовательности нет экстремумов (в том числе и для пустой последовательности), то в ответ надо записать слово false.
#include <stdio.h>
#include <assert.h>
void f124(FILE*, int*);
#define False 0