1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
main()
{
int n,k,m; // nombre de bits du code
int s[50];// tableau por stocker les bits entrer je sais que sa dimension doit etre exactement n
int i=0,j=1;
int mat[50]; // pour calculer la largeur de barres > 1
printf("inserisci n");
scanf("%d",&n);
printf("inserisci m");
scanf("%d",&m);
printf("inserisci k");
scanf("%d",&k);
printf("inserisci la sequenza da verificare");
// initialisation du tableau pour compter les barres dont la largeur est > 1
for(i=0;i<n;i++)
mat[i]=0;
//remplissage du tabeau cntenean le code sur n bits
for (i=0; i<n; i++)
{
printf("Elément %d : ", i);
scanf("%d", &s[i]);
}
/* Affichage du tableau */
printf("Tableau donné :\n");
for (i=0; i<n; i++)
printf("%d ", s[i]);
printf("\n");
int l=0;// indice pour le tableau mat
int r=0;// variable d'aide
i=0;j=1;// reinitiialisation de i et j
while(j<=n){
if(s[i]==s[j]){// verification si s[i] et s[j] sont egaux on incremente seulemetn j
j++;
r=1;}
else{
if(r==1){
mat[l]=j-i;
l++;
i=j;
j++;
r=0;}
if(r==0){
i=j;
j++;
}
}
}
//on verifie si la largeur de nos barres ne depassent pas m
int unita=1;
for (i=0; i<l; i++){
if(mat[i]>m)
unita=0;
}
/* on parcourt le tableau mat de diension l, les elements du tableaux differents de 0 sont le nombre de barres de taille superieur a 1 et le contenue de chaque case du tableau represente la taille de la barre */
int barre=0;
for (i=0; i<l; i++)
barre+=mat[i];
/* on sait qu'on a l barres et la variable barre contient la somme des largeurs des barres non unitaires alors les bares unitaires sont de nombres n-bar*/
int nmbar=1;
if(l-1+n-barre!=k)
nmbar=0;
if(nmbar==1 && unita==1)
printf(" é un vero codice");
else
printf(" non é un codice");
getch();
} |
Partager