Выходные данные: В выходной файл output.txtвыведите ответ на задачу.

Одномерные массивы 1. Назначение Для решения задач с набором данных одного типа (integer, real, string, char и др.) используются массивы. Например, у нас есть данные ежедневной средней температуры воздуха в январе: i 1 2 3 4 5 6 … 31 A[i] 3 5 2 7 -9 -8 … -17 3; 5; 2; 7; -9; -8; …; -17 Присвоим каждому значению (далее будем их называть элементами массива) порядковый номер (обратите внимание, что для каждого элемента массива определен его порядковый номер, то есть элементы массива расположены в строгом порядке). Назовем получившуюся последовательность массивом и присвоим ему имя (аналогично имени переменной), например, А.Теперь к каждому элементу массива можно обратиться по его порядковому номеру (аналогично строковой переменной).Например, температура 5-го января: А[5]= – 9, а 31-го: А[31]= – 17. Тогда сумму всех элементов массива можно вычислить с помощью цикла For: s:=0; for i:=1 to 31 do    s:=s+a[i]; 2. Описание массива Массив описывается в разделе описания переменных (после слова Var). A:array[1..31] of integer; Мы описали массив (слово array) из 31 элемента (1, две точки, 31), состоящий из переменных целого типа (integer). Несколько одинаковых по величине и типу массивов можно описывать в одной строке: b,c:array[1..37] of char; К сожалению, в строке описания массива при указании размера нельзя использовать переменную, поэтому в качестве длины массива указывается заведомо большее значение. Для задач, решаемых на уроках программирования при отсутствии в условии задачи указания на конкретное количество элементов массива, указывайте 50. d:array[1..50] of real; 3. Инициализация (заполнение, чтение, ввод элементов) массива Заполнение массива нулями: fori:=1 to n do A[i] := 0; Заполнение массива случайными числами от X до Y : fori:=1 to n do    A[i] := random (Y–X+1)+X;         Ввод массива A с клавиатуры: write('Введите количество элементов массива: '); readln(n); for i:=1 to n do begin write('A[' , i , ']='); Заполнение массива А из n элементов значением 0: Fillchar (a,n+1,0); Чтение массива из файла: readln(n); for i:=1 to n do read(a[i]); readln(a[i]); end;   Внимание!!! Изучите формат входных данных и пример! Чаще всего количество элементов массива указывается в первой строке, а во второй строке – сам массив через пробел. Поэтому в цикле for пишем read(A[i]). Если же массив в столбик – читать его будем с помощью readLn(A[i]). Настоятельно рекомендуем прочитать массив из файла и сразу же вывести его экран или в файл, чтобы проверить правильно ли ваш массив прочитался. Убедившись, что массив читается правильно, не забудьте убрать вывод массива. Вывод массива в строку через пробел (для символьных и строковых массивов): for i:=1 to n-1 do write(A[i], ’ ‘); writeln (A[n]); Вывод массива в строку через пробел  (для числовых массивов): for i:=1 to n do write(A[i], ’ ‘); writeln; Вывод массива в столбик : for i:=1 to n do writeLn(A[i]);   4. Вывод массива       Обратите внимание, что при выводе в строку (для числовых массивов) после последнего элемента выводится пробел и курсор остается в той же строке. Поэтому при необходимости перевода курсора на следующую строку мы добавили оператор writeLn. 5. Примеры решения задач Пример 1. Вычислите среднее арифметическое элементов одномерного массива, заполненного целыми числами. Примеры: № input.txt output.txt 1 4 5 2 5 0 3.00 2 3 1 1 2 1.33 program p1; var a:array[1..50] of integer;                    n,i:integer;                       s:real; begin assign (input, ’input.txt’);  assign (output, ’output.txt’);  reset (input);  rewrite (output);  { Читаем массив из файла } readln (n); for i:=1 to n do      read (A[i]); {Вычисляем сумму элементов массива} s:=0; for i:=1 to n do     s:=s+a[i]; {Вычисляем среднее арифметическое} s:=s/n; {Выводим результат в файл } writeln (s:0:2); close (input); close (output); end. Пример 2. Замените в одномерном массиве, заполненном целыми числами, все элементы, кратные 3, нулями. Примеры: № input.txt output.txt 1 4 6 9 4 -12 0 0 4 0 program p2; var a:array[1..50] of integer;        n,i:integer; begin  assign (input, ’input.txt’);    assign (output, ’output.txt’); reset (input); rewrite (output); {Читаем массив из файла} readln (n); for i:=1 to n do        read (A[i]); {Заменяем элементы кратные 3 нулями} for i:=1 to n do         if a[i] mod 3=0     then a[i]:=0; {Выводим результат в файл} for i:=1 to n do     write (A[i],’  ’);  close (input);  close (output); end.   6 . Решение задач № INPUT.TXT OUTPUT.TXT 1 3 1 2 3 3 2 1 1.Дано натуральное число N и последовательность из N элементов. Требуется вывести эту последовательность в обратном порядке. Входные данные: В первой строке входного файла INPUT.TXT записано натуральное число N (N ≤ 103). Во второй строке через пробел идут N целых чисел, по модулю не превосходящих 103 - элементы последовательности.

