Работа с одномерными массивами на языке Си
Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 23.11.2014 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, молоді та спорту УКРАЇНИ
Національний аерокосмічний університет ім. М.Є. Жуковського
“Харківський авіаційний інститут”
Кафедра комп'ютерних систем та мереж
Лабораторна робота № 3
з дисципліни “Обчислювальна техніка та програмування”
Робота з одномірними масивами в мові С
Виконав Момот О. О.
Перевірив Дужа В. В.
2013
1. Задание №1
Дан массив А ненулевых целых чисел размера 10. Вывести значение первого из тех его элементов Ак, которые удовлетворяют неравенству Ак<A10. Если таких элементов нет, то вывести 0.
1.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 10
void enter_array (int []);
void rand_array (int []);
void output (int []);
void vis (int []);
void menu (int []);
int main()
{
setlocale(LC_CTYPE, "rus");
int mas[MAX];
menu (mas);
vis (mas);
printf("\n");
system("pause");
return 0;
}
void enter_array (int mas[])
{
printf("Введите элементы массива: ");
for(int i = 0; i < MAX; i++)
{
scanf("%i", &mas[i]);
while(mas[i] == 0)
{
printf("Ошибка! Был введен '0'! Введите корректные данные: ");
scanf("%i", &mas[i]);
fflush stdin;
}
}
printf("\n");
return;
}
void rand_array (int mas[])
{
srand(time (NULL));
int a, b;
printf("Ввод начала диапазона: ");
while(scanf("%i", &a) != 1 || a == 0)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
printf("Ввод конца диапазона: ");
while(scanf("%i", &b) != 1 || b == 0)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
for (int i = 0; i < MAX; i++)
{
mas[i] = rand()%(b - a + 1) + a;
while(mas[i] == 0)
{
mas[i] = rand()%(b - a + 1) + a;
fflush stdin;
}
}
return;
}
void output (int mas[])
{
printf("Элементы массива: ");
for(int i = 0; i < (MAX); i++)
printf("%i ", mas[i]);
printf("\n");
return;
}
void vis (int mas[])
{
boolean flag;
flag = false;
for(int i = 0; i < (MAX-1); i++)
{
if(mas[i] < mas[9])
{
printf("Первый элемент массива удовлетворяющий условию - %i", mas[i]);
flag = true;
break;
}
}
if(false == flag)
printf("0");
return;
}
void menu (int mas[])
{
int menu;
printf("Меню\n1 - Для ручного ввода массива\n2 - Для рандомного ввода массива\nПоле ввода: ");
while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
switch(menu)
{
case 1: enter_array (mas);
break;
case 2: rand_array (mas);
output (mas);
break;
}
return;
}
1.4 Результат работы программы
№ теста |
Ввод элементов массива |
Результат |
Вывод |
|
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'! |
Тест пройден |
Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа - работоспособна.
массив неравенство работоспособность тестирование
2. Задание №2
Подсчитать количество отрицательных элементов массива. Вывести на дисплей полученное значение. После этого изменить исходный массив следующим образом: переместить все положительные элементы массива в начало, не изменяя порядка их следования в исходном массиве. Порядок следования не перемещаемых элементов не изменять. Вывести на дисплей количество перемещенных элементов.
2.1 Алгоритм программы
2.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>
void enter_array (int [], int, int []);
void rand_array (int [], int, int []);
float sum_otr (int [], int);
void sort (int [], int, int []);
void output (int [], int);
void menu (int [], int, int []);
int main ()
{
setlocale(LC_CTYPE, "rus");
int const max_size = 100;
int mas[max_size];
int mas2[max_size];
int size;
printf("Введите размер массива: ");
while(scanf("%i", &size) != 1 || size == 0 || size > 100)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
menu (mas, size, mas2);
sum_otr (mas, size);
printf("Сортированый массив");
sort (mas, size, mas2);
output (mas, size);
system("pause");
return 0;
}
void enter_array (int mas[], int size, int mas2[])
{
printf("Введите элементы массива: ");
for(int i = 0; i < size; i++)
{
scanf("%i", &mas[i]);
mas2[i] = mas[i];
}
return;
}
void rand_array (int mas[], int size, int mas2[])
{
srand(time (NULL));
int a, b;
printf("Ввод начала диапазона: ");
while(scanf("%i", &a) != 1 || a == 0)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
printf("Ввод конца диапазона: ");
while(scanf("%i", &b) != 1 || b == 0)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
for (int i = 0; i < size; i++)
{
mas[i] = rand()%(b - a + 1) + a;
mas2[i] = mas[i];
}
return;
}
float sum_otr (int mas[], int size)
{
int sum = 0;
for(int i = 0; i < size; i++)
{
if(mas[i]<0)
{
sum++;
}
}
printf("Количество отрицательных элементов: %i", sum);
printf("\n");
return 0;
}
void sort (int mas[], int size, int mas2[])
{
int kol = 0, kol2 = 0;
int k, i;
for (i = 0; i < size; i++)
for(int j = 0; j < size-1; j++)
if (mas[j] <= 0 & mas[j + 1] > 0)
{
k = mas[j];
mas[j] = mas[j + 1];
mas[j + 1] = k;
}
for (i = 0; i < size; i++)
if(mas[i] > 0)
kol++;
for (i = 0; i < (kol+1); i++)
if(mas2[i] == mas[i])
kol2++;
kol = kol - kol2;
printf("\nКоличество перемещенных элементов: %i", kol);
printf("\n");
return;
}
void output (int mas[], int size)
{
printf("Элементы массива: ");
for(int i = 0; i < size; i++)
printf("%i ", mas[i]);
printf("\n");
return;
}
void menu(int mas[], int size, int mas2 [])
int menu;
printf("Меню\n1 - Для ручного ввода массива\n2 - Для рандомного ввода массива\nПоле ввода: ");
while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)
{
printf("Ошибка! Введите корректные данные: ");
fflush stdin;
}
switch(menu)
{
case 1: enter_array (mas, size, mas2);
break;
case 2: rand_array (mas, size, mas2);
output (mas, size);
break;
}
return;
}
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 Вывод о работоспособности программы
Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа - работоспособна.
Размещено на Allbest.ru
Подобные документы
Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.
лабораторная работа [946,5 K], добавлен 23.11.2014Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.
курсовая работа [896,7 K], добавлен 18.05.2014Понятие двумерного массива целых чисел. Создание динамического массива из элементов, расположенных в четырех столбах данного массива и имеющих нечетное значение. Сохранение результатов в файл и выведение их на экран. Использование ввода с файла.
курсовая работа [44,0 K], добавлен 09.11.2014Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.
лабораторная работа [12,8 K], добавлен 02.12.2014Формирование одномерного массива, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца. Определение столбца, в котором равное количество положительных и отрицательных элементов. Написание программы и ее тестирование.
контрольная работа [97,2 K], добавлен 21.06.2009Вычисление суммы положительных элементов массива. Упорядочивание элементов массива по убыванию. Решение задачи с помощью алгоритма, реализованного в среде Microsoft Visual 2008 Express. Реализация и тестирование программы. Выполнение трассировки функций.
практическая работа [146,3 K], добавлен 23.01.2015Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.
лабораторная работа [123,5 K], добавлен 15.01.2014Запись в массив листа Excel c именем "Эксперимент". Среднее арифметическое значение элементов массива. Вывод диалогового окна. Фрагмент программы, организующий считывание исходного массива в программу для обработки. Адрес ячейки электронной таблицы.
контрольная работа [1,1 M], добавлен 16.08.2011Заполнение массива из целых чисел с присвоением элементам разных значений. Варианты программы с использованием различных операторов организации циклов. Определение квадрата максимального из четных элементов массива и общего числа нулевых элементов.
лабораторная работа [259,3 K], добавлен 14.05.2011