Работа с одномерными массивами на языке Си
МІНІСТЕРСТВО
ОСВІТИ І НАУКИ, молоді та спорту
УКРАЇНИ
Національний
аерокосмічний університет ім. М.Є. Жуковського
“Харківський
авіаційний інститут”
Кафедра
комп’ютерних систем та мереж
Лабораторна
робота № 3
з дисципліни “Обчислювальна
техніка та програмування”
Робота з одномірними масивами в мові
С
Виконав Момот О. О.
Перевірив Дужа В. В.
2013
1. Задание №1
Дан массив А ненулевых целых чисел размера 10. Вывести значение первого
из тех его элементов Ак, которые удовлетворяют неравенству Ак<A10. Если таких элементов нет, то
вывести 0.
.1 Алгоритм программы
1.2 Тестовые наборы
№ теста
|
Ввод элементов массива
|
Ожидаемый результат
|
1
|
1 2 3 4 5 6 7 8 9 5
|
1
|
2
|
5 4 3 -5
6 7 7 8 -1 1
|
-5
|
3
|
7 7 7 7 8 8 9 4 4
3
|
0
|
4
|
0 2 3 4 0 5 6 0 7 0
|
Ошибка! Был введен ‘0’!
Введите корректные данные:
|
1.3 Код программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#include <time.h>
#define MAX 10enter_array (int
[]);rand_array (int []);output (int []);vis (int []);menu (int []);main()
{(LC_CTYPE,
"rus");mas[MAX];(mas);(mas);("\n");("pause");0;
}enter_array (int mas[])
{("Введите элементы массива:
");(int i = 0; i < MAX; i++)
{("%i", &mas[i]);(mas[i] == 0)
{("Ошибка! Был введен '0'! Введите
корректные данные: ");("%i", &mas[i]);stdin;
}
}("\n");;
}rand_array (int mas[])
{(time (NULL));a, b;("Ввод начала
диапазона: ");(scanf("%i", &a) != 1 || a == 0)
{("Ошибка! Введите корректные данные:
");stdin;
}("Ввод конца диапазона:
");(scanf("%i", &b) != 1 || b == 0)
{("Ошибка! Введите корректные данные:
");stdin;
}(int i = 0; i < MAX; i++)
{[i] = rand()%(b - a + 1) + a;(mas[i] == 0)
{[i] = rand()%(b - a + 1) + a;stdin;
}
};
}output (int mas[])
{("Элементы массива: ");(int i =
0; i < (MAX); i++)("%i ", mas[i]);("\n");;
}vis (int mas[])
{flag;= false;(int i = 0; i < (MAX-1);
i++)
{(mas[i] < mas[9])
{("Первый элемент массива
удовлетворяющий условию - %i", mas[i]);= true;;
}
}(false == flag)("0");;
}menu (int mas[])
{menu;("Меню\n1 - Для ручного ввода
массива\n2 - Для рандомного ввода массива\nПоле ввода:
");(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)
{("Ошибка! Введите корректные данные:
");stdin;
}(menu)
{1: enter_array (mas);;2: rand_array (mas);(mas);;
};
}
1.4 Результат работы программы
№ теста
|
Ввод элементов массива
|
Результат
|
Вывод
|
1 2 3 4 5 6 7 8 9 5
|
1
|
Тест пройден
|
2
|
5 4 3 -5
6 7 7 8 -1 1
|
-5
|
Тест пройден
|
3
|
7 7 7 7 8 8 9 4 4
3
|
0
|
Тест пройден
|
4
|
0 2 3 4 0 5 6 0 7 0
|
Ошибка! Был введен ‘0’!
|
Тест пройден
|
Программа прошла тестирование: в результате выполнения тестов программа
выдала ожидаемые результаты. Программа - работоспособна.
массив
неравенство работоспособность тестирование
2. Задание №2
Подсчитать количество отрицательных элементов массива. Вывести на дисплей
полученное значение. После этого изменить исходный массив следующим образом:
переместить все положительные элементы массива в начало, не изменяя порядка их
следования в исходном массиве. Порядок следования не перемещаемых элементов не
изменять. Вывести на дисплей количество перемещенных элементов.
2.1 Алгоритм программы
.2
Тестовые наборы
№ теста
|
Ввод элементов массива
|
Ожидаемый результат
|
|
|
Отрицательных элементов
|
Сортированный массив
|
Количество перемещенных
элементов
|
1
|
-1 -2 -3 -4 -5 -6 -7 -8 -9
1
|
9
|
1 -1 -2 -3 -4 -5 -6 -7 -8
-9
|
1
|
2
|
-1 -2 3 4 5 6 -7 -8 9 1
|
4
|
3 4 5 6 9 1 -1 -2 -7 -8
|
6
|
3
|
-1 -2 3 -4 -5 6 -7 -8 9 1
|
6
|
3 6 9 1 -1 -2 -4 -5 -7 -8
|
4
|
4
|
-1 2 3 4 5 6 7 8 9 -1
|
2
|
2 3 4 5 6 7 8 9 -1 -1
|
8
|
2.3 Код программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#include <time.h>enter_array (int [],
int, int []);rand_array (int [], int, int []);sum_otr (int [], int);sort (int
[], int, int []);output (int [], int);menu (int [], int, int []);main ()
{(LC_CTYPE, "rus");const max_size
= 100;mas[max_size];mas2[max_size];size;("Введите размер массива:
");(scanf("%i", &size) != 1 || size == 0 || size > 100)
{("Ошибка! Введите корректные данные:
");stdin;
}(mas, size, mas2);_otr (mas, size);("Сортированый
массив");(mas, size, mas2);(mas, size);("pause");0;
}enter_array (int mas[], int size, int
mas2[])
{("Введите элементы массива:
");(int i = 0; i < size; i++)
{("%i", &mas[i]);[i] = mas[i];
};
}rand_array (int mas[], int size, int
mas2[])
{(time (NULL));a, b;("Ввод начала
диапазона: ");(scanf("%i", &a) != 1 || a == 0)
{("Ошибка! Введите корректные данные:
");stdin;
}("Ввод конца диапазона:
");(scanf("%i", &b) != 1 || b == 0)
{("Ошибка! Введите корректные данные:
");stdin;
}(int i = 0; i < size; i++)
};
}sum_otr (int mas[], int size)
{sum = 0;(int i = 0; i < size; i++)
{(mas[i]<0)
{++;
}
}("Количество отрицательных элементов:
%i", sum);("\n");0;
}sort (int mas[], int size, int mas2[])
{kol = 0, kol2 = 0;k, i;(i = 0; i < size;
i++)(int j = 0; j < size-1; j++)(mas[j] <= 0 & mas[j + 1] > 0)
{= mas[j];[j] = mas[j + 1];[j + 1] = k;
}(i = 0; i < size; i++)(mas[i] >
0)++;(i = 0; i < (kol+1); i++)(mas2[i] == mas[i])++;= kol -
kol2;("\nКоличество перемещенных элементов: %i",
kol);("\n");;
}output (int mas[], int size)
{("Элементы массива: ");(int i =
0; i < size; i++)("%i ", mas[i]);("\n");;
}menu(int mas[], int size, int mas2
[])menu;("Меню\n1 - Для ручного ввода массива\n2 - Для рандомного ввода
массива\nПоле ввода: ");(scanf("%i", &menu) != 1 || menu
>= 3 || menu <= 0)
{("Ошибка! Введите корректные данные:
");stdin;
}(menu)
{1: enter_array (mas, size, mas2);;2:
rand_array (mas, size, mas2);(mas, size);;
};
}
2.4 Результат работы программы
№ теста
|
Ввод элементов массива
|
Ожидаемый результат
|
Вывод
|
|
|
Отриц. Элем-в
|
Сортированный массив
|
Перемещ. Эл-тов
|
|
1
|
-1 -2 -3 -4 -5 -6 -7 -8 -9
1
|
9
|
1 -1 -2 -3 -4 -5 -6 -7 -8
-9
|
1
|
Тест пройден
|
2
|
-1 -2 3 4 5 6 -7 -8 9 1
|
4
|
3 4 5 6 9 1 -1 -2 -7 -8
|
6
|
Тест пройден
|
3
|
-1 -2 3 -4 -5 6 -7 -8 9 1
|
6
|
3 6 9 1 -1 -2 -4 -5 -7 -8
|
4
|
Тест пройден
|
4
|
-1 2 3 4 5 6 7 8 9 -1
|
2
|
2 3 4 5 6 7 8 9 -1 -1
|
8
|
Тест пройден
|
2.5 Вывод о работоспособности программы
Программа прошла тестирование: в результате выполнения тестов программа
выдала ожидаемые результаты. Программа - работоспособна.