Advertisement
1_rinkana

Untitled

Sep 12th, 2023
1,205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 5.19 KB | None | 0 0
  1. //Циганій Максим КН-2-1
  2. //Лабораторна робота No1
  3. package com.uni.lab_1_square.screen
  4.  
  5. import androidx.compose.foundation.layout.Arrangement
  6. import androidx.compose.foundation.layout.Box
  7. import androidx.compose.foundation.layout.Column
  8. import androidx.compose.foundation.layout.Row
  9. import androidx.compose.foundation.layout.Spacer
  10. import androidx.compose.foundation.layout.fillMaxSize
  11. import androidx.compose.foundation.layout.fillMaxWidth
  12. import androidx.compose.foundation.layout.padding
  13. import androidx.compose.foundation.text.KeyboardOptions
  14. import androidx.compose.material3.Button
  15. import androidx.compose.material3.ExperimentalMaterial3Api
  16. import androidx.compose.material3.OutlinedTextField
  17. import androidx.compose.material3.Scaffold
  18. import androidx.compose.material3.Text
  19. import androidx.compose.runtime.Composable
  20. import androidx.compose.runtime.getValue
  21. import androidx.compose.runtime.mutableStateOf
  22. import androidx.compose.runtime.remember
  23. import androidx.compose.runtime.setValue
  24. import androidx.compose.ui.Alignment
  25. import androidx.compose.ui.Modifier
  26. import androidx.compose.ui.text.input.KeyboardType
  27. import androidx.compose.ui.unit.dp
  28. import kotlin.math.sqrt
  29.  
  30. //Головний екран
  31. @OptIn(ExperimentalMaterial3Api::class)
  32. @Composable
  33. fun SquareCalculatorScreen() {
  34.     var isButtonClicked by remember { mutableStateOf(false) }
  35.     var a by remember { mutableStateOf("") }
  36.     var b by remember { mutableStateOf("") }
  37.     var c by remember { mutableStateOf("") }
  38.     var square by remember { mutableStateOf("") }
  39.  
  40.     Scaffold { paddingValues ->
  41.         //Створюємо потрібні відступи та вказуємо, що всі айтеми повинні бути по середині
  42.         Column(
  43.             modifier = Modifier.fillMaxSize()
  44.                 .padding(paddingValues)
  45.                 .padding(16.dp),
  46.             verticalArrangement = Arrangement.Top,
  47.             horizontalAlignment = Alignment.CenterHorizontally,
  48.         ) {
  49.             //Відступ
  50.             Spacer(modifier = Modifier.padding(32.dp))
  51.             //поле для вводу данних
  52.             OutlinedTextField(
  53.                 value = a,
  54.                 onValueChange = { new ->
  55.                     a = new
  56.                     isButtonClicked = false
  57.                 },
  58.                 modifier = Modifier.align(Alignment.CenterHorizontally),
  59.                 label = { Text(text = "a =") },
  60.                 keyboardOptions = KeyboardOptions.Default.copy(
  61.                     keyboardType = KeyboardType.Number
  62.                 ),
  63.                 singleLine = true,
  64.             )
  65.  
  66.             Spacer(modifier = Modifier.padding(16.dp))
  67.  
  68.             OutlinedTextField(
  69.                 value = b,
  70.                 onValueChange = { new ->
  71.                     b = new
  72.                     isButtonClicked = false
  73.                 },
  74.                 modifier = Modifier.align(Alignment.CenterHorizontally),
  75.                 label = { Text(text = "b =") },
  76.                 keyboardOptions = KeyboardOptions.Default.copy(
  77.                     keyboardType = KeyboardType.Number
  78.                 ),
  79.                 singleLine = true,
  80.             )
  81.  
  82.             Spacer(modifier = Modifier.padding(16.dp))
  83.  
  84.             OutlinedTextField(
  85.                 value = c,
  86.                 onValueChange = { new ->
  87.                     c = new
  88.                     isButtonClicked = false
  89.                 },
  90.                 modifier = Modifier.align(Alignment.CenterHorizontally),
  91.                 label = { Text(text = "c =") },
  92.                 keyboardOptions = KeyboardOptions.Default.copy(
  93.                     keyboardType = KeyboardType.Number
  94.                 ),
  95.                 singleLine = true,
  96.             )
  97.  
  98.             Spacer(modifier = Modifier.padding(32.dp))
  99.             //Кнопка для обчислення та виведення на екран результату
  100.             Button(
  101.                 onClick = {
  102.                     if (a.isNotEmpty() && b.isNotEmpty() && c.isNotEmpty()) {
  103.                         square = calculate(a.toFloat(), b.toFloat(), c.toFloat()).toString()
  104.                         isButtonClicked = true
  105.                     }
  106.                 },
  107.                 modifier = Modifier,
  108.             ) {
  109.                 Text("Обчислити")
  110.             }
  111.             //При натисканні на кнопку з'являється текст з результатом
  112.             if (isButtonClicked) {
  113.                 Row(
  114.                     modifier = Modifier
  115.                         .fillMaxWidth()
  116.                         .padding(16.dp),
  117.                     verticalAlignment = Alignment.CenterVertically,
  118.                     horizontalArrangement = Arrangement.Center,
  119.                 ) {
  120.                     Box(modifier = Modifier) {
  121.                         Text("Результат дорівнює: $square")
  122.                     }
  123.                 }
  124.             }
  125.         }
  126.     }
  127. }
  128.  
  129. //Функція калькулятору площі
  130. fun calculate(a: Float, b: Float, c: Float): Float {
  131.     val p = (a + b + c) / 2
  132.     return sqrt(p * (p - a) * (p - b) * (p - c))
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement