Работа с указателями на языке Си

Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 23.11.2014
Размер файла 946,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторная работа по дисциплине "Вычислительная техника и программирование"

Работа с указателями в языке С

Задание №1

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

1. Алгоритм программы

Рис. 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

3. Код программы

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <windows.h>

#include <time.h>

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("Количество отрицательных элементов: %i\n", 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

-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

Тест пройден

Рис. 3

5. Вывод о работоспособности программы

Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа - работоспособна.

Размещено на Allbest.ru


Подобные документы

  • Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.

    лабораторная работа [1,3 M], добавлен 23.11.2014

  • Алгоритм и код программы для создания исходного двоичного файла чисел с произвольным количеством элементов, чтения из файла действительных восьмибайтных элементов и подсчёта общего количества элементов файла. Вывод результата работы программы на экран.

    контрольная работа [1,0 M], добавлен 23.11.2014

  • Вычисление суммы положительных элементов массива. Упорядочивание элементов массива по убыванию. Решение задачи с помощью алгоритма, реализованного в среде Microsoft Visual 2008 Express. Реализация и тестирование программы. Выполнение трассировки функций.

    практическая работа [146,3 K], добавлен 23.01.2015

  • Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.

    лабораторная работа [123,5 K], добавлен 15.01.2014

  • Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.

    лабораторная работа [12,8 K], добавлен 02.12.2014

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Запись в массив листа Excel c именем "Эксперимент". Среднее арифметическое значение элементов массива. Вывод диалогового окна. Фрагмент программы, организующий считывание исходного массива в программу для обработки. Адрес ячейки электронной таблицы.

    контрольная работа [1,1 M], добавлен 16.08.2011

  • Разработка программы для работы с последовательностью прописных латинских букв. Алгоритм программы, результаты ее работы и вывод о работоспособности. Поиск количества вхождений элементов одной строки в другую. Тестирование программы, ее результаты.

    лабораторная работа [858,0 K], добавлен 23.11.2014

  • Формирование одномерного массива, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца. Определение столбца, в котором равное количество положительных и отрицательных элементов. Написание программы и ее тестирование.

    контрольная работа [97,2 K], добавлен 21.06.2009

  • Одномерные числовые массивы, образование элементами целочисленного массива невозрастающей последовательности. Программное нахождение суммы элементов каждой возможной строки матрицы и формирование массива из найденных сумм, вывод массива-результата.

    лабораторная работа [12,8 K], добавлен 09.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.