Advertisement
1_rinkana

Лабораторна робота No2

Sep 13th, 2023
1,155
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 5.20 KB | None | 0 0
  1. //Циганій Максим КН-2-1
  2. //Лабораторна робота No1
  3. package com.uni.lab_2_equation.screen
  4.  
  5. import androidx.compose.foundation.Image
  6. import androidx.compose.foundation.layout.Arrangement
  7. import androidx.compose.foundation.layout.Box
  8. import androidx.compose.foundation.layout.Column
  9. import androidx.compose.foundation.layout.Row
  10. import androidx.compose.foundation.layout.Spacer
  11. import androidx.compose.foundation.layout.fillMaxWidth
  12. import androidx.compose.foundation.layout.padding
  13. import androidx.compose.material3.Button
  14. import androidx.compose.material3.ExperimentalMaterial3Api
  15. import androidx.compose.material3.MaterialTheme
  16. import androidx.compose.material3.Scaffold
  17. import androidx.compose.material3.Text
  18. import androidx.compose.material3.TopAppBar
  19. import androidx.compose.material3.TopAppBarDefaults
  20. import androidx.compose.runtime.Composable
  21. import androidx.compose.runtime.getValue
  22. import androidx.compose.runtime.mutableFloatStateOf
  23. import androidx.compose.runtime.mutableStateOf
  24. import androidx.compose.runtime.remember
  25. import androidx.compose.runtime.setValue
  26. import androidx.compose.ui.Modifier
  27. import androidx.compose.ui.draw.shadow
  28. import androidx.compose.ui.graphics.Color
  29. import androidx.compose.ui.graphics.painter.Painter
  30. import androidx.compose.ui.res.painterResource
  31. import androidx.compose.ui.unit.dp
  32. import com.uni.lab_2_equation.R
  33. import kotlin.math.pow
  34. import kotlin.math.sqrt
  35.  
  36. //Головний екран
  37. @OptIn(ExperimentalMaterial3Api::class)
  38. @Composable
  39. fun EquationCalculateScreen() {
  40.     var isButtonClicked by remember { mutableStateOf(false) }
  41.     val painter: Painter = painterResource(R.drawable.equation)
  42.     var x by remember { mutableFloatStateOf(0f) }
  43.  
  44.     Scaffold(
  45.         //Верхня панель додатку
  46.         topBar = {
  47.             TopAppBar(
  48.                 //Текст панелі
  49.                 title = { Text(
  50.                     text = "Обчислити значення виразу",
  51.                     style = MaterialTheme.typography.titleLarge,
  52.                     color = Color.White,
  53.                 ) },
  54.                 //Колір панелі
  55.                 colors = TopAppBarDefaults.smallTopAppBarColors(
  56.                     containerColor = MaterialTheme.colorScheme.primary,
  57.                 ),
  58.                 //Добавив модифікатор з тінню
  59.                 modifier = Modifier
  60.                     .fillMaxWidth()
  61.                     .shadow(elevation = 4.dp),
  62.             )
  63.         },
  64.     ) { paddingValues ->
  65.         //Строрюэмо Column та вказуємо відступи
  66.         Column(
  67.             modifier = Modifier
  68.                 .padding(paddingValues)
  69.                 .padding(16.dp),
  70.         ) {
  71.             //Рядок з текстом
  72.             Row(
  73.                 modifier = Modifier.fillMaxWidth(),
  74.             ) {
  75.                 Text(
  76.                     modifier = Modifier.padding(16.dp),
  77.                     text = "Розрахувати значення х:",
  78.                 )
  79.             }
  80.             //Відступ
  81.             Spacer(modifier = Modifier.padding(8.dp))
  82.             //Рядок з зображенням рівняння
  83.             Row(
  84.                 modifier = Modifier
  85.                     .padding(16.dp),
  86.                 horizontalArrangement = Arrangement.Start,
  87.             ) {
  88.                 Image(
  89.                     modifier = Modifier,
  90.                     painter = painter,
  91.                     contentDescription = null,
  92.                 )
  93.             }
  94.             //Відступ
  95.             Spacer(modifier = Modifier.padding(16.dp))
  96.             //Рядок з кнопкою
  97.             Row(
  98.                 modifier = Modifier
  99.                     .fillMaxWidth()
  100.                     .padding(16.dp),
  101.                 horizontalArrangement = Arrangement.Center,
  102.             ) {
  103.                 //Кнопка для обчислення та виведення на екран результату
  104.                 Button(
  105.                     onClick = {
  106.                         x = calculateX()
  107.                         isButtonClicked = true
  108.                     },
  109.                     modifier = Modifier,
  110.                 ) {
  111.                     Text("Обчислити")
  112.                 }
  113.             }
  114.  
  115.             //При натисканні на кнопку зявляється текст з результатом
  116.             if (isButtonClicked) {
  117.                 Row(
  118.                     modifier = Modifier
  119.                         .fillMaxWidth()
  120.                         .padding(16.dp),
  121.                 ) {
  122.                     Box(modifier = Modifier) {
  123.                         Text("Результат дорівнює: $x")
  124.                     }
  125.                 }
  126.             }
  127.         }
  128.     }
  129. }
  130.  
  131. //Функція розрахунку рівняння
  132. fun calculateX(): Float {
  133.     return formula(a = 6f, b = 64f, c = 3f) +
  134.         formula(a = 4f, b = 44f, c = 8f) +
  135.         formula(a = 5f, b = 36f, c = 2f)
  136. }
  137. //Функція розрахунку виразу
  138. fun formula(a: Float, b: Float, c: Float): Float {
  139.     return a * sqrt(b) / c.pow(2)
  140. }
  141.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement