Алгоритм программы сортировки 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Алгоритм программы сортировки



#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void main()

{ int j,i,k,n,m;

int a[10];

clrscr();

// формирование сортируемого массива

randomize();

printf("\n введите размерность массива ");

scanf("%d",&n);

for(i=0; i<n; i++)

{ a[i]=random(99)+1;

printf("%3d",a[i]);

}

printf("\n");

 

     
 

 


                                                         

 

     
 

 

 


да
нет
                                                         

 


//сортировка массива

for(i=1;i<n; i++)

{ j=i-1; m=a[i];

while((j>=0)&&(m<a[j]))

{a[j+1]=a[j]; j--;}

a[j+1]=m;

// отладочная печать

printf(" i=%d j=%d m=%2d ",i,j+1,m);

for(k=0; k<n; k++)

{if(k==i)   //граница корректируемой части массива

    {textcolor(2);cprintf("%3d",a[k]);textcolor(5);}

  else

   if(k==(j+1)) // новое место вставляемого элемента

    {textcolor(3); cprintf("%3d",a[k]);textcolor(5);}

else printf("%3d",a[k]);

}

printf("\n");

}

// печать результата сортировки

for(i=0; i<n; i++)

printf("%3d ",a[i]);

printf("\n");

getch();

}

 

Задания для самостоятельной работы.

Измените процедуры сортировки в трёх рассмотренных методах так, чтобы осуществлялась сортировка:

· чётных элементов массива;

· элементов записанных на нечётных местах;

· отрицательных элементов массива.

 

 


Функции.

Разработка программного обеспечения является довольно непростым процессом. Системный подход к программированию основывается на том, что поставленная перед разработчиком программа предварительно разбивается на ряд менее крупных вопросов, которые, в свою очередь, делятся на несколько менее сложных задач и так далее. Если требуется выполнить некоторый набор действий несколько раз, то его следует оформить особым образом, чтобы вызывать его при необходимости. Разделение решения задачи на отдельные функции позволяет избежать избыточности кода, объединить часто используемые функции в библиотеки и создать модульные более простые в сопровождении программы. 

Функция - это логически самостоятельная именованная часть программы, которой могут передаваться параметры и которая может возвращать некоторое значение.

 Функции состоят из объявлений, определений и операторов, с их помощью сложная задача может быть разделена на более простые и обозримые задачи.

Каждая программа на языке С обязательно включает в себя функцию с именем main (главная функция), которая является основной частью программы. Когда программа начинает выполняться, вызывается функция main и дальнейшее выполнение программы продолжается под её управлением. Когда выполнение функции main заканчивается, то завершается и вся программа.

Константы, типы данных и переменные, описанные вне функций (включая main), считаются глобальными.

 

Определение функции.

Современный стиль определения функции:

 [<тип_результата>] < имя _функции> (< список_формальных_параметров>)                                                                                                   

{

<описание_локальных_параметров >;

< раздел_операторов _функции >;

}

< список_формальных_параметров> - определяет параметры, передаваемые в функцию, и может содержать любую комбинацию типов и имён. Элементы списка разделяются запятыми. Для каждого элемента списка указывается его тип, который необходим компилятору для проверки соответствия типов /*и перегрузки функций (С++). */

Пример 1:

float ratio(float divident, float disior)

 { float y;   // локальная переменная

if (disior==0.) y=3.4e38;

else        y= divident/disior;

return(y);   

 }

Описание функции.

Наряду с определением функции в каждой программе должно присутствовать и её описание, если функция используется до её определения.

/*Современный стиль описания функции используется в расширенной версии стандарта языка С.*/ При описании функций в /*этой версии*/ С используются специальные средства языка, известные под названием «прототип функции». Описание функции с использованием её прототипа:

<тип_результата> < имя _функции>(< инф_пар1>,<инф_пар2>,…);

где информация о параметре < инф_пар> имеет один из следующих форматов:

<тип >

<тип ><имя_параметра >

При использовании прототипа функции должен быть описан тип каждого формального параметра либо указано также и его имя. /* Компилятор получает возможность производить проверку на соответствие количества и типа параметров при каждом обращении к функции, а также по возможности выполнять необходимые преобразования.*/

Пример 2: функция vv() описана с помощью своего прототипа.

# include <stdio.h>  

# include <conio.h>

double vv(double, double, double);

// прототип функции vv(), возвращающей значение типа

// double и получающей три параметра типа double

main()

 { double x=1.0, y=1.0, z=1.0;

while (x>=0 &&(z>0.1 || z<-0.1))

{ printf(“ значение f=%f\n”, vv (x,y,z));

// функция vv используется до её определения

scanf(“%1f%1f%1f”,&x,&y,&z);

}

printf(“ Конец работы программы”);

 }

// определение функции vv

double vv (double x, double y, double z)

{ double f;

f=sqrt(x)+y/z;

return(f);

 }

Если в программе не объявить функцию vv () как имеющую тип double, по умолчанию будет предполагаться, что возвращается значение типа int.

 

Пример 3: оформить в виде функции алгоритм вычисления степени y = xn   произвольного значении х с натуральным показателем n.

double power(int n, float x)

    // в заголовке функции указаны:

    // формальные параметры n, x и их типы,

    // тип результата возвращаемого в программу

 {

int i; // локальные переменные, доступны

double y; // только внутри данной функции

y=1;

for (i=1; i<=n; i++)

y*=x;

return(y); // результат, возвращаемый в программу

 }

Пример 4: оформить в виде функции нахождение максимального элемента в массиве вещественных чисел.

float FnMax(int n, float z[])

// параметры функции:имя массива, его размер

 {

int i;

float max; //результат, возвращаемый в программу

max=z[0];

for(i=0; i<n; i++)

if (max<z[i]) max=z[i];

return(max);

}

 

Вызов функции.

Представляет собой указание идентификатора функции (её имени), за которым в круглых скобках следует список аргументов, разделённых запятыми:

  < имя _функции> (< список_фактических_ параметров>)                                                                                          

Каждый аргумент функции представляет собой переменную, выражение или константу, передаваемые в тело функции для дальнейшего использования в вычислениях. Список аргументов функции может быть пустым.

Пример 5: объявления и вызовы функции:

// Объявление функции

int MyFunction(int Numberl, float point);

char InputSymbol();

void SetBit(short Num);

EmptySample(int, char);

// Вызов функции

Rezult=MyFunction(varbl, 3.14);

symb=InputSymbol();

SetBit(3);

EmptySample(2,smbl);

 



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 68; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.134.118.95 (0.013 с.)