Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ СИ. Лабораторный практикум доцента кафедры «Информационные системы и компьютерные технологии» Пановой Т.В. БГТУ «ВОЕНМЕХ».doc
Скачиваний:
146
Добавлен:
26.03.2015
Размер:
1.27 Mб
Скачать

4. Текст программы:

#include <stdio.h>

#include <conio.h>

void main()

{

const c=20;

int x[c],i,k=0,min,*p,n;

do

{

printf("\nInput number of elements of massiv n=");

scanf("%d",&n);

}

while (n<=0 || n>c);

p=&x[0];

printf("\nInput elements of massive:\n");

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

{

printf("x[%d]=",i);

scanf("%d",p);

p++;

}

p-=n;

printf("\nOutput massiv:\n");

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

{

printf("%d ",*p);

p++;

}

p--; min=*p;

for (i=n-2;i>=0;i--)

{

p--;

if (*p<min)

{

min=*p;

k=i;

}

}

*(p+k)=*(p+2);

*(p+2)=min;

printf("\nOutput massiv:\n");

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

{

printf("%d ",*p);

p++;

}

getch();

return;

}

5. Тестирование:

Теоретически рассчитанное выходное значение

Практически полученное выходное значение

Тест 1: входной массив: n=10; x[n]: -5 8 0 4 -5 7 9 0 9 -1

x[n]: -5 8 -5 4 0 7 9 0 9 -1

x[n]: -5 8 -5 4 0 7 9 0 9 -1

Тест 2: входной массив: n=7; x[n]: 1 0 5 9 1 0 4

вых. массив x[n]: 1 0 0 9 1 5 4

вых. массив x[n]: 1 0 0 9 1 5 4

Задача 3.

1. Постановка задачи: разработать алгоритм упорядочения по неубыванию значений элементов введенного массива, состоящего из n целых чисел, используя пузырьковую сортировку, и вывода отсортированного массива. Написать программу, реализующую разработанный алгоритм.

2. Математическая модель и описательный алгоритм: входной массив a: 9 0 -3 6 -3 2 8 9; входной массив индексов ai: 0 1 2 3 4 5 6 7; выходной массив после перестановок (после сортировки по неубыванию, когда aj+1aj): -3 -3 0 2 6 8 9 9; выходной массив индексов: 2 4 1 5 3 6 0 7.

  • В цикле с постусловием n≤0 или n>c ввести количество n элементов массива;

  • p=&a[0], в указатель pi занести адрес нулевого элемента массива индексов pi=&ai[0];

  • в цикле с параметром 0≤i<n ввести значения элементов по адресу p, p=p+1 и сформировать массив индексов *pi=i, pi=pi+1;

  • p=p-n; в цикле с параметром 0≤i<n вывести значения элементов массива *p, p=p+1;

  • для пузырьковой сортировки массива во внешнем цикле с параметром 0≤i<n-1 установить указатели p=p-n+i, pi=pi-n+i; во вложенном цикле с параметром 0≤j<n-1-i переставлять рядом стоящие элементы при нарушении признака порядка (неубывание – aj+1aj): если *(p+1)<*p, то менять элементы местами, используя дополнительную переменную b, вместе с элементами массива переставлять элементы массива индексов, чтобы отследить правильность сортировки по заданному признаку порядка, затем p=p+1, pi=pi+1;

  • в цикле с параметром 0≤i<n вывести значения элементов отсортированного массива *p, p=p+1;

  • в цикле с параметром 0≤i<n вывести значения элементов массива индексов после соответствующих перестановок *pi, pi=pi+1.

3. Блок-схема алгоритма программы:

4. Текст программы:

#include <stdio.h>

#include <conio.h>

void main()

{

const c=10;

int i,j,b,n,a[c],ai[c],*p,*pi;

do

{

printf("\nInput number of elements of massiv n=");

scanf("%d",&n);

}

while (n<=0 || n>c);

p=&a[0]; pi=&ai[0];

printf("\nInput elements of massive:\n");

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

{

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

scanf("%d",p);

*pi=i; p++; pi++;

}

p-=n; printf("\nOutput massiv:\n");

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

{

printf("%d ",*p); p++;

}

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

{

p=p-n+i; pi=pi-n+i;

for (j=0;j<n-1-i;j++)

{

if (*(p+1)<*p)

{

b=*(p+1);

*(p+1)=*p; *p=b;

b=*(pi+1);

*(pi+1)=*pi; *pi=b;

}

p++; pi++;

}

}

p--; pi--; printf("\nOutput massiv:\n");

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

{

printf("%d ",*p); p++;

}

printf("\n");

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

{

printf("%d ",*pi); pi++;

}

getch();

return;

}

Соседние файлы в предмете Программирование