// Main e convers?o controlada de int via igualdade --> teste 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#define SPN 4
#define BTT 10
#define MARKER 'X'
void print_card(int matriz[SPN][SPN], int list[BTT], int i)
{
printf("\n");
for(int j=0; j<SPN; j )
{
for(int n=0; n<SPN; n )
{
if(matriz[j][n] == 88 || matriz[j][n] == list[i])
{
matriz[j][n]=MARKER;
printf("|");
printf(",", matriz[j][n]);
}
else
{
printf("|");
printf("-", matriz[j][n]);
}
}
printf("|\n");
}
printf("\n");
printf(" e o numero escolhido e: -", list[i]);
printf("\n");
getchar();
}
bool victoria_arow(int matriz[SPN][SPN])
{
int j=0;
int i=0;
for(int i=0; i<SPN; i )
{
if(matriz[i][j]==88 && matriz[i][j 1]==88 && matriz[i][j 2]==88 && matriz[i][j 3]==88 && matriz[i][j 4]==88)
{
return true;
}
else
{
return false;
}
}
}
bool victoria_coll(int matriz[SPN][SPN])
{
int j=0;
int i=0;
for(int i=0; i<SPN; i )
{
if(matriz[i][j]==88 && matriz[i 1][j]==88 && matriz[i 2][j]==88 && matriz[i 3][j]==88 && matriz[i 4][j]==88)
{
return true;
}
else
{
return false;
}
}
}
int main()
{
int pirolito[SPN][SPN]={11,10,8,9,4,3,4,17,9,16,15,13,12,15,1,8};
int retardado[BTT]={11,10,8,9,11,3,4,17,12,16};
srand(time(NULL));
for(int n=0; n<BTT; n )
{
print_card(pirolito, retardado, n);
if(victoria_arow(pirolito) || victoria_coll(pirolito))
{
printf("vitoria");
break;
}
}
return 0;
}
代碼背后的想法主要是使用預定義的矩陣 (pirolito) 和串列 (retardado),檢查它們之間的相等性,當肯定時,將相關數字交換為 88 并列印為“X”,在第二部分中, vitória_coll 和 victória_row 函式,矩陣被遍歷尋找相同矩陣之間的相等性,但僅當數字為 88 并且如果有行或列相等時,會破壞代碼。像那樣:
| X|10| 8| 9| | 4| 3| 4|17| | 9|16|15|13| |12|15| 1| 8|
eo numero escolhido e: 11
| X| X| 8| 9| | 4| 3| 4|17| | 9|16|15|13| |12|15| 1| 8|
eo numero escolhido e: 10
| X| X| X| 9| | 4| 3| 4|17| | 9|16|15|13| |12|15| 1| X|
eo numero escolhido e: 8
| X| X| X| X| | 4| 3| 4|17| | X|16|15|13| |12|15| 1| X|
eo numero escolhido e: 9
維多利亞
uj5u.com熱心網友回復:
Invictoria_arow并且victoria_coll您將始終在回圈的第一次迭代中回傳。洗掉該else部分,并在回圈false 后回傳。
例如:
bool victoria_arow(int matriz[SPN][SPN])
{
int j=0;
int i=0;
for(int i=0; i<SPN; i )
{
if(matriz[i][j]==88 && matriz[i][j 1]==88 && matriz[i][j 2]==88 && matriz[i][j 3]==88 && matriz[i][j 4]==88)
{
return true;
}
}
return false;
}
以上僅解決了代碼中的一個問題。你有一個更糟糕的問題:你使用matriz[i][j 4]wherej 4將訪問你的四元素陣列中的第五個元素。
超出這樣的陣列范圍會導致未定義的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530479.html
標籤:C功能矩阵布尔值
上一篇:可以將陣列引數宣告為常量嗎?
下一篇:CMake-不存在可定位的規則
