0
這是一個矩陣M x N
整數。fgets正在通過
- 我要求自動填充或手動填充。
- 我選擇自動填充。
- 然後,我測試矩陣以查看其列(1)或行(0)是否是迴文(例如:
1 2 9 2 1
)。 - 我要求重新啓動或退出。
如果我重新啓動,矩陣自動填充,這就是我不明白爲什麼會發生,因爲fgets
是在內部,並應始終執行。
功能llenar_matriz
,管線4
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define COL 5
#define FIL 5
int reiniciar(void);
void llenar_matriz(int mat[ FIL ][ COL ]);
void imprimir_matriz(int mat[ FIL ][ COL ]);
int matriz_palindrome(int mat[ FIL ][ COL ], int tipo);
int main() {
do {
int mat[ FIL ][ COL ] = {0};
llenar_matriz(mat);
if (matriz_palindrome(mat, 1)) {
puts("Las columnas de la matriz son palindromos");
}
else {
puts("Las columnas de la matriz no son todas palindromos");
}
} while(reiniciar());
system("pause");
}
void imprimir_matriz(int mat[ FIL ][ COL ]) {
int i, j;
for(i = 0; i < FIL; i ++) {
for(j = 0; j < COL; j++) {
printf("%4d", mat[ i ][ j ]);
}
printf("\n");
}
}
void llenar_matriz(int mat[ FIL ][ COL ]) {
char rta[3];
int i, j;
printf("Desea llenar la matriz automaticamente? Si/No\n");
while(fgets(rta, 3, stdin) == NULL) {
fflush(stdin);
printf("Ocurrio un error al obtener su respuesta. Intente nuevamente.\n");
}
if(strcmp(rta, "No") == 0 | strcmp(rta, "no") == 0) {
for(i = 0; i < FIL; i++) {
for(j = 0; j < COL; j++) {
printf("Ingrese el valor de la posicion %d, %d\n", i+1, j+1);
while(scanf("%d", &mat[ i ][ j ]) == NULL) {
fflush(stdin);
puts("Hubo un error al obtener su respuesta. Intente nuevamente");
}
imprimir_matriz(mat);
}
}
}
else {
srand(time(NULL));
for(i = 0; i < FIL; i++) {
for(j = 0; j < COL; j++) {
mat[ i ][ j ] = rand() % 99 + 1;
}
}
imprimir_matriz(mat);
}
fflush(stdin);
}
int reiniciar(void) {
char rta[3];
int centinel = 0;
puts("Desea reiniciar la prueba? Si/No");
do{
while(fgets(rta, 3, stdin) == NULL) {
fflush(stdin);
printf("Ocurrio un error al obtener su respuesta. Intente nuevamente.\n");
}
if(strcmp(rta, "Si") == 0 | strcmp(rta, "si") == 0) {
return 1;
}
else {
if(strcmp(rta, "No") == 0 | strcmp(rta, "no") == 0) {
return 0;
}
else {
printf("Respuesta incorrecta. Intente nuevamente.\n");
centinel = 1;
}
}
fflush(stdin);
} while(centinel);
}
int matriz_palindrome(int mat[ FIL ][ COL ], int tipo) {
int i, j;
if(tipo == 0) {
for(i = 0; i < FIL; i++) {
for(j = 0; j <= COL/2; j++) {
if(mat[ i ][ j ] != mat[ i ][ COL - j - 1]) {
return 0;
}
}
}
}
if(tipo == 1) {
for(i = 0; i < COL; i++) {
for(j = 0; j <= FIL/2; j++) {
if(mat[ j ][ i ] != mat[ FIL - j - 1 ][ i ]) {
return 0;
}
}
}
}
return 1;
}
你發佈你的整個應用程序的事實表明你沒有努力找到問題。提出一個* short *代碼,它會產生相同的問題。 –
@KarolyHorvath我確實付出了努力,實際上我已經解決了這個問題,但是我把整個代碼放在了你的需要的地方。我明確表示函數是llenar_matriz,在第4行中,失敗了。但這不是你只需要調試這個功能的東西,這就是爲什麼我放置完整的代碼。 – JorgeeFG