import React, { useState } from
'react'
;
import { View,
Text,
TextInput,
StyleSheet,
ScrollView,
TouchableOpacity }
from
'react-native'
;
const TransposeMatrixCalculator = () => {
const [matrixSize, setMatrixSize] = useState(
''
);
const [matrixData, setMatrixData] = useState([]);
const [transposedMatrix, setTransposedMatrix] = useState([]);
const generateMatrix = () => {
const size = parseInt(matrixSize);
const newMatrix =
Array.from({ length: size },
() => Array(size).fill(0));
setMatrixData(newMatrix);
setTransposedMatrix([]);
};
const transposeMatrix = () => {
const transposed = matrixData[0].map((_, index) =>
matrixData.map(row => row[index]));
setTransposedMatrix(transposed);
};
const renderMatrix = (data) => {
return
(
<ScrollView horizontal>
<View style={styles.matrix}>
{data.map((row, rowIndex) => (
<View key={rowIndex} style={styles.row}>
{row.map((cell, cellIndex) => (
<TextInput key={cellIndex}
style={styles.input}
keyboardType=
"numeric"
onChangeText={(text) =>
updateMatrixCell(rowIndex, cellIndex, text)}
value={cell.toString()}/>
))}
</View>
))}
</View>
</ScrollView>
);
};
const updateMatrixCell = (row, col, value) => {
const updatedMatrix = matrixData.map((rowData, i) =>
i === row ? rowData.map((cell, j) =>
(j === col ? parseInt(value) || 0 : cell)) : rowData
);
setMatrixData(updatedMatrix);
};
return
(
<View style={styles.container}>
<Text style={styles.heading}>
Transpose Square Matrix Calculator
</Text>
<View style={styles.inputContainer}>
<Text>Matrix Size:</Text>
<TextInput style={styles.inputField}
keyboardType=
"numeric"
value={matrixSize}
onChangeText={(text) => setMatrixSize(text)}/>
</View>
<TouchableOpacity style={styles.button} onPress={generateMatrix}>
<Text>Generate Matrix</Text>
</TouchableOpacity>
<View style={styles.matrixContainer}>
{matrixData.length > 0 && renderMatrix(matrixData)}
</View>
<TouchableOpacity style={styles.button} onPress={transposeMatrix}>
<Text>Transpose Matrix</Text>
</TouchableOpacity>
<View style={styles.matrixContainer}>
{transposedMatrix.length > 0 && renderMatrix(transposedMatrix)}
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent:
'center'
,
alignItems:
'center'
,
padding: 20,
},
heading: {
fontSize: 24,
marginBottom: 20,
},
inputContainer: {
flexDirection:
'row'
,
alignItems:
'center'
,
marginBottom: 10,
},
inputField: {
borderWidth: 1,
borderColor:
'black'
,
padding: 8,
width: 50,
},
button: {
alignItems:
'center'
,
backgroundColor:
'#4caf50'
,
padding: 10,
marginVertical: 10,
},
matrixContainer: {
borderWidth: 1,
borderColor:
'black'
,
marginBottom: 10,
},
row: {
flexDirection:
'row'
,
},
input: {
borderWidth: 1,
borderColor:
'black'
,
padding: 8,
width: 50,
},
});
export
default
TransposeMatrixCalculator;