Студопедия

КАТЕГОРИИ:

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


операторы




LOOP [WHILE/UNTIL условие]

Ключевое слово UNTIL действует обратным образом по отношению к WHILE, т.е. UNTIL-цикл будет выполняться до тех пор, пока условие не станет истинным. Иными словами WHILE условие это UNTIL NOT условие.

Здесь, имеется собственный оператор принудительного выхода из цикла

üEXIT DO

Структуру с постусловием удобно применять в случае, если цикл необходимо выполнить хотя бы один раз независимо от значения условия или, если само условие формируется в цикле и не может быть оценено до входа в цикл.

@ Задачи для самостоятельного решения.

1). Решите задачу 4.2, используя оператор WHILE, а затем оператор DO.

2). Суммировать элементы числового ряда вида 2+6+18+… до тех пор, пока сумма не превысит число 120. Напечатать получившуюся сумму и номер элемента, на котором произошло это событие.

 

6. Работа с массивами

Как правило, данные для вычислений на компьютере задаются в упорядоченной форме – в виде последовательности (вектора) чисел или в виде таблицы (матрицы) чисел. Такие совокупности данных называются массивами. Построение программ, оперирующих с элементами массивов – важнейшая часть техники программирования.

Например, вектор A длиной К чисел и матрица В из N строк и M столбцов (всего из N×M элементов) выглядят следующим образом (рис. 6.1).

 

 

Цифры при имени массива, указывающие порядковый номер эле­мента, называются индексами. В алгоритмических языках элементы массивов AIи BIJобозначаются как A(I) и B(I,J). К массиву в целом обратиться нельзя. Обработка массива обычно означает последовательную обработку отдельных его элементов.

Оператор описания массивов.Если предполагается работа с массивами, предварительно следует “известить” об этом компьютер оператором вида

üDIM список_массивов

Описание массива содержит имя массива и его размерность. Например, оператор DIM A(20), B(4,6) читается как “Установить размерность одномерного массива A из 20 элементов и двумерного массива В из 24–х элементов (4 строки, 6 столбцов)”.

По умолчанию отсчет элементов в Бейсике начинается с нуля, то есть оператор DIM A(20) определяет на самом деле 21 элемент памяти (нулевой элемент можно игнорировать). Если есть необходимость установить нестандартную нумерацию, можно при определении размерности использовать указатель вида нижняя граница индекса ТО верхняя граница. Например, оператор DIM Y(5 TO 20, 1 TO 8) определяет двухмерный мас­сив Y, у которого первый индекс изменяется от 5 до 20, а второй – от 1 до 8. Размерность массива задается исходя из условий решаемой задачи. Первоочередной задачей при работе с массивами является ввод-вывод данных, который организуется с помощью циклов. На рис. 6а осуществляется ввод данных в вектор A размерностью N эле­ментов. На рис. 6б – в матрицу В размерностью N строк на M столбцов. Ввод осуществляется с помощью двух циклов, один из которых вложен в другой. В наружном цикле изменяется первый индекс I элемента матрицы В, во внутреннем – второй индекс J. Таким образом, второй индекс J изменяется быстрее, чем первый. Это означает, что ввод элементов матрицы будет производиться в следующей последовательности: B(1,1), B(1,2), ... , B(1,M); B(2,1), B(2,2), ... , B(2,M); ... ; B(N,1), B(N,2), ... B(N,M), т.е. по строкам. Замечание. Два последних оператора могут быть объединены в один вида NEXT j,i (первым должен быть указан индекс внутреннего цикла, вторым – внешнего). Аналогичным образом осуществляется и вывод (рис. 6в), но вместо оператора INPUT используется оператор PRINT. Здесь, однако, следует позаботиться об удобстве восприятия выводимых данных. Желательно, чтобы строка матрицы занимала на экране именно одну строку. Для этого во внутреннем цикле печати нужно поставить точку с запятой после оператора вывода (PRINT;), что подавляет переход на новую строку монитора после вывода каждого числа. Напротив, после завершения вывода всех элементов строки матрицы, как раз следует перейти на следующую строку монитора. Для этого ниже оператора NEXT j следует поставить пустой оператор PRINT, который переведет вывод на следующую строку экрана. Кроме того, для обеспечения фиксированного расположения элементов матрицы друг под другом в столбцы, имеет смысл использовать для вывода не оператор PRINT, а PRINT USING (например, PRINT USING "####.##"; b(i,j);).

