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

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

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

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

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

6 7 2 6

1 0 -2 0

3 1 3 2

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

7 6 6 2

1 0 0 -2

3 3 2 1

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

7 6 6 2

1 0 0 -2

3 3 2 1

Задача 5

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

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

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

5 3 0

1 0 2

3 1 -2

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

0 3 5

2 1 0

-2 1 3

  • В цикле с постусловием 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; в цикле с параметром 0≤i<nm вывести значения элементов массива *p, p=p+1;

  • p=p-nm;

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

  • использовать два вложенных цикла с параметром для сортировки пузырьком каждой строки как одномерного массива: цикл по k – от 0 до m-1 и цикл по j – от 0 до m-k-2; во втором вложенном цикле проверять условие (i+1)%2=0 (четная строка) и *(p1+j)≤*(p1+j+1) или (i+1)%2≠0 (нечетная строка) и *(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.

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

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

#include <stdio.h>

#include <conio.h>

#define c1 5

#define c2 7

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++;

}

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

for(p-=n*m,i=0;i<n*m;i++)

{

printf(“%d ”,*p);

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

printf(“\n”);

p++;

}

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 ((i+1)%2==0&&*(p1+j)<=*(p1+j+1)||(i+1)%2!=0&&*(p1+j)>=*(p1+j+1))

{

buf=*(p1+j);

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

*(p1+j+1)=buf;

}

}

i=0;

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

do

{

printf(“%d ”,*p);

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

printf(“\n”);

p++;

i++;

}

while (i<n*m);

getch();

return 0;

}

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

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

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

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

5 3 0

1 0 2

3 1 -2

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

0 3 5

2 1 0

-2 1 3

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

0 3 5

2 1 0

-2 1 3

2. Выполнение индивидуального задания.

1. Постановка задачи.

Разработать алгоритм и написать программу, согласно индивидуальному заданию.

2. Входные и выходные данные.

Все действующие в программе переменные должны быть объявлены.

Недопустимо задавать исходные (входные) данные с помощью операторов присваивания. Ввод данных с клавиатуры должен предваряться выводом соответствующего сообщения.

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

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

Представить алгоритм задачи в виде блок-схемы.

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

Разработанный алгоритм реализуется на языке программирования высокого уровня Cи.

6. Тестирование.

Результаты тестирования представить в виде таблицы.

IV. Требования к разработке программы.

Программа должна содержать следующие три составные части:

  • ввод исходных данных;

  • обработку данных;

  • вывод результатов.

Произвести отладку и тестирование разработанной программы.

V. Требования к защите индивидуальных заданий.

ИМЕТЬ отчет, который включает:

  1. постановку задачи;

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

  3. блок-схему алгоритма;

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

  5. результаты тестирования.

ЗНАТЬ ответы на контрольные вопросы.

VI. Варианты индивидуальных заданий.

Разработать алгоритмы решения задач, написать программы, реализующие соответствующие алгоритмы, и выполнить их тестирование. Входной двумерный массив а и его размерность n∙m вводятся с клавиатуры. Входной и выходной массивы выводятся на экран в виде матрицы.

Вариант №1

    1. Найти и вывести номер первой строки в массиве, все элементы которой положительны.

    2. Упорядочить элементы первого столбца массива по неубыванию.

Вариант №2

      1. Поменять местами первый столбец массива с последним.

      2. Упорядочить элементы второй строки массива по невозрастанию.

Вариант №3

  1. Найти и вывести номер первой строки в массиве, все элементы которой упорядочены по возрастанию.

  2. Упорядочить элементы столбца массива по убыванию, номер столбца ввести с клавиатуры.

Вариант №4

        1. Найти и вывести среднее арифметическое значение отрицательных элементов массива, лежащих ниже главной диагонали.

        2. Упорядочить элементы строки массива по возрастанию, номер строки ввести с клавиатуры.

Вариант №5

  1. Проверить, есть ли в массиве хотя бы одна строка, содержащая положительный элемент, найти и вывести ее номер.

  2. Упорядочить элементы второго столбца массива по неубыванию.

