Чтение онлайн

на главную - закладки

Жанры

Язык Си - руководство для начинающих

Д. МАРТИН

Шрифт:

 

РИС. 8.6. Массивы символов и строки

Числа, используемые для идентификации элементов массива, называются "подстрочными индексами" или просто "индексами". Индексами должны быть целые числа, и, как уже упоминалось, индексирование начинается с 0. Элементы массива размешаются в памяти последовательно,

друг за другом, как показано на рис. 8.6.

 

РИС. 8.7. Размещение в памяти массивов с элементами типа char и int

Существует огромное количество возможностей применения массивов. Ниже приводится сравнительно простой пример. Предположим, вы хотите написать программу, осуществляющую ввод 10 различных результатов спортивной игры, которые будут обрабатываться позже. Используя понятие массива, вы сможете избежать придумывания 10 различных имен переменных - по одной для каждого счета. Кроме того, для чтения данных вы можете воспользоваться циклом for:

/* ввод счета*/

main

{

int i, score[10];

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

scanf(" %d", &a[i]); /* ввод десяти результатов*/

printf("Введены следующие результаты :\n" );

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

printf(" %5d", a[i]); /* проверка правильности ввода*/

printf("\n");

 }

В понятие хорошего стиля программирования входит эхо-печать только что введенных величин. Она даст уверенность, что в программе будут обрабатываться те данные, для которых она предназначена.

Применяемый здесь способ гораздо более удобен, чем использование 10 различных операторов scanf и 10 отдельных операторов printf для ввода и проверки десяти результатов, определяющих число набранных очков. Цикл for обеспечивает очень простои и удобный способ использования индексов массивов.

Какого типа операции могли бы мы выполнить над этими данными? Мы могли бы найти их среднее, величину стандартного отклонения (мы знаем даже, как это сделать) и максимальное значение счета, а также произвести их сортировку в некотором порядке. Займемся двумя простейшими задачами: нахождением среднего и максимального результатов.

Чтобы вычислить среднее, мы можем добавить к нашей программе приведенный ниже фрагмент:

int sum, average;

for(i = 0, sum = 0; i <= 9; i++) /* две инициализации*/

sum + = a[i]; /* суммирование элементов массива */

average = sum/10; /*классический

метод усреднения */

printf(" Средний результат равен %d.\n", average);

Для нахождения максимального результата к программе можно добавить следующий фрагмент:

int highest;

for(highest = а[0], i = 1; i <= 9; i++)

if(a[i] > highest) highest = a[i];

printf ("Максимальный результат равен %d.\n", highest);

Здесь мы начинаем с того, что полагаем переменную highest равной величине а[0]. Затем производится сравнение значения highest с каждым элементом массива. Когда обнаруживается, что некоторая величина больше текущего значения переменной highest, ей присваивается эта новая большая величина.

Теперь объединим все части программы. На псевдокоде алгоритм ее работы можно записать следующим образом:

ввод результатов.

эхо-печать результатов.

вычисление и печать среднего значения.

вычисление и печать максимального значения.

Кроме того, мы несколько обобщим нашу программу:

/* результаты*/

#define NUM 10

main

{

int i, sum, average, highest, score [NUM];

 printf(" Укажите10 результатов. \n");

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

scanf(" %d" , &scorc[i]); /* ввод десяти результатов */

printf(" Введены следующие результаты:\n");

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

printf("%5d", score[i]);/* проверка правильности ввода*/

printf("\n");

tor(i = 0, sum = 0; i < NUM; i++)

sum + = score[i]; /* суммирование элементов массива */

average = sum/NUM; /* классический метод усреднения */

printf(" Средний результат равен %d.\n", average);

for(highest = score[0], i = 1; i < NUM; i++)

if(score[i] > highest) /* какая из величин больше*/

highest = score[i];

printf(" Максимальный результат равен %d.\n", highest);

Поделиться:
Популярные книги

Товарищ "Чума" 5

lanpirot
5. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 5

Страж Кодекса. Книга IX

Романов Илья Николаевич
9. КО: Страж Кодекса
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Страж Кодекса. Книга IX

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Избранный. Книга 3

Маханенко Василий Михайлович
3. Избранный
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Избранный. Книга 3

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

На границе империй. Том 2

INDIGO
2. Фортуна дама переменчивая
Фантастика:
космическая фантастика
7.35
рейтинг книги
На границе империй. Том 2

Болотник

Панченко Андрей Алексеевич
1. Болотник
Фантастика:
попаданцы
альтернативная история
6.50
рейтинг книги
Болотник

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Толян и его команда

Иванов Дмитрий
6. Девяностые
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Толян и его команда

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Повелитель механического легиона. Том III

Лисицин Евгений
3. Повелитель механического легиона
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том III

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10