Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Темы для предварительной проработки




  • Операторы цикла языка C. Вложенные циклы.
  • Условный оператор языка C.
  • Выделение динамической памяти.
  • Указатели. Типизированные указатели.
  • Указатели и массивы.
  • Адресная арифметика.

Задание для выполнения

Объявить массив целых чисел и заполнить его случайными значениями(размер массива определяется вначале выплнения программыкакслучайное число в диапазоне, например, 3–200 (диапазон задан во 2 столбце таблицы вариантов)). В индивидуальных заданиях указан диапазон значений его элементов (3 столбец таблицы) икакую обработку массива следует произвести.

Для всех вариантов задания следует иметь в виду следующее:

· 0 считается положительным числом, если в задании не оговорен какой-то другой его статус;

· когда речь идет о какой-то последовательности чисел, имеется в виду последовательность с длиной, большей 1;

· в тех случаях, когда задание требует выполнения каких-то вычислений, разрешается выполнять их с той точностью, которую обеспечивают операции целочисленной арифметики.

· в тексте программы запрещается использовать операцию индексации!!!!!!!

Варианты индивидуальных заданий

№ варианта Диапазон изменения размерности массива Диапазон значений элементов Что нужно сделать
1 от 8 до 200 от 0 до 100 Поменять местами 1-й положительный элемент с последним положительным элементом, 2-й - предпоследним и т.д.
2 от 6 до 100 от –50 до 50 Найти количество пар соседних элементов, которые имеют одинаковые абсолютные значения, но противоположные знаки, и вывести эти пары
3 от 5 до 200 от 0 до 100 Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение.
4 от 6 до 100 от –50 до 50 Заменить все элементы с положительными значениями абсолютным значением отрицательного элемента с максимальным абсолютным значением
5 от 6 до 200 от –50 до 50 Подсчитать количество пар соседних элементов с одинаковыми значениями и вывести эти пары на экран
6 от 5 до 160 от –100 до 100 Во всех последовательностях положительных чисел ограничить значения тех элементов, абсолютное значение которых ниже абсолютного среднего для этой последовательности.
7 от 7 до 100 от –100 до 100 Заменить каждый элемент на среднее арифмети­ческое его и его соседей слева и справа(для граничных элементов брать лишьсам элементи существующего соседа).
8 от 8 до 100 от –100 до 100 Найти ту непрерывную последовательность положительных чисел, сумма элементов в которой максимальная.
9 от 3 до 200 от –50 до 50 Во всех последовательностях отрицательных чисел поменять местами элементы с максимальным и минимальным значениями.
10 от 5 до 200 от –100 до 100 Во всех последовательностях положительных чисел ограничить снизу значения тех элементов, значения которых меньше среднего для этой последовательности.
11 от 3 до 200 от –50 до 50 Подсчитать количество пар соседних элементов, которые имеют противоположные знаки и вывести эти пары.
12 от 5 до 200 от –50 до 50 Для каждого положительного элемента определить, есть ли в массиве отрицательный элемент с противоположным значением; если да, заменить эти элементы на 0.
13 от 9 до 100 от –100 до 100 Разместить все элементы с положительными значени­ями в левой части массива, элементы с отрицательными значениями — в правой, а нули — между ними.
14 от 4 до 200 от 0 до 100 Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов.
15 от 6 до 100 от –100 до 100 Ограничить значения всех элементов, абсолютные значения которых превышают среднее для положительных и отрицательных элементов.
16 4 до 100 от –50 до 50 Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел.
17 от 8 до 200 от 0 до 100 Подсчитать количество участков, которые образуют непрерывные последовательности чисел с неуменьшающимися значениями.
18 от 4 до 200 от –50 до 50 Найти из непрерывных последовательностей отрица­тельных чисел ту, которая имеет наибольшее абсолют­ное значение среднего арифметического ее элементов.
19 от 7 до 100 от –100 до 100 Во всех последовательностях отрицательных чисел изменить порядок элементов на противоположный и зеркально поменять последовательности местами.
20 от 3 до 100 от –50 до 50 Во всех последовательностях положительных чисел изменить порядок элементов на противоположный.
21 от 3 до 200 от 0 до 100 Найти непрерывный участок из 10 элементов, сумма которых максимальна.
22 от 5 до 200 от –50 до 50 Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися значениями.
23 от 7 до 100 от –100 до 100 Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел, длина которых больше 5
24 от 4 до 100 от –100 до 100 Заменить все элементы с отрицательными значениями средним арифметическим значением всех положительных элементов.
25 от 8 до 200 от –50 до 50 Найти непрерывные участки, на которых сумма элементов равна 0, вывести участки на экран.
26 от 6 до 200 от –50 до 50 Определить среднюю длину непрерывных участков положительных чисел.
27 от 3 до 200 от –50 до 50 Подсчитать количество всех, непрерывных последовательностей положительных чисел, длина которых больше 7.
28 от 5 до 100 от –100 до 100 Разместить все элементы с нулевыми значениями в левой части массива, элементы с отрицательными значениями — за ними, а за ними — элементы с положительными значениями.
29 от 5 до 200 от –100 до 100 Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности.
30 от 5 до 130 от –100 до 100 Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента.
31 от 3 до 150 от –100 до 100 Для каждого положительного элемента определить, есть ли в массиве отрицательный элемент с противоположным значением; если это так, заменитьэти элементы на среднее всей последовательности.
32 от 8 до 200 от 0 до 100 Поменять местами 1-й отрицательный элемент споследнимотрицательным элементом, 2-й — предпоследними т.д.
33 от 6 до 150 от –50 до 50 Определить среднюю длинунепрерывныхучастков отрицательных чисел, заменить ею максимальныеи минимальные элементы каждойиз последовательностей.
34 от 3 до 180 от –50 до 50 Найти непрерывныйучастокиз 5 элементов, в котором сумма модулей элементов максимальна, заменитьэтотучасток элементами с противоположными значениями.
35 от 4 до 170 от –100 до 100 Найти из непрерывных последовательностей положительных чисел ту, что имеет наибольшее среднее значениеее элементов и вывести последовательность на экран.
36 от 5 до 180 от –50 до 150 Найти непрерывныйучасток, имеющий наибольшее количество положительных элементов, и вывести его.
37 от 3 до 150 от –150 до 150 Вовсех последовательностях положительных чисел элементы с максимальным и минимальным значениями заменить количеством элементов этой последовательности.
38 от 10 до 150 от –150 до 100 Найти ту непрерывную последовательность отрицательных чисел, сумма модулей элементов вкоторой максимальна и заменитьее нулями.
39 от 5 до 140 от –100 до 100 В отрицательных последовательностях ограничить значения всех элементов, превышающихпо модулю среднее для этой последовательности.
40 от 3 до 180 от –150 до 150 Подсчитать количество всіх, непрерывных последовательностей отрицательных чисел, длина которых меньше 5.

