- •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;
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;
}