Школа программиста

1/20/2025, 12:05:56 PM 

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Массив - это упорядоченная совокупность переменных, объединенных общим типом и именем. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Каждый элемент массива определяется именем, совпадающим с именем массива, а также индексом. Индекс - это величина, характеризующая положение элемента в массиве.

В языке C++ нумерация элементов массива начинается с нуля, таким образом номер последнего элемента массива соответствует значению n-1, где n – количество элементов массива. Приведем несколько примеров описания массива в языке C++:

//средняя температура в январе
int t[31];    //t[0]..t[30]
//курс доллара в течении недели
double d[7];  //d[0]..d[6]
//имена пяти друзей
string f[5];  //f[0]..f[4]
 
int main(){
  t[29]=-14;
  d[5]=65.24;
  f[3]="Ivan";
  return 0;
}

К каждому элементу массива можно обращаться отдельно так же как к обычной переменной установленного типа. Элемент массива с номером i имеет обозначение a[i]. Благодаря такой записи данные можно обрабатывать массово в цикле. Входные данные задачи, которые необходимо хранить в массиве, обычно задаются следующим образом: сначала идет число n - количество элементов массива, а за ним следуют отделенные пробелом значения n элементов массива. Реализация чтения n элементов массива и их вывод может выглядеть следующим образом:

//описание массива
int a[100], n;
//чтение массива
cin >> n;
for(int i=0; i<n; i++)
  cin >> a[i];
//вывод массива
for(int i=0; i<n; i++)
  cout << a[i] << ' ';

Приведем пример программы, которая заполняет массив случайными числами и определяет максимальный и минимальный элементы, а также индексы этих элементов:

#include <bits/stdc++.h>
 
using namespace std;
 
int i, n, imax, imin, a[100];
 
int main(){
  srand(time(0));
 
  cout << "N="; cin >> n; 
  for(i=0; i<n; i++){
    a[i] = rand()%100;
    cout << "A[" << i << "]=" << a[i] << endl;
  }
 
  imax=imin=0;
  for(i=1; i<n; i++){
    if(a[i]<a[imin]) imin=i;
    if(a[i]>a[imax]) imax=i;
  }
   
  cout << "\nMin=" << a[imin] << "(" << imin << ")";
  cout << "\nMax=" << a[imax] << "(" << imax << ")\n\n";
   
  return 0;
}
N=10
A[0]=15
A[1]=80
A[2]=11
A[3]=29
A[4]=33
A[5]=41
A[6]=92
A[7]=83
A[8]=7
A[9]=81

Min=7(8)
Max=92(6)

Решение задач с массивами часто связано с чтением и выводом большого количества данных, что может вызывать проблемы с временем выполнения программы. Для ускорения работы операторов cin и cout можно использовать следующие команды:

ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

При использовании данных команд пропадает синхронизация потоков ввода-вывода операторов cin и cout с командами scanf и printf. Поэтому в данном случае данные наборы команд не рекомендуется одновременно использовать.

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 ЕГЭ по информатике
 Тренировочные олимпиады
 Введение
 Условный оператор
 Операторы цикла
 Строковые типы данных
 Массивы
 Функции
 Сортировка
 Двумерные массивы
 Рекурсия
 Линейный поиск
 Преобразования и анализ данных
 Массивы структур
 A. Линейный поиск
 B. Максимальный элемент
 C. Контроперация
 D. Сбор черники
 E. Ближайшее число
 F. Налоги

Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru