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

Int main(void){

FILE* in; FILE* out;

double* A; // Описание имени массива A[]

int q, N, i;

int otvet;

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", &N); assert(q==1&&N>0); /* N прочитано успешно */

A = (double*) malloc(N*sizeof(double));

for(i=0; i<N; i++) q=fscanf(in,"%lf ",&A[i]);

assert (q==1); /* все элементы массива А прочитаны успешно */

f215(A,N,&otvet);

fprintf(out,"%lf ",otvet);

fclose(in); fclose(out); free(A);

return 0;

}

/* Сортировка массива целых чисел на том же месте по неубыванию.

Массив А считается отсортированным по неубыванию, если для любой пары

x, y соседних элементов массива выполнено нестрогое неравенство x<=y.

*/

void f215sort(int A[], int N){

#define Besporyadok(x,y) (x>y) /* Порядок <==> НЕубывание */

int i,j,tmp;

int ChisloBespor; /* Число беспорядков */

assert (N>0);

for (i=N-1; i>0; i=i-1) {

ChisloBespor=0;

for (j=0; j<i; j=j+1) {

if( Besporyadok(A[j],A[j+1]) ){

tmp=A[j];A[j]=A[j+1];A[j+1]=tmp;

ChisloBespor++;

}

}

if(ChisloBespor==0) return;

}

return;

}

void f215(double A[], int N){

#define Besporyadok(x,y) ((fabs(x))<(fabs(y)))

int i,j; double tmp;

int ChisloBespor; /* Число беспорядков */

assert (N>0);

for (i=N-1; i>0; i=i-1) {

ChisloBespor=0;

for (j=0; j<i; j=j+1) {

if( Besporyadok(A[j],A[j+1]) ){

tmp=A[j];A[j]=A[j+1];A[j+1]=tmp;

ChisloBespor++;

}

}

if(ChisloBespor==0) return;

}

return;

}

Задача 216. Переставить элементы массива вещественных чисел так, чтобы элементы с четными индексами остались на своих местах, а элементы с нечетными индексами стали упорядоченными по возрастанию. В частности, для массива из одного, двух или трех элементов преобразованный массив будет совпадать с исходным.

void f216(double A[], int N){

#define Besporyadok(x,y) (x>y)

int i,j; double tmp;

int ChisloBespor; // Число беспорядков

assert (N>0);

if (N<=3) return;

for (i=N-1; i>=3; i=i-2) {

ChisloBespor=0;

/* перебираем все элементы с нечетными индексами от 1 до j-1 */

/* и ликвидируем среди них беспорядки */

for (j=1; j+1<i; j=j+2) {

if( Besporyadok(A[j],A[j+2]) ){

tmp=A[j];A[j]=A[j+2];A[j+2]=tmp;

ChisloBespor++;

}

}

if(ChisloBespor==0) return;

}

return;

}

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