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

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

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

#include <stdio.h>

#include <conio.h>

#define c1 5 /* директива #define определяет идентификатор и последовательность символов, которой будет замещаться идентификатор c1 при его обнаружении в тексте программы */

#define c2 7

int main()

{

int x[c1][c2],i=0,n,m,imax,imin,buf,*p,*p0,*pmax,*pmin;

do

{

printf(“\nInput n,m: “);

scanf(“%d%d”,&n,&m);

}

while (n<=0 || n>c1 || m<=0 || m>c2);

p=p0=&x[0][0];

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

while (i<n*m)

{

scanf(“%d”,p);

p++;

i++;

}

p=p0;

i=0;

printf(“\nOutput matrics:\n”);

while (i<n*m)

{

printf(“%d ”,*p);

if ((i+1)%m==0) // для вывода двумерного массива в виде матрицы

printf(“\n”);

p++;

i++;

}

pmax=pmin=p=p0;

i=0;

do

{

if (*pmax<*p)

{

pmax=p;

imax=i;

}

if (*pmin>=*p)

{

pmin=p;

imin=i;

}

p++;

i++;

}

while (i<n*m);

imax=imax/m*m;

imin=imin/m*m;

i=0;

while (i<m)

{

buf=*(p0+imin+i);

*(p0+imin+i)=*(p0+imax+i);

*(p0+imax+i)=buf;

i++;

}

i=0;

printf(“\nOutput matrics:\n”);

while (i<n*m)

{

printf(“%d ”,*p0);

if ((i+1)%m==0)

printf(“\n”);

p0++;

i++;

}

getch();

return 0;

}

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

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

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

Тест: входной массив: n=3, m=4; x[n][m]:

-1 8 0 -3

4 -3 7 5

9 0 9 0

выходной массив x[n][m]:

-1 8 0 -3

9 0 9 0

4 -3 7 5

выходной массив x[n][m]:

-1 8 0 -3

9 0 9 0

4 -3 7 5

Задача 4

  1. Постановка задачи: разработать алгоритм ввода двумерного массива целых чисел, содержащего n строк и m столбцов, сортировки элементов строк массива по убыванию (ai,,j+1<ai,,j) и вывода полученного массива. Написать программу, реализующую разработанный алгоритм.

  2. Математическая модель и описательный алгоритм.

Входной массив a размерностьюn=3,m=4:

6 7 2 6

1 0 -2 0

3 1 3 2

Выходной массив a:

7 6 6 2

1 0 0 -2

3 3 2 1

  • В цикле с постусловием n≤0 или n>c1 или m≤0 или m>c2, где с1 и c2 – константы, ввести переменные размерности двумерного массива 0<nc1, 0<mc2;

  • p=&a[0][0]; в цикле с параметром 0≤i<nm (nm – количество элементов в двумерном массиве) ввести значения элементов массива по адресу p, p=p+1;

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

  • p=p-nm;

  • во внешнем цикле с параметром 0≤i<n для назначения строки изменять p1=p+i*m;

  • использовать два вложенных цикла с параметром для сортировки пузырьком каждой строки как одномерного массива: цикл по k – от 0 до m-1 и цикл по j – от 0 до m-k-2; во втором вложенном цикле проверять условие *(p1+j)≤*(p1+j+1): если выполняется, то производить перестановки соседних элементов через дополнительную переменную buf, использовать операцию разыменования buf=*(p1+j),*(p1+j)=*(p1+j+1),*(p1+j+1)=buf;

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

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

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

#include <stdio.h>

#include <conio.h>

#define c1 3

#define c2 4

int main()

{

int j,k,buf,a[c1][c2],*p,*p1,n,m;

do

{

printf(“\nInput n,m: “);

scanf(“%d%d”,&n,&m);

}

while (n<=0 || n>c1 || m<=0 || m>c2);

p=&a[0][0];

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

for(int i=0;i<n*m;i++)

{

scanf("%d",p);

p++;

}

p-=n*m;

i=0;

printf(“\nOutput matrics:\n”);

while (i<n*m)

{

printf(“%d ”,*p);

if ((i+1)%m==0) // для вывод двумерного массива в виде матрицы

printf(“\n”);

p++;

i++;

}

p=-n*m;

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

{

p1=p+i*m;

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

for (j=0;j<m-k-1;j++)

if (*(p1+j)<=*(p1+j+1))

{

buf=*(p1+j);

*(p1+j)=*(p1+j+1);

*(p1+j+1)=buf;

}

}

i=0;

printf(“\nOutput matrics:\n”);

while (i<n*m)

{

printf(“%d ”,*p);

if ((i+1)%m==0) // для вывод двумерного массива в виде матрицы

printf(“\n”);

p++;

i++;

}

getch();

return 0;

}

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