Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Циганій Максим КН-2-1
- //Лабораторна робота No1
- package com.uni.lab_2_equation.screen
- import androidx.compose.foundation.Image
- 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.fillMaxWidth
- import androidx.compose.foundation.layout.padding
- import androidx.compose.material3.Button
- import androidx.compose.material3.ExperimentalMaterial3Api
- import androidx.compose.material3.MaterialTheme
- import androidx.compose.material3.Scaffold
- import androidx.compose.material3.Text
- import androidx.compose.material3.TopAppBar
- import androidx.compose.material3.TopAppBarDefaults
- import androidx.compose.runtime.Composable
- import androidx.compose.runtime.getValue
- import androidx.compose.runtime.mutableFloatStateOf
- import androidx.compose.runtime.mutableStateOf
- import androidx.compose.runtime.remember
- import androidx.compose.runtime.setValue
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.draw.shadow
- import androidx.compose.ui.graphics.Color
- import androidx.compose.ui.graphics.painter.Painter
- import androidx.compose.ui.res.painterResource
- import androidx.compose.ui.unit.dp
- import com.uni.lab_2_equation.R
- import kotlin.math.pow
- import kotlin.math.sqrt
- //Головний екран
- @OptIn(ExperimentalMaterial3Api::class)
- @Composable
- fun EquationCalculateScreen() {
- var isButtonClicked by remember { mutableStateOf(false) }
- val painter: Painter = painterResource(R.drawable.equation)
- var x by remember { mutableFloatStateOf(0f) }
- Scaffold(
- //Верхня панель додатку
- topBar = {
- TopAppBar(
- //Текст панелі
- title = { Text(
- text = "Обчислити значення виразу",
- style = MaterialTheme.typography.titleLarge,
- color = Color.White,
- ) },
- //Колір панелі
- colors = TopAppBarDefaults.smallTopAppBarColors(
- containerColor = MaterialTheme.colorScheme.primary,
- ),
- //Добавив модифікатор з тінню
- modifier = Modifier
- .fillMaxWidth()
- .shadow(elevation = 4.dp),
- )
- },
- ) { paddingValues ->
- //Строрюэмо Column та вказуємо відступи
- Column(
- modifier = Modifier
- .padding(paddingValues)
- .padding(16.dp),
- ) {
- //Рядок з текстом
- Row(
- modifier = Modifier.fillMaxWidth(),
- ) {
- Text(
- modifier = Modifier.padding(16.dp),
- text = "Розрахувати значення х:",
- )
- }
- //Відступ
- Spacer(modifier = Modifier.padding(8.dp))
- //Рядок з зображенням рівняння
- Row(
- modifier = Modifier
- .padding(16.dp),
- horizontalArrangement = Arrangement.Start,
- ) {
- Image(
- modifier = Modifier,
- painter = painter,
- contentDescription = null,
- )
- }
- //Відступ
- Spacer(modifier = Modifier.padding(16.dp))
- //Рядок з кнопкою
- Row(
- modifier = Modifier
- .fillMaxWidth()
- .padding(16.dp),
- horizontalArrangement = Arrangement.Center,
- ) {
- //Кнопка для обчислення та виведення на екран результату
- Button(
- onClick = {
- x = calculateX()
- isButtonClicked = true
- },
- modifier = Modifier,
- ) {
- Text("Обчислити")
- }
- }
- //При натисканні на кнопку зявляється текст з результатом
- if (isButtonClicked) {
- Row(
- modifier = Modifier
- .fillMaxWidth()
- .padding(16.dp),
- ) {
- Box(modifier = Modifier) {
- Text("Результат дорівнює: $x")
- }
- }
- }
- }
- }
- }
- //Функція розрахунку рівняння
- fun calculateX(): Float {
- return formula(a = 6f, b = 64f, c = 3f) +
- formula(a = 4f, b = 44f, c = 8f) +
- formula(a = 5f, b = 36f, c = 2f)
- }
- //Функція розрахунку виразу
- fun formula(a: Float, b: Float, c: Float): Float {
- return a * sqrt(b) / c.pow(2)
- }
Advertisement
Advertisement