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

  • Вид работы:
    Практическое задание
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    330,17 Кб
  • Опубликовано:
    2014-11-23
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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















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

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

Задание №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>main ()

{(LC_CTYPE, "rus");const max_size = 100;mas[max_size], *p, *p1;mas2[max_size], *h;size;= p1 = &mas[max_size];= &mas2[max_size];("Введите размер массива: ");(scanf("%i", &size) != 1 || size == 0 || size > 100)

{("Ошибка! Введите корректные данные: ");stdin;

}menu;("Меню\n1 - Для ручного ввода массива\n2 - Для рандомного ввода массива\nПоле ввода: ");(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)

{("Ошибка! Введите корректные данные: ");stdin;

}(menu)

{1: printf("Введите элементы массива: ");((p = &mas[0]) && (h = &mas2[0]); (p < &mas[size]) && (h < &mas2[size]); (p++) && (h++))

{("%i", p);

*h = *p;

};2: srand(time (NULL));a, b;("Ввод начала диапазона: ");(scanf("%i", &a) != 1 || a == 0)

{("Ошибка! Введите корректные данные: ");stdin;

}("Ввод конца диапазона: ");(scanf("%i", &b) != 1 || b == 0)

{("Ошибка! Введите корректные данные: ");stdin;

}((p = &mas[0]) && (h = &mas2[0]); (p < &mas[size]) && (h < &mas2[size]); (p++) && (h++))

{

*p = rand()%(b - a + 1) + a;

*h = *p;

}("Элементы массива: ");(p = &mas[0]; p < &mas[size]; p++)("%i ", *p);("\n");;

}sum = 0;(p = &mas[0]; p < &mas[size]; p++)

{(*p < 0)

{++;

}

}("Количество отрицательных элементов: %i\n", sum);(sum == 0)

{("Отрицательных элементов нет, сортировка не требуется.\n");("pause");0;

}("\n");("Сортированый массив");kol = 0, kol2 = 0;k;(p = &mas[0]; p < &mas[size]; p++)(p1 = &mas[0]; p1 < &mas[size-1]; p1++)(*p1 <= 0 & *(p1+1) > 0)

{= *p1;

*p1 = *(p1+1);

*(p1+1) = k;

}(p = &mas[0]; p < &mas[size]; p++)(*p > 0)++;((p = &mas[0]) && (h = &mas2[0]); (*p < (kol+1)) && (*h < (kol+1)); (p++) && (h++))(*h == *p)++;= kol - kol2;("\nКоличество перемещенных элементов: %i", kol);("\n");("Элементы массива: ");(p = &mas[0]; p < &mas[size]; p++)("%i ", *p);("\n");("pause");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. Вывод о работоспособности программы


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

Похожие работы на - Работа с указателями на языке Си

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!