-
| .
|
Manager
- Group
- User+
- Posts
- 20,991
- Reputation
- +414
- Status
- Anonymous
|
|
Esercitazione del 16 dicembre 2021 Su una scacchiera 8x8 sono posizionati due pezzi: il Re bianco e la Regina nera. Si scriva una funzione the riceve in input le posizioni del Re e della Regina e determini se la Regina 6 in posizione tale da poter mangiare il Re. Le posizioni dei due pezzi sono identificate mediante la riga e la colonna su cui si trovano, espresse come numeri interi tra 1 e 8. II tipo di dato scacchiera deve essere rappresentato come un record contenente un vettore statico di interi a 2 dimensioni e due interi rappresentanti le dimensioni. Realizzare le funzioni accesso al tipo di dato scacchiera. N.B. Realizzare gli algoritmi di tutte le funzioni individuate e il codice in linguaggio C e consegnare entro le 18.00
#include<stdio.h> #include "safeio.h" typedef struct { int x; int y; }position; int check_upper_left_diagonal(position king_position,position queen_position) { int is_king_in_danger = 0; for(int x = king_position.x; x <= 8 && is_king_in_danger == 0;x++) { is_king_in_danger = x == queen_position.x && x == queen_position.y ; } if(is_king_in_danger == 0) { for(int x = king_position.x; x >= 0 && is_king_in_danger == 0;x--) { is_king_in_danger = x == queen_position.x && x == queen_position.y ; } } return is_king_in_danger; } int main() { printf("Posizione X Re:\t"); position king_position; king_position.x = get_int(); printf("Posizione Y Re:\t"); king_position.y = get_int(); printf("Posizione X Regina:\t"); position queen_position; queen_position.x = get_int(); printf("Posizione Y Regina:\t"); queen_position.y = get_int();
printf("Re in pericolo: %d\n",is_king_in_danger); }
|
|
| .
|
-
| .
|
Manager
- Group
- User+
- Posts
- 20,991
- Reputation
- +414
- Status
- Anonymous
|
|
SCACCHIERA – tipo record
VALORI – matrice dedicata alla scacchiera – int
RIGHE – variabile contenente il numero di righe della scacchiera – int
COLONNE – variabile contenete il numero di colonne della scacchiera – int
int leggereRighe(scacchiera matrice){ int righe; righe = matrice.maxrighe; return righe; }
int leggereColonne(scacchiera matrice){ int colonne; colonne = matrice.maxcolonne; return colonne; }
int leggereValore(scacchiera matrice, int riga, int colonna){ int valore; valore = matrice.matrice[riga][colonna]; return valore; }
scacchiera scrivereRighe(scacchiera matrice, int riga){ matrice.maxrighe = riga; return matrice; }
scacchiera scrivereColonne(scacchiera matrice, int colonna){ matrice.maxcolonne = colonna; return matrice; }
scacchiera scrivereValore(scacchiera matrice, int riga, int colonna, int valore){ matrice.matrice[riga-1][colonna-1] = valore; return matrice; }
typedef struct{ int matrice[MAX][MAX]; int maxrighe; int maxcolonne; }scacchiera;
Raga una domanda: perché in qualsiasi caso mi restituisce 1? int vittoriaRegina(scacchiera s, int rRE, int cRE, int rRA, int cRA){ int mangia; rRE = s.riga; rRA = s.riga; cRE = s.colonna; cRA = s.colonna; if(rRE == rRA){ mangia = 1; } else if(cRE == cRA){ mangia = 1; } else if(abs(cRE - cRA) == abs(rRE - rRA)){ mangia = 1; } else{ mangia = 0; } return mangia; }
Raga una domanda: perché in qualsiasi caso mi restituisce 1? int vittoriaRegina(scacchiera s, int rRE, int cRE, int rRA, int cRA){ int mangia; rRE = s.riga; rRA = s.riga; cRE = s.colonna; cRA = s.colonna; if(rRE == rRA){ mangia = 1; } else if(cRE == cRA){ mangia = 1; } else if(abs(cRE - cRA) == abs(rRE - rRA)){ mangia = 1; } else{ mangia = 0; } return mangia; }
|
|
| .
|
-
| .
|
Register
- Group
- Member
- Posts
- 82
- Reputation
- 0
- Status
- Offline
|
|
#include <stdio.h> #define MAX 8 #define MIN 1
typedef struct{ int matrice[MAX][MAX]; int maxrighe; int maxcolonne; }scacchiera;
int leggereRighe(scacchiera matrice){ int righe; righe = matrice.maxrighe; return righe; }
int leggereColonne(scacchiera matrice){ int colonne; colonne = matrice.maxcolonne; return colonne; }
int leggereValore(scacchiera matrice, int riga, int colonna){ int valore; valore = matrice.matrice[riga][colonna]; return valore; }
scacchiera scrivereRighe(scacchiera matrice, int riga){ matrice.maxrighe = riga; return matrice; }
scacchiera scrivereColonne(scacchiera matrice, int colonna){ matrice.maxcolonne = colonna; return matrice; }
scacchiera scrivereValore(scacchiera matrice, int riga, int colonna, int valore){ matrice.matrice[riga-1][colonna-1] = valore; return matrice; }
https://stackoverflow.com/questions/655146...apture-the-king
|
|
| .
|
-
| .
|
Register
- Group
- Member
- Posts
- 82
- Reputation
- 0
- Status
- Offline
|
|
| .
|
3 replies since 16/12/2021, 14:54 44 views
.