[英]How can I use a variable defined in main in another function? C
[英]How can I use the same user defined function for matrix in C?
我需要在C中使用相同的用戶定義函數,以便在C中添加和減去矩陣。
這應該是我需要聲明的代碼
void matrixAddSub(int arrayone[10][10], int arraytwo[10][10], int rows, int colums);
現在我要聲明兩個功能
void matrixAdd(int arrayone[10][10], int arraytwo[10][10], int rows, int colums);
void matrixSub(int arrayone[10][10], int arraytwo[10][10], int rows, int colums);
當我調試代碼時,它可以工作,但是我需要減少輸入的代碼量。 這是我的代碼定義。
void matrixAdd(int arrayone[10][10], int arraytwo[10][10], int rows, int colums){
int i, j;
int sumM[10][10];
for (i = 0; i < rows; i++){
for (j = 0; j < colums; j++){
sumM[i][j] = arrayone[i][j] + arraytwo[i][j];
printf("\t%d", sumM[i][j]);
}
printf("\n");
}
}
void matrixSub(int arrayone[10][10], int arraytwo[10][10], int rows, int colums){
int i, j;
int sumM[10][10];
for (i = 0; i < rows; i++){
for (j = 0; j < colums; j++){
sumM[i][j] = arrayone[i][j] - arraytwo[i][j];
printf("\t%d", sumM[i][j]);
}
printf("\n");
}
}
UPDATE
dasblinkenlight以下是我對您的建議的最終看法:
在主函數中聲明int add = 1; int sub = -1;
//user defined functions declaration
void matrixAddSub(int arrayone[10][10], int arraytwo[10][10], int rows, int colums, int mul);
//user defined function definition
void matrixAddSub(int arrayone[10][10], int arraytwo[10][10], int rows, int colums, int mul){
int i, j;
int sumM[10][10];
int scaM[10][10];
for (i = 0; i < rows; i++){
for (j = 0; j < colums; j++){
scaM[i][j] = mul * arraytwo[i][j];
}
}
for (i = 0; i < rows; i++){
for (j = 0; j < colums; j++){
sumM[i][j] = arrayone[i][j] + scaM[i][j];
printf("\t%d", sumM[i][j]);
}
printf("\n");
}
}
考慮:
-1
。 使用這兩個事實來統一加法和減法。 編寫以下函數:
static void matrixAddOrSubtract(
int arrayone[10][10]
, int arraytwo[10][10]
, size_t rows
, size_t columns
, int mul); // Multiply arraytwo[i][j] by mul before adding to arrayone[i][j]
現在,您的兩個函數都可以重寫為matrixAddOrSubtract
的單行調用:
void matrixAdd(int arrayone[10][10], int arraytwo[10][10], size_t rows, size_t columns) {
matrixAddOrSubtract(arrayone, arraytwo, rows, columns, 1);
}
void matrixSub(int arrayone[10][10], int arraytwo[10][10], size_t rows, size_t columns) {
matrixAddOrSubtract(arrayone, arraytwo, rows, columns, -1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.