- •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;}
f111(in, &result);
fprintf(out, "%d", result);
fclose(in); fclose(out);
return 0;
}
void f111(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) {M=M+d; d=1;}
a1=a2;
}
}
assert (q==EOF);
if (d>=2) M=M+d;
*otvet=M;
return;
}
Задача №12.
Определить порядковый номер первого элемента, который является максимальным во всей последовательности вещественных чисел (нумерация начинается с 1).
Ответ: одно число – искомый номер. Для пустой последовательности правильный ответ -1.
Задача №13.
Определить порядковый номер последнего элемента, который является минимальным во всей последовательности вещественных чисел (нумерация элементов начинается с 1).
Ответ: одно число – искомый номер. Для пустой последовательности правильный ответ -1.
Задача №14.
Определить количество элементов последовательности целых чисел, равных минимальному значению по всем элементам последовательности.
Ответ: одно число – искомое количество. Для пустой последовательности правильный ответ 0.
#include <stdio.h>
#include <assert.h>
void f114(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; }
f114 (in, &result);
fprintf(out, "%d", result);
fclose(in); fclose(out);
return 0;
}
void f114(FILE* filein, int* otvet){
int q, n=0, min, a;
q=fscanf(filein, "%d", &a);
if (q==EOF) {*otvet=0; return;}
assert (q==1);
min=a; n=1;
while( (q=fscanf(filein, "%d", &a))==1){
if (a<min) {min=a; n=1;}
else if (a==min) n++;
}
assert(q==EOF);
*otvet=n;
return;
}
Задача №15.
Вычислить среднеквадратическое отклонение от среднего арифметического для вещественной последовательности, т.е. сумму D=1/N sum_{i=1}^{N} (x_i – M)^2, где М – среднее арифметическое последовательности, x_i – элементы последовательности.
Ответ: одно вещественное число – искомое отклонение. При решении задачи можно считать, что исходная последовательность непуста.
Задача №16.
Вычислить максимальное отклонение элементов последовательности вещественных чисел от среднего арифметического этой последовательности.
Ответ: одно вещественное число – искомое отклонение. При решении задачи можно считать, что исходная последовательность непуста.
Задача №17.
Определить количество возрастающих участков в последовательности вещественных чисел.
Возрастающий участок – это группа из более чем одного элемента последовательности, где каждый следующий элемент строго больше предыдущего.
Ответ: одно целое число – искомое количество. Для последовательности, содержащей менее двух элементов, правильный ответ 0.
Задача №18.
Определить сумму всех четных элементов, расположенных в возрастающих участках последовательности целых чисел. (см 17)
Ответ: одно целое число – искомая сумма. Для последовательности, содержащей менее двух элементов или не умеющей возрастающих участков, правильный ответ 0.
#include <stdio.h> #include <assert.h> void f118(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); f118(in, &result); fprintf(out, “%d”, result); fclose(in); fclose(out); return 0; }
void f118(FILE* filein, int* otvet){ int last, s=0.0, n=1.0, q, a; q=fscanf(filein, “%d”, &last); if(q==EOF) {*otvet=0; return;} while ((q=fscanf(filein, “%d”, &a))==1){ if (last<a) {n++;} if((n>1)&&(last%2==0)) {s+=last; last=a;} else if(last>=a) {n=1; last=a;} last=a; } if ((n>1)&&(last%2==0)) s+=last; } *otvet=s; assert(q==EOF); return; }
/*
void f18(FILE* filein, int* otvet){ int h=0, t=0, s=0, a, aold=1000000, q; while ((q=fscanf(filein, “%d”, &a)==1)){ if (a>aold) {h++; t++;} if ((h>0)&&(aold%2==0)) {s+=aold;} if (a<=aold) {h=0;} aold=a; } if ((h>0)&&(aold%2==0)) {s+=aold;} if (t=0) {*otvet=0;} else {*otvet=s;} return; }
Задача №19.
Определить каких участков в последовательности вещественных чисел больше – возрастающих или невозрастающих. Если в последовательности более одного элемента, то возрастающие и невозрастающие участки в ней естественным образом чередуются так, что конец одного участка является началом другого.
Ответ: 1, если возрастающих больше, -1, если невозрастающих больше, 0, если поровну. Для последовательности, содержащей менее двух элементов, правильный ответ 0. n-невозрастающих, N-возрастающих
#include <stdio.h> #include <assert.h> void f119(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;} f119(in, &result); fprintf(out, “%d”, result); fclose(in); fclose(out); return 0;
}
void f119(FILE* filein, int* otvet){ int q, a1, a2, N=0.0, n=0.0, last:
q=fscanf(filein, “%d”, &last); if(q==EOF) {*otvet=0; return;} assert(q==1);
while((q=fscanf(filein, “%d”, &a1))==1){ if(last<a1&&a1<a2) N++; else if(last>=a1&&a1>=a2) n++;
last=a1;
assert(q==EOF);
if(N>n) *otvet=1;
else if(N<n) *otvet=-1; else if(N=n) *otvet=0;
}
return;
}
/*
void f19(FILE* filein, int* y){
int up=0, down=0, q, h=0, t=0;
double a, aold;
q=fscanf(filein, “%lf”, &aold); if (q==EOF) {*y=0; return;}
while ((q=fscanf(filein, “%lf”, &a))==1){ if ((a>aold)&&(k==0)) {t=0; h=1; up++;}
else if (t==0) {t=1; h=1; down++;}
aold=a;
}
if (up==down {*y=0} else if (up>down) {*y=1} else {*y=-1;}
return;
}
Задача №20.
Определить наибольшее количество подряд идущих элементов последовательности целых чисел, имеющих одно и то же значение.
Ответ: одно число – искомое максимальное количество. Если в последовательности нет соседних элементов с одинаковым значением, то ответ 1, для пустой – 0.
#include <stdio.h>
#include <assert.h>
void f120(FILE*, int*);