Вариант №6

          1. Заменить в массиве каждый отрицательный элемент, лежащий выше главной диагонали, его абсолютной величиной.

          2. Упорядочить элементы последней строки массива по невозрастанию.

Вариант №7

            1. Проверить, есть ли в массиве хотя бы одна строка, содержащая элемент, равный нулю, найти и вывести ее номер.

            2. Упорядочить элементы последнего столбца массива по убыванию.

Вариант №8

  1. Найти и вывести среднее арифметическое значение элементов тех строк массива, в которых отрицателен элемент главной диагонали.

  2. Упорядочить элементы предпоследней строки массива по возрастанию.

Вариант №9

  1. Найти в массиве строки, упорядоченные по убыванию, и вывести их номера.

  2. Упорядочить элементы предпоследнего столбца массива по неубыванию.

Вариант №10

              1. Найти и вывести значение суммы элементов массива на главной диагонали.

              2. Упорядочить элементы строк массива по невозрастанию.

Вариант №11

                1. Найти в массиве строки, содержащие хотя бы один положительный элемент, и вывести номера этих строк.

                2. Упорядочить элементы столбцов массива по убыванию.

Вариант №12

  1. Найти и вывести среднее арифметическое значение тех элементов массива, каждый из которых больше находящегося с ним в одной строке элемента главной диагонали.

  2. Упорядочить элементы первого и последнего столбца массива по неубыванию.

Вариант №13

  1. Найти в массиве строки, содержащие хотя бы один нулевой элемент, и вывести номера этих строк.

  2. Упорядочить элементы второй и последней строки массива по невозрастанию.

Вариант №14

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

  2. Упорядочить элементы двух столбцов массива по убыванию, номера столбцов ввести с клавиатуры.

Вариант №15

  1. Найти и вывести номер первого столбца массива, все элементы которого отрицательны.

  2. Упорядочить элементы первой строки массива по возрастанию, второй – по неубыванию.

Вариант №16

  1. Найти и вывести количество отрицательных элементов в массиве.

  2. Упорядочить элементы столбца массива по неубыванию, номер столбца ввести с клавиатуры.

Вариант №17

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

  2. Упорядочить элементы строки массива по невозрастанию, номер строки ввести с клавиатуры.

Вариант №18

  1. Найти и вывести среднее арифметическое значение элементов тех строк, последний элемент которых равен 1.

  2. Упорядочить элементы третьего столбца массива по невозрастанию.

Вариант №19

  1. Проверить, есть ли в массиве хотя бы один столбец, содержащий положительный элемент, найти и вывести его номер.

  2. Упорядочить элементы первого столбца массива по убыванию, а последнего – по невозрастанию.

Вариант №20

  1. Найти и вывести значения суммы элементов каждого столбца.

  2. Упорядочить элементы второй строки массива по возрастанию, последней – по убыванию.

Вариант №21*

  1. Проверить, есть ли в массиве хотя бы один столбец, содержащий элемент, равный нулю, найти и вывести его номер.

  2. Упорядочить массив по неубыванию значений элементов первого столбца.

Вариант №22*

  1. Проверить, все ли столбцы массива упорядочены по убыванию, найти и вывести их номера.

  2. Упорядочить массив по невозрастанию значений элементов второй строки.

Вариант №23*

  1. Найти в массиве столбцы, упорядоченные по возрастанию, и вывести их номера.

  2. Упорядочить массив по убыванию значений элементов столбца, номер которого ввести с клавиатуры.

Вариант №24*

  1. Найти в массиве столбцы, содержащие хотя бы один положительный элемент, и вывести номера этих столбцов.

  2. Упорядочить массив по неубыванию значений элементов второго столбца.

Вариант №25*

  1. Найти в массиве столбцы, содержащие хотя бы один отрицательный элемент, и вывести номера этих столбцов.

  2. Упорядочить массив по невозрастанию элементов последней строки

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