Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_7(8 массивы).rtf
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
83.46 Кб
Скачать

Ввод и вывод массива

Элементы числового массива нужно вводить и выводить поэлементно в цикле.

#define N 20

float x[N];

int n,

i; // индекс элемента

scanf(“%d”,&n);

for(i=0; i< n; i++) // цикл ввода элементов массива

scanf(“%f”, &x[i]);

Для ввода и вывода символьного массива (строки символов) есть специальные функции gets() и puts().

Функция gets() вводит с клавиатуры строку, заменяя символ «перевод строки» нулевым байтом (нуль - символом).

Функция puts() выводит на экран строку, завершающуюся нуль-символом и перемещает курсор на новую строку. Например,

char st[80];

gets(st); puts(st);

Если в условии задачи даны переменные с индексами, для них не обязательно использовать массив. Массив нужен для входных или выходных данных, если их элементы обрабатываются неоднократно или не в том порядке, в котором вводятся или выводятся. В этих случаях приходится одновременно хранить в памяти все элементы в виде массива.

Рассмотрим задачи и решим, в каких задачах необходимы массивы для хранения данных:

11. Дано целое n>0 и последовательность вещественных чисел x1, x2,…, xn. Написать программу

а) для определения суммы и количества положительных элементов последовательности;

б) для определения количества элементов последовательности больших первого элемента x1;

в) для определения количества элементов последовательности больших последнего элемента xn.

12. Дано целое n>0 и последовательность вещественных чисел x1, x2,…, xn. Написать программу

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

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

13. Даны значения температур каждого из n дней месяца ( n ≤ 31).

Написать программу

а) определения среднемесячной температуры;

б) определения количества дней, когда температура была выше среднемесячной.

14. Дан текст, продолжающийся до конца файла.

Написать программы для решения следующих задач.

а) Переставить символы текста в обратном порядке.

б) Подсчитать количество слов, содержащих букву ‘a’.

в) Вывести слова, содержащие букву ‘a’.

Для задач 11в, 12б, 13б, 14а, 14в необходимо использование массивов, в остальных задачах не требуются массивы.

Задача 11. Дано целое n>0 и вещественные x1, x2, ..., xn . Составить программу подсчета количества чисел больших первого числа - 11б (больших последнего числа – 11в).

Тест 11б. Вход: 4 3 12 7 5 Тест 11в. Вход: 4 3 12 7 5

Выход: k = 3 Выход: k = 2

/* Программа 11б. */ /* Программа 11в. */

#include <stdio.h> #include <stdio.h>

#define N 20

void main () void main ()

{ int n, i, k=0; { int n, i, k=0;

float m1, m; float m[N];

scanf (“%d”, &n); scanf (“%d”, &n);

scanf (“%f”, &m1);

for (i = 1; i < n; i++) for (i = 0; i < n; i++)

{ scanf (“%f”, &m); scanf (“%f”, &m[i]);

if (m > m1) k++; for (i=0; i < n-1; i++)

} if (m[i] > m[n-1]) k++;

printf (“k=%d\n”, k); printf (“k=%d\n”, k);

} }

Пояснения к программе.

1. Для решения задачи 11б достаточно хранить первое число в переменной m1, а остальные числа поочередно вводить в переменную m и сравнивать с величиной m1.

2. Для решения задачи 11в требуется хранить все числа в виде массива. Сначала данные в цикле вводятся в массив m, затем в следующем цикле каждый элемент массива сравнивается с последним элементом.

Задача 13. Даны значения температур каждого из n дней месяца (n ≤ 31). Написать программу для решения следующей задачи. Определить среднюю температуру за месяц. Вывести дни, когда температура была выше средней, и количество таких дней.

/* Программа 13 Средняя температура */

#include <stdio.h>

#define N 31

main ()

{ int n,

i,

k=0;

float t[N],

s=0;

scanf (“%d”, &n);

for (i = 0; i < n; i++) // цикл ввода значений температур

{ scanf (“%f”, &t[i]);

s = s + t[i]; // с вычислением суммарного значения

}

s = s/n; // вычисление среднего значения температур

printf (“Средняя температура =%.1f\n”, s);

printf (“\n Дни с температурой выше средней:\n”);

for (i = 0; i < n; i++)

if (t[i] > s)

{ printf (“%d ”, i+1); k++; }

printf (“\n Количество дней = %d”, k);

return 0;

}

Пояснения к программе.

1. Определяется массив t размером до 31 элемента (по количеству дней в самом длинном месяце). Количество используемых элементов массива задается вводом значения величины n.

2. В первом цикле вводятся элементы массива t – значения температур каждого дня месяца и вычисляется суммарная температура за месяц.

3. После ввода температур и вычисления суммарной температуры, определяется средняя температура за месяц.

4. Во втором цикле температура каждого из дней месяца проверяется на отклонение от средней температуры.

Задача 14а. Переставить символы текста в обратном порядке.

Тест. Вход: ПИРАМИДА Выход: АДИМАРИП

0 1 2 3 4 5 6 7 - индексы символов в массиве

/* перестановка символов текста в обратном порядке */

/* фрагмент программы */

char s, t[100];

int i, j, n;

gets (t); /* ввод строки */

n= strlen(t); /*определение длины строки */

for (i=0, j=n-1; i<j; i++, j--)

{ s=t[i]; t[i]=t[j]; t[j]=s; } /* Обмен t[i] <--> t[j] */

Пояснения к программе.

1. Строка просматривается с двух концов: от начала до середины строки с увеличением индекса символа i, от конца до середины строки с уменьшением индекса j, и выполняется обмен символа t[i] с символом t[j] через дополнительную переменную s.

Для приведенного теста цикл повторяется 4 раза до середины строки, с изменением i от 0 до 3, а j - от 7 до 4.

Контрольные вопросы и упражнения.

1. Объясните понятие размерности массива.

2. Составьте описания данных для представления целочисленного вектора длиной до 25 чисел и вещественной матрицы на 10 строк и 10 столбцов.

3. Запишите фрагмент программы для ввода элементов целочисленной матрицы размером 20 строк и 30 столбцов.

4. Запишите функцию ввода строки символов. Объясните, какой символ сохраняется как признак конца строки.

5. Дано натуральное число N>0 и массив А из N различных целых чисел. Напишите программу (или фрагмент программы) для решения следующей задачи. Переставить местами наибольший и наименьший элементы заданного массива и напечатать полученный массив.

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

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

8. Дан текст, длиной не более 80 символов. Напишите программу определения, симметричен ли текст.

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. 8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]