
Для получения корня между
и
n = 1.

nh = A div C - количество квадратов умещающихся по-вертикали
nw = B div C - количество квадратов умещающихся по-горизонтали
n = nh * nw = общее количество квадратов.
Sr = A * B - 2*C*C
Код:
using System;namespace ThisAnswerIsNotMine { class Program { private static void Eq(double a) { var x = Math.Atan(1 / (Math.Exp(a) + 1)) + Math.PI; Console.WriteLine($"Для a = {a}, x = {x}"); } private static void Squares(int A, int B, int C) { int nh = A / C; int nw = B / C; int n = nh * nw; int Sr = A * B - 2*C*C; Console.WriteLine($"Количество квадратов со стороной {C} в прямоугольнике размером {A}x{B} равно: {n}"); Console.WriteLine($"Площадь оставшегося куска {Sr}"); } private static void Main() { Eq(double.Parse(Console.ReadLine()!)); Squares(int.Parse(Console.ReadLine()!), int.Parse(Console.ReadLine()!), int.Parse(Console.ReadLine()!)); } }}
ответ:Для начала в onCreate() уберите эту строку:
chatContainer.clear()
Нет смысла чистить только созданный пустой список. Дальше я бы вам советовал следующим образом. Для начала при объявлении адаптера не нужно сразу ему передавать список:
lateinit var adapter: RecyclerChatAdapter
Дальше как только ваш список заполнен вы это проверяете в цикле и инициализируете адаптер:
when {
documentSnapshot != null -> {
for (dc in documentSnapshot.documentChanges) {
when (dc.type) {
DocumentChange.Type.ADDED -> {
val chat = dc.document.toObject(Chat::class.java)
chatContainer.add(chat) // Добавление данных в Recycler
if(chatContainer.size == documentSnapshot.documentChanges)
{
adapter = RecyclerChatAdapter(chatContainer)
}
}
}
}
}
}
и дальше сеттинг адаптера как и было у вас в вашем примере. Так же второй вариант как решить вашу проблему, но не уверен что получится, можно в цикле там где вы выводите сообщение в лог обновлять адаптер:
for (i in chatContainer) {
adapter.notifyDataSetChanged()
}