Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadachi_avtomatizirovannogo_zacheta.docx
Скачиваний:
1
Добавлен:
20.07.2019
Размер:
52.51 Кб
Скачать

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*);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]