5. Примеры решения задачи

П ример 1. Объявить массив целых чисел и заполнить его случайными значениями.

Пример 2. размер массива определяется в начале выполнения программы как случайное число в диапазоне 50—200; в тексте программы запрещается применять операцию индексации.

 

Общее задание для примера

№ варианта Диапазон изменения размерности массива Диапазон значений элементов Что нужно сделать
от 50 до 100 от –50 до 50 Во всех последовательностях отрицательных чисел ограничить значения тех элементов, абсолютное значение которых превышает абсолютное среднее для этой последовательности.  

ПРИМЕР 1

Розработка алгоритма

Схема алгоритма показана на рисунке ниже. В первой фазе выполнения программынеобходимо будет сформировать массив случайных чисел. Перед тем, как будем обращаться к датчику случайных чисел, необходимо его проинициализировать (блок 2). Далее организуем цикл со счетчиком (блок 3), в каждой итерации которого генерируется следующее случайное число и записывается в следующий элемент массива (блок 4). После окончания цикла заполнения массива выводим массив на экран (блок 5).

необходимо будет вычислять среднее значение последовательности, следовательно — подсчитывать количество элементов в ней. Для этоговводим переменную nn — счетчик элементов, нулевое значение этой переменной будет показывать, что у нас нет последовательности для обработки. В начале обработкиустанавливаем nn = 0 (блок 6).

Далее организуем цикл со счетчиком (блок 7), в котором перебираем элементы массива. Для каждого элемента в первую очередь проверяется его знак (блок 8). Если это отрицательный элемент, то это может быть первый или не первый элемент последовательности. Это можно определить, проверяя значение переменной nn: если она 0 — это первый элемент (блок 9). Для первого элементазапоминаем в переменной іb индекс начала последовательности, устанавливаем счетчик элементов nn в 1, а в переменную av записываем значение этого элемента (блок 10). Для не первого элементаувеличиваем счетчик на 1, а значение элемента суммируем со занчением переменной av (блок 11). Таким образом, переменная av у нас играет роль накопителя суммы элементов последовательности.

Если же очередной элемент последовательности положительный, то возникает вопрос — не является ли этот элемент первым положительным элементом после отрицательной последовательности? Это можно проверить по счетчику nn. Если элемент первый, то значение nn должно быть больше 0 (блок 12). Если нет, тонеобходимо обработать ту отрицательную последовательность, которая только что закончилась. Для обработкив первую очередь получаем среднее значение (блок 13). Потом организуем цикл (блок 14) со счетчиком j, который изменяется от іb (индекс начала отрицательной последовательности, которыйсохранили раньше) до і–1 (і — это индекс первого положительного элемента после отрицательной — это индекс первого положительного элемента после отрицательной последовательности, следовательно і–1 — индекс последнего элемента отрицательной последовательности). В каждой итерации этого цикласравниваем j -й элемент массива со средним значением av (блок 15).

Если значение элемента меньше среднего (т.е. больше по абсолютному значению), то среднее значение записывается в j -й элемент (блок 16), если же нет — ничего не происходит. По выходу из циклаустанавливаем счетчик nn в 0 (блок 17), как признак того, что у нас нет необработанной последовательности. Для не первого положительного элемента нет необходимости что-либо делать.

После выхода из того цикла, который начался в блоке 7, необходимо проверить, не осталась ли у нас необработанная последовательность и, если да, обработать ее. На схеме алгоритмапоказали это одним блоком 18, действия, которые выполняются в этом блоке тождественны действиям, которые детально показаны в блоках 12–17.

По окончанию обработкивыводим массив-результат (блок 19) и заканчиваем программу.





Поделиться с друзьями:


Дата добавления: 2018-11-12; Мы поможем в написании ваших работ!; просмотров: 504 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент всегда отчаянный романтик! Хоть может сдать на двойку романтизм. © Эдуард А. Асадов
==> читать все изречения...

2395 - | 2153 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.