Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Циганій Максим КН-2-1
- //Лабораторна робота No1
- package com.uni.lab_1_square.screen
- import androidx.compose.foundation.layout.Arrangement
- import androidx.compose.foundation.layout.Box
- import androidx.compose.foundation.layout.Column
- import androidx.compose.foundation.layout.Row
- import androidx.compose.foundation.layout.Spacer
- import androidx.compose.foundation.layout.fillMaxSize
- import androidx.compose.foundation.layout.fillMaxWidth
- import androidx.compose.foundation.layout.padding
- import androidx.compose.foundation.text.KeyboardOptions
- import androidx.compose.material3.Button
- import androidx.compose.material3.ExperimentalMaterial3Api
- import androidx.compose.material3.OutlinedTextField
- import androidx.compose.material3.Scaffold
- import androidx.compose.material3.Text
- import androidx.compose.runtime.Composable
- import androidx.compose.runtime.getValue
- import androidx.compose.runtime.mutableStateOf
- import androidx.compose.runtime.remember
- import androidx.compose.runtime.setValue
- import androidx.compose.ui.Alignment
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.text.input.KeyboardType
- import androidx.compose.ui.unit.dp
- import kotlin.math.sqrt
- //Головний екран
- @OptIn(ExperimentalMaterial3Api::class)
- @Composable
- fun SquareCalculatorScreen() {
- var isButtonClicked by remember { mutableStateOf(false) }
- var a by remember { mutableStateOf("") }
- var b by remember { mutableStateOf("") }
- var c by remember { mutableStateOf("") }
- var square by remember { mutableStateOf("") }
- Scaffold { paddingValues ->
- //Створюємо потрібні відступи та вказуємо, що всі айтеми повинні бути по середині
- Column(
- modifier = Modifier.fillMaxSize()
- .padding(paddingValues)
- .padding(16.dp),
- verticalArrangement = Arrangement.Top,
- horizontalAlignment = Alignment.CenterHorizontally,
- ) {
- //Відступ
- Spacer(modifier = Modifier.padding(32.dp))
- //поле для вводу данних
- OutlinedTextField(
- value = a,
- onValueChange = { new ->
- a = new
- isButtonClicked = false
- },
- modifier = Modifier.align(Alignment.CenterHorizontally),
- label = { Text(text = "a =") },
- keyboardOptions = KeyboardOptions.Default.copy(
- keyboardType = KeyboardType.Number
- ),
- singleLine = true,
- )
- Spacer(modifier = Modifier.padding(16.dp))
- OutlinedTextField(
- value = b,
- onValueChange = { new ->
- b = new
- isButtonClicked = false
- },
- modifier = Modifier.align(Alignment.CenterHorizontally),
- label = { Text(text = "b =") },
- keyboardOptions = KeyboardOptions.Default.copy(
- keyboardType = KeyboardType.Number
- ),
- singleLine = true,
- )
- Spacer(modifier = Modifier.padding(16.dp))
- OutlinedTextField(
- value = c,
- onValueChange = { new ->
- c = new
- isButtonClicked = false
- },
- modifier = Modifier.align(Alignment.CenterHorizontally),
- label = { Text(text = "c =") },
- keyboardOptions = KeyboardOptions.Default.copy(
- keyboardType = KeyboardType.Number
- ),
- singleLine = true,
- )
- Spacer(modifier = Modifier.padding(32.dp))
- //Кнопка для обчислення та виведення на екран результату
- Button(
- onClick = {
- if (a.isNotEmpty() && b.isNotEmpty() && c.isNotEmpty()) {
- square = calculate(a.toFloat(), b.toFloat(), c.toFloat()).toString()
- isButtonClicked = true
- }
- },
- modifier = Modifier,
- ) {
- Text("Обчислити")
- }
- //При натисканні на кнопку з'являється текст з результатом
- if (isButtonClicked) {
- Row(
- modifier = Modifier
- .fillMaxWidth()
- .padding(16.dp),
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.Center,
- ) {
- Box(modifier = Modifier) {
- Text("Результат дорівнює: $square")
- }
- }
- }
- }
- }
- }
- //Функція калькулятору площі
- fun calculate(a: Float, b: Float, c: Float): Float {
- val p = (a + b + c) / 2
- return sqrt(p * (p - a) * (p - b) * (p - c))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement