Работа с указателями на языке Си
Printf («Ошибка! Введите корректные данные: «); Printf («Ошибка! Введите корректные данные: «); Printf («Ошибка! Введите корректные данные: «); Rintf («Ошибка! Введите корректные данные: «); For ((p = &mas) && (h = &mas2); (p < &mas) && (h < &mas2); (p++) && (h++)). For ((p = &mas) && (h = &mas2); (p < &mas) && (h < &mas2); (p++) && (h++)). Case 1: printf («Введите элементы массива: «); Вывод… Читать ещё >
Работа с указателями на языке Си (реферат, курсовая, диплом, контрольная)
Лабораторная работа по дисциплине «Вычислительная техника и программирование»
Работа с указателями в языке С
Задание № 1
Подсчитать количество отрицательных элементов массива. Вывести на дисплей полученное значение. После этого изменить исходный массив следующим образом: переместить все положительные элементы массива в начало, не изменяя порядка их следования в исходном массиве. Порядок следования неперемещаемых элементов не изменять. Вывести на дисплей количество перемещенных элементов.
1. Алгоритм программы Рис. 1
массив дисплей программа код Рис. 2
2. Тестовые наборы
№ теста | Ввод элементов массива | Ожидаемый результат | |||
Отрицательных элементов | Сортированный массив | Количество перемещенных элементов | |||
— 1 -2 -3 -4 -5 -6 -7 -8 -9 1 | 1 -1 -2 -3 -4 -5 -6 -7 -8 -9 | ||||
— 1 -2 3 4 5 6 -7 -8 9 1 | 3 4 5 6 9 1 -1 -2 -7 -8 | ||||
— 1 -2 3 -4 -5 6 -7 -8 9 1 | 3 6 9 1 -1 -2 -4 -5 -7 -8 | ||||
— 1 2 3 4 5 6 7 8 9 -1 | 2 3 4 5 6 7 8 9 -1 -1 | ||||
3. Код программы
#include
#include
#include
#include
#include
int main ()
{
setlocale (LC_CTYPE, «rus»);
int const max_size = 100;
int mas[max_size], *p, *p1;
int mas2[max_size], *h;
int size;
p = p1 = &mas[max_size];
h = &mas2[max_size];
printf («Введите размер массива: «);
while (scanf («%i», &size) ≠ 1 || size == 0 || size > 100)
{
rintf («Ошибка! Введите корректные данные: «);
fflush stdin;
}
int menu;
printf («Менюn1 — Для ручного ввода массиваn2 — Для рандомного ввода массиваnПоле ввода: «);
while (scanf («%i», &menu) ≠ 1 || menu >= 3 || menu <= 0)
{
printf («Ошибка! Введите корректные данные: «);
fflush stdin;
}
switch (menu)
{
case 1: printf («Введите элементы массива: «);
for ((p = &mas[0]) && (h = &mas2[0]); (p < &mas[size]) && (h < &mas2[size]); (p++) && (h++))
{
scanf («%i», p);
*h = *p;
}
break;
case 2: 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 ((p = &mas[0]) && (h = &mas2[0]); (p < &mas[size]) && (h < &mas2[size]); (p++) && (h++))
{
*p = rand ()%(b — a + 1) + a;
*h = *p;
}
printf («Элементы массива: «);
for (p = &mas[0]; p < &mas[size]; p++)
printf («%i «, *p);
printf («n»);
break;
}
int sum = 0;
for (p = &mas[0]; p < &mas[size]; p++)
{
if (*p < 0)
{
sum++;
}
}
printf («Количество отрицательных элементов: %in», sum);
if (sum == 0)
{
printf («Отрицательных элементов нет, сортировка не требуется. n»);
system («pause»);
return 0;
}
printf («n»);
printf («Сортированый массив»);
int kol = 0, kol2 = 0;
int k;
for (p = &mas[0]; p < &mas[size]; p++)
for (p1 = &mas[0]; p1 < &mas[size-1]; p1++)
if (*p1 <= 0 & *(p1+1) > 0)
{
k = *p1;
*p1 = *(p1+1);
*(p1+1) = k;
}
for (p = &mas[0]; p < &mas[size]; p++)
if (*p > 0)
kol++;
for ((p = &mas[0]) && (h = &mas2[0]); (*p < (kol+1)) && (*h < (kol+1)); (p++) && (h++))
if (*h == *p)
kol2++;
kol = kol — kol2;
printf («nКоличество перемещенных элементов: %i», kol);
printf («n»);
printf («Элементы массива: «);
for (p = &mas[0]; p < &mas[size]; p++)
printf («%i «, *p);
printf («n»);
system («pause»);
return 0;
}
4. Результат работы программы
Таблица 2
№ теста | Ввод элементов массива | Ожидаемый результат | Вывод | |||
Отрицательных элементов | Сортированный массив | Перемещенных элементов | ||||
— 1 -2 -3 -4 -5 -6 -7 -8 -9 1 | 1 -1 -2 -3 -4 -5 -6 -7 -8 -9 | Тест пройден | ||||
— 1 -2 3 4 5 6 -7 -8 9 1 | 3 4 5 6 9 1 -1 -2 -7 -8 | Тест пройден | ||||
— 1 -2 3 -4 -5 6 -7 -8 9 1 | 3 6 9 1 -1 -2 -4 -5 -7 -8 | Тест пройден | ||||
— 1 2 3 4 5 6 7 8 9 -1 | 2 3 4 5 6 7 8 9 -1 -1 | Тест пройден | ||||
Рис. 3
5. Вывод о работоспособности программы
Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа — работоспособна.