Программа к задаче 6.1 INPUT n DIM c(n) FOR i=1 TO n INPUT c(i) NEXT Проверка
m=c(1): k=1 FOR i=2 TO n IF m<c(i) THEN m=c(i): k=i NEXT ?m k m=5, k=1 i=2 5>2 i=3 5<7 m=7,k=3 i=4 7>4 i=5 7, 3

Задача 6.1. В векторе С размерности N элементов найти максимальный по значению элемент и его номер в С. Ниже приведена программа и ее проверка для N=4 и C=[5,2,7,4] (с оператора m=c(1)). Здесь переменная М запоминает значение максимального элемента, а К – номер этого элемента в векторе С. Первоначально в качестве такого элемента берется самый первый.

Задача 6.2. Определение значения вклада в банке на конец года.Пусть в банке имеется N счетов вкладчиков. Для всех известны значения остатков на счете в конце каждого квартала. Следует определить и напечатать значения всех вкладов на конец года с учетом известного процента роста вклада Р. Данные о вкладах хранятся в массиве X из N строк и пяти столбцов. Первые четыре элемента каждой i-ой строки X(i,1), X(i,2), X(i,3), X(i,4), хранят остатки вклада на конец каждого из четырех кварталов года. В последний пятый элемент строки X(i,5) следует занести вычисленную величину вклада на конец года. Он равен остатку вклада на конец последнего квартала X(i,4) плюс установленный процент Р/100 от среднего значения вклада (X(i,1)+X(i,2)+X(i,3)+X(i,4))/4 за год. Отсюда X(i,5)=X(i,4)+(Р/100)*(X(i,1)+X(i,2)+X(i,3)+ X(i,4))/4.

 

I кв X(i,1) II кв X(i,2) III кв X(i,3) IV кв X(i,4) Остаток на конец года X(i,5)=X(i,4)+(Р/100)*(X(i,1)+X(i,2)+X(i,3)+X(i,4))/4

 

Кроме перечисленного, следует найти сумму всех вкладов в банке S и среднее значение вклада, приходящееся на одного вкладчика S/N.

Программа к задаче 6.2 INPUT "Введите число вкладчиков и процент ",N,P DIM x(n,5) FOR i=1 TO n FOR j=1 TO 4 ?"Введите остаток вклада №"i "за" j "квартал "; INPUT x(i,j) NEXT j,i s=0 ?" Счет Остатки по кварталам ВСЕГО" ?" I II III IV" FOR i=1 TO n x(i,5)=x(i,4)+(р/100)*(x(i,1)+x(i,2)+x(i,3)+x(i,4))/4 PRINT USING "#######"; i,x(i,1),x(i,2),x(i,3),x(i,4),x(i,5) s=s+x(i,5) NEXT ? "Сумма вкладов =" s, "Средний вклад =" s/n Программа к задаче 6.3 INPUT n DIM x(n) 'формирование исходного вектора FOR i = 1 TO n: x(i) = i: NEXT FOR i = 1 TO n - 1 FOR j = i + 1 TO n 'при x(i)<x(j), числа меняются местами IF x(i)<x(j) THEN SWAP x(j), x(i) NEXT j NEXT i 'вывод результатов FOR i = 1 TO n: PRINT x(i): NEXT

Задача 6.3. Сортировка чисел в массиве.Пусть имеется вектор чисел X длиной N. Напечатать массив в порядке убывания значений его элементов. Алгоритм реализуется при помощи двух вложенных циклов. В наружном цикле последовательно перебираются числа X(i) в массиве и во вложенном цикле сравниваются со всеми оставшимися числами справа от данного X(j). Если выясняется, что какое-то из X(i) меньше сравниваемого, они меняются местами – большее число становится на место меньшего. В программе для упрощения в качестве элементов массива взяты их номера i. Если вектор имеет длину четыре (X(4)), то будет выполнена следующая последовательность перестановок чисел массива: 1,2,3,4; 2,1,3,4; 3,1,2,4; 4,1,2,3; 4,3,2,1.

@ Задачи для самостоятельного решения.

1). Напечатать число из массива X(N), предшествующее минимальному.

2). Переместить элементы массива X в массив Y таким образом, чтобы в нем сначала оказалась вторая половина исходного массива X, а затем первая.

3). В массиве X(N) N произвольных чисел (N нечетное). Напечатать эти числа, начиная с центрального, затем число, стоящее рядом слева, затем справа и т.д. до достижения границ массива.

4). Имеются (рис. 6.3) массивы X(N) и Y(N) с координатами X, Y точек на плоскости в порядке их обхода. Определить (с помощью теоремы Пифагора) периметр замкнутой фигуры, с вершинами в этих координатах.

5). Построить вложенный цикл для печати таблицы умножения (как на обложке ученической тетради).

7. обРАБОТКА Символьных данных

Все символы в ПК имеют уникальные коды, значения которых закреплены в ASCII-таблице. С ней можно ознакомиться в любом справочнике. В Бейсике имеются несколько функций и операторов обработки символьных данных.

üLTRIM$(строка) –удаляет начальные про­белы в символьном выражении.

üRTRIM$(строка) –удаляет конечные пробелы в символьном выражении.

üSPACE$(числовое_выражение) –возвращает строку пробелов длиной N символов (N в пределах 0-32767).

üINSTR([начальная_позиция],строка1, строка2) –возвращает позицию первого вхождения строки2 в строку1, начиная с начальной позиции. Если начальная позиция не задана, отсчет производится с начала.

Пример. ?INSTR(”Саша”,”а”),INSTR(3,”Саша”,”а”) Результат: 2,4

üLEFT$(строка, n) –возвращает строку, содержащую n первых символов.

Пример. ?LEFT$(”Саша”,2) Результат: ”Са”

üRIGHT$(строка, n) –возвращает строку, содержащую n последних правых символов.

Пример. ?RIGHT$(”Саша”,2) Результат: ”ша”

üMID$(строка, начальная_позиция [,длина]) –возвра­щает фрагмент ситроки, с начальной позиции заданной длины.

Пример. ?MID$(”теория”,4), MID$(”теория”,4,2) Результат:”рия”, ”ри”

üMID$(строка, начальная_позиция [,длина])=строка –символьный оператор, заменяющий фрагмент строки на сим­вольное выражение, начиная с начальной позиции заданной длины.

Пример. x$ = "здесь вход"

MID$(x$, 7, 2) = "выход"

? x$ Результат: "здесь выхо"

üSTR$(число) –возвращает символьное представление числа или числового выражения.

Пример. STR$(3) Результат: "3"

üVAL(строка) –возвращает числовое представление символьного выражения. Функция обратна функции STR$().

Пример. STR$("3") Результат: 3

üLEN(строка) –возвращает длину символь­ного выражения.

Пример. LEN(”теория”) Результат: 6

üASC(символ) –возвращает код символа ПК.

üCHR$(число) –возвращает символ по его коду.

Примеры. ASC(“R”) Результат: 82 (код буквы R=82)

CHR(82) Результат: “R”

Т.е. функции эти обратны друг другу.

Текстовые данные можно соединять в одну строку, используя знак “+”.

Текстовые данные можно сравнивать между собой на больше, меньше, равно. Сравниваются, конечно, не сами символы, а их коды. Так верным будет отношение “A”<”R”, поскольку ASCII-код (65) английской буквы A меньше кода (85) буквы R. Сравнивать можно и целые слова. Так верно отношение “TOM”>”JON”. Сравнение начинается с первой пары символов. Здесь код английской T (код 84) больше кода J (74). Остальные символы далее не сравниваются. Если же первая пара букв совпадает, будет проверена следующая пара и т.д. до первого несовпадения. Если число символов в сравниваемых словах различно, сравнение выполняется до исчерпания первого операнда. Рост кодов символов соответствуют их порядку в алфавите. Для русских символов это не совсем так (см. справочник).

