Занятие 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;
}
}