Выходные данные

В выходной файл OUTPUT.TXT выведите заданную последовательность в обратном порядке.

2.ДОТАЦИИ. Имеется список доходов N жителей года Малолюдинска. Мэр города к очередному юбилею пообещал самым малоимущим – тем, чьи доходы ниже среднего значения по городу - выдать дотацию в размере М рублей. Выдайте список доходов с учетом дотаций.

INPUT.TXT OUTPUT.TXT
1 3 7 100 100 50 100 100 57

Входные данные: В первой строке входного файла INPUT.TXT записаны число N (N ≤ 103) – количество жителей города и число M – размер дотации. Во второй строке через пробел идут N целых чисел, по модулю не превосходящих 109 – доходы жителей.

Выходные данные

В выходной файл OUTPUT.TXT выведите доход жителей с учетом дотаций.

3. ДОМАШНЕЕ ЗАДАНИЕ (acmp.ru). Петя успевает по математике лучше всех в классе, поэтому учитель задал ему сложное домашнее задание, в котором нужно в заданном наборе целых чисел найти сумму всех положительных элементов, затем найти где в заданной последовательности находятся максимальный и минимальный элемент и вычислить произведение чисел, расположенных между ними. Также известно, что минимальный и максимальный элемент встречаются в заданном множестве чисел только один раз. Учитель также просит поменять в последовательности минимальный и максимальный элементы местами. Поскольку задач такого рода учитель дал Пете около ста, то Петя как сильный программист смог написать программу, которая по заданному набору чисел самостоятельно находит решение. А Вам слабо?

INPUT.TXT OUTPUT.TXT
1 5 -7 5 -1 3 9 17 -15 9 5 -1 3 –7
2 8 3 14 -9 4 -5 1 -12 4 26 180 3 -12 -9 4 -5 1 14 4
3 10 -5 1 2 3 4 5 6 7 8 -3 36 5040 8 1 2 3 4 5 6 7 -5 -3

Входные данные: В первой строке входного файла INPUT.TXT записано единственное число N – количество элементов массива. Вторая строка содержит N целых чисел, представляющих заданный массив. Все элементы массива разделены пробелом. Каждое из чисел во входном файле не превышает 102 по абсолютной величине.

Выходные данные: В первую строку выходного файла OUTPUT.TXT нужно вывести два числа, разделенных пробелом: сумму положительных элементов и произведение чисел, расположенных между минимальным и максимальным элементами. Значения суммы и произведения не превышают по модулю 3*104. Во второй строке – последовательность, где минимальный и максимальный элемент поменялись местами.

 4. СБОР ЧЕРНИКИ (acmp.ru).В фермерском хозяйстве в Карелии выращивают чернику. Она растет на круглой грядке, причем кусты высажены только по окружности. Таким образом, у каждого куста есть ровно два соседних. Всего на грядке растет N кустов.

Эти кусты обладают разной урожайностью, поэтому ко времени сбора на них выросло различное число ягод – на i-ом кусте выросло ai ягод.

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

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

input.txt output.txt
1 4 1 2 3 4 9
2 5 4 2 1 35 12

Входные данные: Первая строка входного файла input.txtсодержит целое число N (3 <= N <= 1000) – количество кустов черники. Вторая строка содержит N целых положительных чисел a1, a2, ..., aN – число ягод черники, растущее на соответствующем кусте. Все ai не превосходят 1000.

Выходные данные: В выходной файл output.txtвыведите ответ на задачу.

НАЛОГИ (acmp.ru).

input.txt output.txt
1 1 1 1 1
2 2 1 2 3 2 2
3 3 100 1 50 0 100 3 3

В некотором государстве действует N фирм, конкурирующих между собой. У каждой фирмы есть некоторая прибыль в год, равная V[i] американских рублей. У царя есть любимые фирмы, а есть нелюбимые. Соответственно, налог для всех фирм разный и назначается царем в индивидуальном порядке. Налог на i-ую фирму равен p[i] процентов.

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

Входные данные: Во входном файле input.txtсначала записано число N - число фирм (0 < N ≤ 100). Далее идет N целых неотрицательных чисел, не превышающих 154 - доходы фирм, а затем еще N целых чисел от 0 до 100 - налоги фирм в процентах.

Выходные данные: В выходной файл output.txtвыведите одно число - номер фирмы, от которой государство получает наибольший налог. Если таких фирм несколько, выведите фирму с наименьшим номером.

 


Дата добавления: 2019-01-14; просмотров: 492; Мы поможем в написании вашей работы!

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




Мы поможем в написании ваших работ!