Пример. Напечатать символьную переменную X$ в обратном порядке

x$="Внимание": y$ =""

FOR i = LEN(x$) TO 1 STEP -1

y$ = y$ + MID$(x$, i,1)

NEXT

PRINT y$ Результат: “еинаминВ“

Здесь в переменной y$ формируется нужный результат.

Задача 7.1. Напечатать число X (в диапазоне 0-99) прописью. Такая потребность возникает при печати в финансовых документах “суммы прописью”. Результат поместить в переменную P$.

Нам понадобятся три текстовых массива. s1$(0 to 9) для числительных в диапазоне "ноль" – "девять", s2$(10 to 19) для "десять" – "девятнадцать", s3$(2 to 9) для "двадцать" – "девяносто". Начальный и конечный индексы массивов лучше выбирать в соответствии со значениями числительных. Наполнение массивов проще произвести операторами Data и Read.

CLS 'Программа к задаче 7.1

DIM s1$(0 TO 9), s2$(10 TO 19), s3$(2 TO 9)

DATA "ноль","один","два", "три","четыре","пять","шесть","семь","восемь","девять"

READ s1$(0), s1$(1), s1$(2), s1$(3), s1$(4), s1$(5), s1$(6), s1$(7), s1$(8), s1$(9)

DATA "десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать",

"шестнадцать","семнадцать","восемнадцать","девятнадцать"

READ s2$(10),s2$(11),s2$(12), s2$(13), s2$(14), s2$(15), s2$(16), s2$(17), s2$(18), s2$(19)

DATA "двадцать","тридцать","сорок","пятдесят","шестьдесят","семдесят","восемдесят","девяносто"

READ s3$(2), s3$(3), s3$(4), s3$(5), s3$(6), s3$(7), s3$(8), s3$(9)

INPUT "введите число X"; x

IF x > 99 THEN PRINT "если число X слишком велико – выход": END

x$ = LTRIM$(STR$(x)) 'число X превращается в сроку X$ с удалением пробелов

IF x < 10 THEN P$= s1$(x): PRINT P$: END 'формирование строки если X < 9

IF x < 20 THEN P$= s2$(x): PRINT P$: END 'формирование строки если X от 10 до 19

'если число от 20

n1 = VAL(MID$(x$, 1, 1)) 'формируются десятки X

n2 = VAL(MID$(x$, 2, 1)) 'формируются единицы X

P$= s3$(n1) + " " + s1$(n2) 'формируется итоговая строка

PRINT P$

@ Задачи для самостоятельного решения.

1). В символьной строке X (придумайте ее сами) удалить лишние (начальные, конечные и сдвоенные) пробелы.

2). В X подсчитать число вхождений слова ‘его’.

3). В X поменять порядок символов внутри каждого слова на обратный.

4). В X напечатать самое длинное слово.

5). В X подсчитать число вхождений произвольного символа.

6). В X подсчитать число вхождений всех встречающихся знаков.

7). В X в каждом слове поменять порядок символов на обратный.

8). В X расположить слова в порядке увеличения их длины.

9). Имеется строка X длиной ≤N, предназначенная для вывода. Выровнять при печати X к правой границе так, чтобы строка занимала все N позиций. Вырав­нива­ние производить за счет равномерного увеличения числа пробелов между словами.

10). Зашифровать строку X, заменив каждый символ, на символ, следующий за данным по алфавиту (буква А заменяется на Б и т.д., буква Я заменяется на А). Расшифровать полученный текст.

11). В строке X имеются открывающиеся и закрывающиеся скобки (включая вложенные). Выяснить, правильно ли они расставлены. Если есть ошибки – сообщить об этом конкретно, включая номер позиции, где она обнаружена.

12). Строка X содержит любые русские и латинские символы (как заглав­ные, так и строчные), цифры и знаки препинания. Преобразовать все символы X в строчные. Результат занести в Y.

13). Пусть имеется таблица работников бригады со столбцами: Имя, Отрабо­тано дней, Зарплата. Отсортировать любым методом таблицу по алфавиту. Для упрощения будем считать, что имена не превышают 8-ми символов, содержат только заглавные буквы и не имеют буквы Ё (эта буква в кодовой таблице русских символов находится не на месте).

14). Отсортировать таблицу по алфавиту, где для имен допускаются любые буквы русского алфавита, включая Ё и ё. Сложность здесь заключается как раз в этих буквах. Их коды 240 и 241, т.е. самые большие среди русских букв, в виду чего сравнивать слова придется не целиком, а побуквенно. В случае, если встретилась буква Ё и ё, в программе они должны считаться большими букв Е/е и меньшими Ж/ж.

15). Написать программу, которая из заданной даты (в диапазоне 1900..2100) формирует следующую. Исходная дата задается в форме текстовой строки вида ‘дд.мм.гггг’, например ’06.04.2002’. Подсказка: признаком високосного года является кратность года числу 4. Исключением являются года с двумя нулями на конце, число сотен в которых не кратно 4 (например, 1800, 1900, 2100).

16). Написать программу, которая от заданной даты (диапазон 1900¸2100) находит новую, отстоящую от данной на М месяцев. Если в новом месяце такой даты нет, берется последний день нового месяца. Так, если вследствие вычислений получилась, например, дата 31 сентября, в качестве результата нужно взять 30 сентября.

17). Написать программу, которая от заданной даты (1900¸2100), находит но­вую, отстоящую от данной на X дней.

18). Преобразовать число X, отображенное цифрами, в число “прописью”, что необходимо для финансовых документов:

а). X имеет три разряда в диапазоне 0¸999.

б). X имеет шесть разрядов в диапазоне 0¸999 999.

в). X имеет девять разрядов в диапазоне 0¸999 999 999.

Результатом преобразования, например числа 23 245 012, должно быть выражение “двадцать три млн. двести сорок пять тыс. двенадцать руб.” Основой для решения этих задач является задача 7.1, разобранная выше. Понадобится еще массив для сотен числительных “сто” ¸ “девятьсот”, и массив для разряда единиц тысяч, поскольку “одна” тысяча, но “один” рубль. При формировании строки следует разбить исходное число на триады (т.е. по три разряда), для которых техника преобразования практически аналогична.

 

КОНТРОЛЬНЫЕ ЗАДАНИЯ

Составить блок-схемы и программы решения пяти задач контрольной работы. Всего вариантов 25 (от 0 до 24). Вариант определяются числом, образованным из двух последних цифр шифра студента, следующим образом. Если число находится в диапазоне 0¸24, – это и будет нужный вариант. Если оно больше, то из него нужно отнимать число 25 до тех пор, пока не будет получено число менее 25. Так, для шифра 0469, необходимо выполнить 19-ый вариант (69-25-25=19).

ЗАДАЧА 1.Имеется четыре A,B,C,D произвольных числа. ЭВМ должна ответить на вопрос: Правда ли что ...? (вопрос найдете в таблице вариантов). Ответ ЭВМ должна вывести в виде текста – слов ”Правда” или ”Неправда”.

 

все числа отрицательны? все числа положительны?
среди чисел есть четные? точно два из чисел равны?
не все числа отрицательны? не все числа положительны?
среди чисел есть нечетные? числа расположены в порядке убывания?
хотя бы два из чисел равны? все числа равны между собой?
среди этих чисел нет равных? среди этих чисел есть равные?
все числа больше 0 и меньше 7? первое число меньше остальных?
среди чисел есть кратные трем? среди чисел нет отрицательных?
первое число не самое маленькое? среди чисел точно одно больше 6?
среди чисел есть кратные трем? ни одно число не превышает 9?
последнее число не самое маленькое? среди чисел точно одно <0?
точно два из чисел не равны между собой? имеется хотя бы одно число, кратное пяти?
каждое из первых двух чисел больше каждого из последних двух?

 

ЗАДАЧА 2.Составить программу вычисления и выдачи на печать суммы (или произ­ведения) N элементов бесконечного числового ряда. Здесь и далее следует пользоваться операторами цикла FOR или WHILE.

 

y=1-6+11-16+21-... y=256(-64)16(-4)1... y=32(-16)8(-4)2… y=4(-6)8(-10)12… y=85-80+75-70+...
y=-2+5-8+11-14+... y=50-40+30-20+10-... y=(-1)4(-16)64... y=(-512)256(-128)... y=-243+81-27+9-...
y=-4+8-16+32-64+... y=3-9+27-81+243... y=1(-3)9(-27)81... y=(-64)32(-16)8(-4)… y=-20+18-16+14-...
y=2-6+18-54+162-... y=70-65+60-55+50-... y=16(-8)4(-2)1… y=1000(-100)10(-1)... y=42-40+38-36+...
y=60-57+54-51+48-... y=125(-25)5(-1)0,2... y=60-55+50-45+... y=48(-24)12(-6)3... y=3-5+7-9+11-...

ЗАДАЧА 3.Имеется массив A из N произвольных чисел A(N), среди которых есть положительные, отрицательные и равные нулю. Составить программу, выполняющую задачу в соответствии с вариантом.

Вычислить сумму всех четных положительных чисел. Например, если A={2,4,–3,0,5,1,6}, результат: 2+4+6=12.
Вычислить количество чисел, квадрат которых меньше 10. Так, при A={2,4,–3,3,5,2,1}, результат: 5 (числа 2,-3,3, 2,1).
Вычислить количество положительных и нулевых чисел и сумму отрицательных. Например, если A={2,4,–3,3,5,–2,1}, результат: положительных чисел 5 (2,4,3,5,1), нулевых – 0 (нет), сумма отрицательных –5 (–3+–2=–5).
Ответить на вопрос: правда ли что среди чисел имеются отрицательные (ответ должен быть в виде слов “ДА” или “НЕТ”). Например, если A={2,4,–3,3,5,–2,1}, результат: ДА (–3, –2).
Напечатать все числа из очереди, квадрат которых превышает 7, но меньше 50. Например, если A={2,4,–3,3,5,–2,8}, результат: числа 4, –3, 3, 5.
Вычислить произведение всех положительных чисел меньших 20. Так, если A={2,24,-3,6,5,-2,33}, результат: 2×6×5=60.
Суммировать числа до тех пор, пока не встретится число 2. Напечатать получившуюся сумму. Если двойка не встретилась, напечатать текст “Двойки нет”. Например, если A={7,4,–3,2,5,–2,1}, результат: 7+4–3=8.
Выяснить, каким по счету в очереди стоит число 3. Если троек несколько, нас интересует только первая из них. Если троек нет совсем, напечатать сообщение “Троек нет”. Например, если A={2,4,–3,3,5,–2,1}, результат: 4.
Подсчитать количество положительных и отрицательных чисел и количество нулей. Например, если A={2,4,–3,0,5,–2,5}, результат: 4; 2; 1.
Напечатать те числа из массива, которые образуют убывающие последовательности. Например, если A={2,4,3,0,2,5,–2,5}, результат: 4, 3, 0 и 5, –2.
Найти сумму и количество всех нечетных положительных чисел. Так, если A={9,4,–3,0,5,1,–7}, результат: сумма =9+5+1=15, количество =3.
Найти максимальное и минимальное числа. Напечатать те элементы массива, которые в массиве находятся между ними. Так, если A={2,4,–3,0,2,5,–2}, результат: –3,0,2,5 (max=5, min=–3).
Найти номер последнего положительного элемента в массиве. Например, если A={2,4,–3,0,2,5,–2}, результат: 6 (последнее число 5).
Найти номера первых двух рядом стоящих одинаковых элементов в массиве. Так, если A={2,6,4,4,2,5,5,4}, результат: 3 и 4 (равные значения 4 и 4).
Выяснить, есть ли одинаковые элементы в массиве. Ответ ДА/НЕТ. Так, если A={2,4,3,0,2,5,4}, результат: ДА (одинаковые значения 2 и 2).
Найти максимальный четный элемент в массиве из всех положительных элементов. Так, для A={2,4,–3,6,2,9,–2}, результат: 6.
Найти произведение четных элементов, находящихся в диапазоне от 3 до 13. Например, если A={2,4,5,2,6,–2,20,8}, результат: 4×6×8.
Найти максимальное и минимальное нечетные числа и их среднее арифметическое. Так, если A={8,4,–2,6,2, 7, –5}, результат: 7 и –5 и (7–5)/2=1.
Найти сумму элементов кратных трем. Например, если A={2,4,9,2,6,–12,0}, результат: 9+6–12=3.
Найти номер максимального четного элемента в массиве. Например, если A={2,4,–3,6,2,9,–2}, результат: 4.
Напечатать номера элементов кратных одновременно двум и трем. Так, если A={3,6,9,2,12, 2,24}, результат: 6,12,24.
Напечатать произведение элементов следующих за минимальным числом. Так, при A={3,4,9,2,–5,2,3}, результат: 2×3.
Найти произведение элементов кратных трем. Например, если A={2,4,9,2,6,–3,0}, результат: 9×6× (–3)=–162.
Напечатать в обратном порядке все положительные элементы. Так, если A={2,4,–9,5,6,–3,2}, результат: 2,6,5,4,2.
Напечатать сумму элементов предшествующих минимальному числу. Так, если A={3,4,9,2,–5, 2,3}, результат: 3+4+9+2=18.

ЗАДАЧА 4.Составить программу вычисления числового ряда для известного числа членов ряда N. Перед программированием следует выявить и написать аналитические соотношения, описывающие все имеющиеся зависимости.

Y=(7+35/1)(8-3-4/2)(9+33/3)(10+3-2/3)... Y=(2+1/81)-(4-2/27)+(8+4/9)-(16-8/3)+
Y=(1+2-1/2)(-2+22/3)(3+2-3/4)(-3+24/4)... Y=(8+35)-(4+3-4)+(2+33)-(1+3-2)+...
Y=(1/24+1)(2/23-2)(3/22+4)(3/21-8)... Y=(7+35/1)(8-3-4/2)(9+33/3)(10+3-2/4)...
Y=(33-1)(3-2+2)(31-4)(3-0+8)... Y=(2-1/2)(22/-5)(2-4/8)(28/-11)...
Y=-8/(25-2)Ÿ4/(24+4)Ÿ-2/(23-5)Ÿ1/(21+6)... Y=(3-1/2)(42/-5)(5-3/8)(64/-11)...
Y=(2/16+8)(2/8-10)(2/4+12)(2/2-14)... Y=(1+24-8)(2-2-3-4)(4+22-2)(8+2-1-1)...
Y=(1+2-1/2)(3+22/3)(5+2-3/4)(7+24/5)... Y=(7+2/2)-(6-3/4)+(5+4/8)-(4-5/16)+...
Y=(2-4-8+1)(23-4+3)(2-2-2+5)(21+1+7)... Y=(1-2/5)+(2+4/10)+(3-8/15)+(4+16/20)...
Y=-(3/16+1)+(3/8-2)-(3/4+3)+(3/2-4)... Y=(2-1/27+4)(22/9-8)(2-3/3+16)(24/1-32)...
Y=(3+1-1/81)(5-2+1/27)(7+3-1/9)(9-4+1/3)... Y=(1+25/1)(10+2-4/2)(100+23/3)...
Y=(2-1/81)(4+1/27)(8-1/9)(16+1/3)... Y= -1/(18+2)Ÿ2/(2-4+4)Ÿ-3/(32+6)...
Y=28/(3-16)Ÿ2-4/(4+8)Ÿ22/(5-4)... Y=(0-2/5)+(2+3/10)+(4-4/15)+(6+5/20)...
Y=(4/2+8)(5/6-9)(6/18+10)(7/54-11)...  

Указания к решению задачи.Пусть: Y= 2-1Ÿ22Ÿ 2-3Ÿ 24

-5+16 5-8 -5+4 5-2

Сначала необходимо выписать все, наблюдаемые в ряду, соотношения. Для этого введем переменные. Степень двойки обозначим буквой A, знак при ней и знак при числе 5 буквой Z (так как они совпадают), второе слагаемое в знаменателе 16 – буквой В, а знак при нем -Z (этот знак противоположен остальным). Формула справа.

Алгоритм решения (для заданного числа членов N):

1. Ввести значение N.

2. Задать исходные значения переменных (Y=1, Z=–1, A=1, B=16)

3. Вычислить очередное значение Y.

4. Вычислить новые значения A, В, Z.

5. Вернуться к пункту 3, если число выполненных циклов £N, иначе, завершение цикла и печать Y.

Y =Y(2ZA/(ZŸ5–ZŸB)) Y = 1

Z = –Z Z = –1

A = A+1 A = 1

B = –B/2 B = 16

ЗАДАЧА 5.Выполнить действия над массивами. В таблице при формулировании задания для разъяснения его сути справа отображены примеры исходных X и результирующих Y массивов с конкретными числами. Программа, естественно, должна обрабатывать любые числа для массивов произвольной размерности N. Программа должна предъявлять исходные и новые (если требуется) массивы.

 

Заполнить Y таким образом, чтобы в его начале оказался первый элемент X, затем в его конце – второй, затем в начале – третий, в конце –­ четвертый и т.д. X
Y
             
Переписать все элементы X для 3<X(i)<10 в начало Y, подсчитать их количество и среднее арифметическое. В примере таких чисел 3. Среднее 18/3=6. X
      Y
             
Найти максимальный и минимальный элементы X и поменять их местами в массиве Y. В примере Xmax=8, Xmin=1. X
Y
             
Взять из X и расположить в массиве Y сначала все положительные, а затем отрицательные элементы. -3 -4 -1 X
-3 -4 -1 Y
             
Изменить порядок элементов массива X на обратный и заполнить ими массив Y. X
Y
             
Занести из X в Y сначала элементы, находившиеся на четных местах в X, а затем – на нечетных. X
Y
             
Заполнить Y нарастающими суммами элементов X. -2 X
Y
             
Найти максимальный элемент X и заполнить им Y. X
Y
             
Заполнить массив Y четными элементами массива X. X
    Y
             
Заполнить массив Y нарастающими произведениями элементов массива X. X
Y
             
Заполнить Y нечетными элементами массива X. X
      Y
             
Сдвинуть вправо на две позиции содержимое X и заполнить им массив Y. X
    Y
             
Сдвинуть влево на две позиции содержимое X и заполнить им массив Y. X
    Y
             
Взять из X и расположить в массиве Y сначала все, отрицательные, а затем положительные элементы. -3 -4 -1 X
-3 -4 -1 Y
             
Напечатать все элементы, которые встречаются более одного раза. В примере это 5 и 3. X
             
Напечатать все элементы, которые не повторяются. Здесь это 2 и 4. X
             
Скопировать в Y те элементы массива X, которые делятся на 3 без остатка. -8 -3 X
-3       Y
             
Заполнить массив Y произведениями соседних двух элементов X. -2 X
-8       Y
             
Заполнить массив Y произведениями соседних трех элементов X. X
        Y
             
Заполнить Y элементами X, находящимися между его максимальным и минимальным значениями. X
        Y
             
Заполнить массив Y номерами всех четных элементов массива X. X
    Y
             
Заполнить массив Y элементами массива X, находящимися прежде его максимального значения в X. X
    Y
               
Заполнить массив Y элементами массива X, находящимися после его максимального значения в X. X
      Y
             
Поменять местами соседние элементы массива X и заполнить ими массив Y. X
Y
             
Изменить порядок элементов левой и правой половин массива X на обратный и заполнить ими массив Y. X
Y

Поделиться:

Дата добавления: 2015-01-01; просмотров: 198; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты