Занятие 5. Справочник
Занятие 5. Справочник
Чтение последовательности, дано количество элементов
int N = in.nextInt(); //чтение количества элементов for (int i = 0; i < N; i++) { int t = in.nextInt(); //...здесь немедленная обработка t }
Чтение последовательности до нуля
int t = in.nextInt(); for (t != 0) //проверка на ограничитель { //...здесь немедленная обработка t int t = in.nextInt(); }Могут быть и более сложные ограничители. Например, два нуля подряд. Эта задача давалась в первом занятии. Решение можно посмотреть в разборе.
Сумма элементов
Заведем переменную s, проинициализируем ее нулем. И будем добавлять к ней очередной элемент:int N = in.nextInt(); //чтение количества элементов int s = 0; for (int i = 0; i < N; i++) { int t = in.nextInt(); s += t; }(здесь и далее мы будем иллюстрировать все первым способом чтения)
Максимум из всех
int N = in.nextInt(); //чтение количества элементов int max = in.nextInt(); for (int i = 0; i < N; i++) { int t = in.nextInt(); if (t > max) max = t; }
Максимум из четных двумя циклами
int N = in.nextInt(); //чтение количества элементов int max = in.nextInt(); int i = 0; while (max % 2 != 0) { max = in.nextInt(); i++; }// на выходе из этого цикла в max первое четное число for (; i < N; i++)//начальные условия цикла можно не указывать { int t = in.nextInt(); if (t % 2 == 0 && t > max) max = t; //только среди четных! }
Второй максимум с повторениями
int N = in.nextInt(); //чтение количества элементов int max1 = in.nextInt(); int max2 = in.nextInt(); if (max1 < max2) //упорядочиваем { int t = max1; max1 = max2 max2 = t; } for (int i = 0; i < N - 2; i++){ int t = in.nextInt(); if (t > max1) //”проталкиваем” { max2 = max1; max1 = t } else if (t > max2) //просто меняем max2 { max2 = t; } }
Второй максимум без повторений
int N = in.nextInt(); //чтение количества элементов int max1 = in.nextInt(); int max2 = in.nextInt(); int k = 2;//счетчик прочитанных элементов до основного цикла while(max2 == max1) { max2 = in.nextInt(); k++; } if (max1 < max2) //упорядочиваем { int t = max1; max1 = max2 max2 = t; } for (int i = 0; i < N - k; i++){ int t = in.nextInt(); if (t > max1) //”проталкиваем” { max2 = max1; max1 = t } else if (t > max2 && t != max1) //просто меняем max2 { max2 = t; } }