(1) Utwórz interfejs kalkulatora arytmetycznego, rozmieszczając przyciski z cyframi oraz odpowiednie przyciski działań. Dodaj podstawową obsługę zdarzeń która pozwala na realizację operacji dodawania. Możesz w tym celu wykorzystać przykład poniżej. Przedyskutuj z koleżanką/kolegą metodologię rozmieszczania elementów interfejsu graficznego oraz sposób w jaki realizowana jest obsługa zdarzeń.

package com.tango.nuevo.app01
 
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableIntState
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.sp
 
 
class MainActivity : ComponentActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
 
        super.onCreate(savedInstanceState)
 
        setContent {
            Calc()
        }
 
    }
 
    @Composable
    fun Calc(){
 
        val s: MutableState<String> = remember{mutableStateOf("0")}
        val op: MutableState<Char> = remember{mutableStateOf('+')}
        val buf: MutableIntState = remember{mutableIntStateOf(0)}
 
 
        Column(
            modifier = Modifier.fillMaxSize(),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ){
 
            Row{
 
                Text(
                    modifier = Modifier.fillMaxWidth(0.5f),
                    text = s.value,
                    fontSize = 20.sp
                )
 
            }
 
            Row{
 
                Button(onClick = { if (s.value == "0") s.value = "1" else s.value += "1" }) {
 
                    Text(text = "1")
                }
 
                Button(onClick = {if(s.value == "0") s.value="2" else s.value+="2"}) {
 
                    Text( text="2" )
                }
 
                Button(onClick = {if(s.value == "0") s.value="3" else s.value+="3"}) {
 
                    Text( text="3" )
                }
 
                Button(onClick = {op.value='+'; buf.intValue = s.value.toInt(); s.value="0"}) {
 
                    Text( text="+" )
                }
 
            }
 
            Row{
 
                Button(onClick = {if(s.value == "0") s.value="4" else s.value+="4"}) {
 
                    Text( text="4" )
                }
 
                Button(onClick = {}) {
 
                    Text( text="" )
                }
 
 
                Button(onClick = {}) {
 
                    Text( text="" )
                }
 
                Button(onClick = {}) {
 
                    Text( text="" )
                }
 
            }
 
            Row{
 
                Button(onClick = {if(s.value == "0") s.value="7" else s.value+="7"}) {
 
                    Text( text="7" )
                }
 
                Button(onClick = {}) {
 
                    Text( text="" )
                }
 
 
                Button(onClick = {}) {
 
                    Text( text="" )
                }
 
                Button(onClick = {}) {
 
                    Text( text="" )
                }
 
            }
 
            Row{
 
                Button(onClick = {s.value="0" }) {
 
                    Text( text="C" )
                }
 
                Button(
 
                    onClick = {buf.intValue += s.value.toInt(); s.value = buf.intValue.toString()},
                    modifier = Modifier.fillMaxWidth(0.5f)
                ) 
                {
 
                    Text( text="=" )
                }
 
            }
        }
    }
}


(2) Wykorzystując poniższy szkielet MainActivity, napisz pełną implementację logiki kalkulatora (pozostałe działania, kropkę dziesiętną, pamięć, funkcje trygonometryczne, logarytmy i inne funkcjonalności które uznasz za stosowne).