Skip to content
Extraits de code Groupes Projets
Valider d9222e05 rédigé par Loïc DUBARD's avatar Loïc DUBARD :speech_balloon:
Parcourir les fichiers

réorganisation du projet et création Makefile

parent 31b94a57
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
CC=gcc -Wall -Wextra -ansi
stackchess : main.o tableau.o affichage.o
cd obj && $(CC) $^ -o ../$@
main.o : src/main.c
$(CC) -c $< -o ./obj/$@
%.o: src/%.c src/%.h
$(CC) -c $< -o obj/$@
Fichier ajouté
Fichier ajouté
Fichier ajouté
#include<stdio.h>
#include"tableau.h"
/*affichage.c*/
void affiche(pile** tableau, int N)
{
int i,j,h;
for (i=0 ; i<N ; i++){
for (h=0 ; h<N ; h++){
printf("+--");
if (h == N-1)printf("+\n");
}
for (j=0 ; j<N ; j++)
if (est_vide(tableau[i][j]))
printf("| ");
else
printf("|%s", sommet(tableau[i][j]));
printf("|\n");
}
for (i=0 ; i<N ; i++ ){
printf("+--");
if (i == N-1) printf("+");
}
printf("\n");
}
#ifndef _AFFICHAGE
#define _AFFICHAGE
#include"tableau.h"
/*affichage.h*/
/*
* @require
* @assign
* @ensure effectue le rafraichissement de l'écran et l'affichage du jeu en terminal
*/
void affiche(pile **tableau, int N);
#endif
#include"tableau.h"
#include"affichage.h"
/*main.c*/
int main(int argc, char **argv){
int main(int argc, char **argv)
{
int N = 6;
if (argc != 1){
N=strtol(argv[1],NULL,10);
......
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"tableau.h"
/*tableau.c*/
pile **initialisation(int N)
{
int i,j;
pile ** tableau;
tableau = (pile**) malloc(N*sizeof(pile*));
for (i=0 ; i<N ; i++){
tableau[i] =(pile*)malloc(N*sizeof(pile));
for (j=0 ; j<N ; j++)
tableau[i][j].sommet = NULL;
}
return tableau;
}
int est_vide(pile p)
{
return p.sommet == NULL;
}
char *sommet(pile p)
{
return p.sommet->chaine;
}
void empiler(pile *p, char *elt)
{
noeud* nouveau;
nouveau = (noeud*) malloc(sizeof(noeud));
nouveau->chaine = elt;
nouveau->next = p->sommet;
p->sommet = nouveau;
}
char *depiler(pile *p)
{
if (! est_vide(*p)){
char *elt;
elt = p->sommet->chaine;
noeud* tmp = p->sommet;
p->sommet = p->sommet->next;
free(tmp);
return elt;
}
return NULL;
}
void reset(pile *p)
{
while (p->sommet)
depiler(p);
}
void nettoyer(pile **tableau,int N)
{
int i,j;
for (i=0 ; i<N ; i++){
for (j=0 ; j<N ; j++)
reset(&(tableau[i][j]));
}
for (i=0 ; i<N ; i++)
free(tableau[i]);
free(tableau);
}
#ifndef _TABLEAU
#define _TABLEAU
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*tableau.h*/
typedef struct _noeud noeud;
struct _noeud{
char *chaine;
noeud* next;
};
typedef struct _pile pile;
struct _pile{
noeud* sommet;
};
/*
@require
@assign alloue un tableau de taille N*N
@ensure renvoie un tableau alloué de taille N*N dont les cases sont des piles
*/
pile **initialisation(int N);
/*
@require
@assign
@ensure retourne 1 si la pile est vide 0 sinon
*/
int est_vide(pile p);
/*
@require
@assign
@ensure retourne la valeur du sommet de la pile
*/
char *sommet(pile p);
/*
@
@
@
*/
void empiler(pile *p, char *elt);
/*
* @require
* @assign
* @ensure enlève le sommet de la pile p et le retourne
*/
char *depiler(pile *p);
/*
* @require
* @assign
* @ensure remet une pile à zero
*/
void reset(pile *p);
/*
* @require
* @assign
* @ensure nettoie la mémoire allouée au tableau
*/
void nettoyer(pile **tableau,int N);
#endif
Fichier ajouté
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter