Vous êtes sur la page 1sur 5

Zeek Zone

Examen 2014/2015

Contenu
Exercice 1 .............................................................................................................................. 1
Exercice 2 .............................................................................................................................. 2
Exercice 3 .............................................................................................................................. 3

Exercice 1
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "exo.h"

int* range(int t[], int n){


int *r = (int*)malloc(n*sizeof(int));
int i, j;
for ( i = 0; i < n; ++i)
{
int cpt = 0;
for ( j = 0; j < n; ++j)
{
if(t[j] < t[i]) cpt++;
}
r[i] = cpt;
}
return r;
}

int* tri(int t[], int r[], int n){


int *tt = (int*)malloc(n*sizeof(int));
int i, pos;
for (i = 0; i < n; ++i)
{
pos = r[i]; // la position final de t[i] dans tt
tt[pos] = t[i];
}
return tt;
}

void initTab(int t[],int n){


printf("\n--> Veuillez saisir %d entiers distinct:\n", n);
int i;
for(i = 0; i < n; i++)
{
printf("donner t[%d] = ",i);
scanf("%d",&t[i]);
}
}

void afficherTab(int t[],int n)


{
printf("\n_____ Voici le contnu de votre tableau: ____\n");

Langage C – Examen 2014/2015 Visiter Zeek Zone en YouTube : YouTube Vidéos – Click
Zeek Zone
int i;
for(i=0;i<n;i++)
printf("%d | ",t[i]);
printf("\n");
}

Exercice 2
/***************** EXO2 ************/
void imprime(int g[][MAX], int n){
printf("\n imprime...\n");
int i, j;
for(i = 0; i < n; i++)
{
for ( j = 0; j < n; ++j)
{
printf("%d ", g[i][j]);
}
printf("\n");
}
printf("\nFIN\n");
}

void configInit(int g[][MAX], int n){


printf("\n configInit...\n");
int i, j;
for(i = 0; i <= n+1; i++)
{
for ( j = 0; j <= n+1; ++j)
{
if( i == 0 || j == 0 || i == n+1 || j == n+1) g[i][j] = 0; ///
valeurs ajoutées au bord
else g[i][j] = rand()%2; /// 1 ou 0
}
}
}

int nbVoisins(int g[][MAX], int i, int j){


int nb = 0;
nb += g[i-1][j];
nb += g[i+1][j];
nb += g[i][j-1];
nb += g[i][j+1];
return nb;
}

int estVivant(int g[][MAX], int i, int j){


int voisin = nbVoisins(g, i, j);
if(voisin == 0 || voisin == 4) return 0;
if(voisin == 2 || voisin == 3) return 1;
return g[i][j];
}

Langage C – Examen 2014/2015 Visiter Zeek Zone en YouTube : YouTube Vidéos – Click
Zeek Zone
void changeEtat(int g[][MAX], int n){
printf("\n changeEtat...\n");
int i, j;
for(i = 1; i <= n ; i++){
for(j = 1; j <= n ; j++){
g[i][j] = estVivant(g, i, j);
}
}
printf("L'etat a etait change avec succes...\n");
}

Exercice 3
/***************** EXO3 ************/
char** newStringArray(int nb){
char** tab = (char**)malloc(nb*sizeof(char*));
int i;
for(i = 0 ; i < nb ; i++)
tab[i] = (char*)malloc(MAX*sizeof(char));
return tab;
}

char** newCharMatrix(int size){


char** mat = (char**)malloc(size*sizeof(char*));
int i;
for(i = 0 ; i < size ; i++)
mat[i] = (char*)malloc(size*sizeof(char));
return mat;
}

void printMatrix(char **mat, int size){


int i, j;
for(i = 0; i < size ; i++){
for(j = 0; j < size ; j++){
printf("%c ", mat[i][j]);
}
printf("\n");
}
printf("\n__________FIN printMatrix_______\n");
}

Indices lineIndice(char **mat, int size, int line, char mot[]){


int i, j;
int trouver, deb, fin;
Indices res = {-1, -1};
for(i = 0; i < size ; i++){
if(mat[line][i] == mot[0]){
trouver = 1;
deb = i;
fin = i;
for(j = 1; i+j < size && mot[j] != '\0' && mat[line][i+j] ==
mot[j] ; j++){
trouver++;
fin++;
}

Langage C – Examen 2014/2015 Visiter Zeek Zone en YouTube : YouTube Vidéos – Click
Zeek Zone
}

if(trouver == strlen(mot)){
res.deb = deb;
res.fin = fin;
}
}
return res;
}

void copierMatrice(char **mat, char **matTemp, int size){


int i, j;
for(i = 0; i < size ; i++){
for(j = 0; j < size ; j++){
matTemp[i][j] = mat[i][j];
}
}
}

void barrerLine(char **mat, int size, int line, Indices ind){


int i;
for(i = ind.deb; i <= ind.fin ; i++){
mat[line][i] = '#';
}
}

void solve(char **mat, int size, char **tab, int nb){


int line, col, mot;
char **matTemp = newCharMatrix(size);
copierMatrice(mat, matTemp, size);

for(mot = 0; mot < nb ; mot++){


for(line = 0; line < size ; line++){
Indices ind = lineIndice(mat, size, line, tab[mot]);
if(ind.deb == -1 && ind.fin == -1) continue;
else{
barrerLine(matTemp, size, line , ind);
puts(tab[mot]); /// Afficher le mot rayer
}
}

/// partie bonus


for(col = 0; col < size ; col++){ /// vérifier les colonnes
Indices ind = colIndice(mat, size, col, tab[mot]);
if(ind.deb == -1 && ind.fin == -1) continue;
else{
barrerColonne(matTemp, size, col , ind);
puts(tab[mot]); /// Afficher le mot rayer
}
}
/// fin partie bonus
}

printMatrix(matTemp, size);
}

Langage C – Examen 2014/2015 Visiter Zeek Zone en YouTube : YouTube Vidéos – Click
Zeek Zone

/// Fonctions bonus


void barrerColonne(char **mat, int size, int colonne, Indices ind){
int i;
for(i = ind.deb; i <= ind.fin ; i++){
mat[i][colonne] = '#';
}
}

Indices colIndice(char **mat, int size, int col, char mot[]){


int i, j;
int trouver, deb, fin;
Indices res = {-1, -1};
for(i = 0; i < size ; i++){
if(mat[i][col] == mot[0]){
trouver = 1;
deb = i;
fin = i;
for(j = 1; i+j < size && mot[j] != '\0' && mat[i+j][col] ==
mot[j] ; j++){
trouver++;
fin++;
}
}

if(trouver == strlen(mot)){
res.deb = deb;
res.fin = fin;
}
}
return res;
}

Langage C – Examen 2014/2015 Visiter Zeek Zone en YouTube : YouTube Vidéos – Click

Vous aimerez peut-être aussi