begin process at 2012 05 30 08:31:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

URGENT : transposer du C en Caml


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

URGENT : transposer du C en Caml

jeudi 12 mai 2005 à 00:00:57 | URGENT : transposer du C en Caml

torgal79

Salut

Voila mon probleme. On m'a filé un prog en c et j'y connais rien a ce langage. Et mon boulot est de le transposer en caml et c'est super urgent.Et pour que je réussisse, il me faut juste comprendre les étapes de ce programme.Et c'est pour cela que je fais appel a vous car je sais que la plupart des personnes de ce site se débrouille pas trop mal.Perso en C je connais uniquement l'affichage à l'écran et c'est tout.C'est super urgent les gars. Merci pour tout.Par contre pour ceux qui auraient voulu me poser des questions je suis désolé mais les réponses seront longues car je n'ai pas l'adsl et donc pas de d'internet illimité.Et oui on oublie la campagne( g quand meme du 56k c'est toujours ca on pourra dire lol)
Donc voici la source(je m'en rends bien compte que c'est un peu long désolé) :

#include<stdio.h>
#include<stdlib.h>
struct elementliste{
int *valeur;
struct elementliste *suivant,*precedent;
};

typedef struct elementliste ElementListe, *Liste;
typedef struct file{
Liste premier;
Liste dernier;
int longueur;
} *MONOMES;

MONOMES creerFileVide(){
MONOMES f=(MONOMES)malloc(sizeof(struct file));
Liste elt=(Liste)malloc(sizeof(ElementListe));
elt->suivant=NULL;
elt->precedent=NULL;
f->premier=elt;
f->dernier=elt;
f->longueur=0;
return f;
}

MONOMES enfile(MONOMES f, int *x){
Liste elt=f->dernier;
elt->valeur=x;
Liste elt_suiv=(Liste)malloc(sizeof(ElementListe));
elt_suiv->suivant=NULL;
elt_suiv->precedent=elt;
elt->suivant=elt_suiv;
f->dernier=elt_suiv;
f->longueur++;
return f;
}

MONOMES defile(MONOMES f, Liste a){
a->precedent->suivant=a->suivant;
a->suivant->precedent=a->precedent;
free(a);
return f;
}

/*
a=1
!a=-1
sinon 0
*/

int *creerConsensus(int nb, int* A, int* B){
int i,diff=0;
int *res=(int*)malloc(nb*sizeof(int));
for(i=0;i<nb;i++){
      if((A[i]!=0) || (B[i]!=0)){
                if(A[i]!=B[i]){
                      diff+=1;
                      if(diff>1)
return NULL;
res[i]=0;
}
else
res[i]=A[i];
}
else
res[i]=(A[i]==0)?B[i]:A[i];
}
return res;
}

Liste Absorption(int nb, Liste A, Liste B){
int i,n;
Liste tmp,tmp_prec=NULL;
for(i=0;i<nb;i++){
n=(A->valeur[i]*B->valeur[i]);
if(n<0)
return NULL;
else if(!n){
tmp=(A->valeur[i]==0)?A:B;
if(tmp==tmp_prec)
return NULL;
tmp_prec=tmp;
       }
    }
return tmp;
}

MONOMES creerMonome (int nb_monome, int nb_var){
int i,var,*tab,j;
MONOMES monomes=creerFileVide();
for(i=0;i<nb_monome;i++){
printf("\nmonome %d (1 si a, -1 si !a, 0 sinon)\n",i+1);
tab=(int*)malloc(nb_var*sizeof(int));
for(j=0;j<nb_var;j++){
printf("valeur var %d : ",j+1);
scanf("%d",&var);
tab[j]=var;
       }
monomes=enfile(monomes,tab);
   }
return monomes;
}


MONOMES methodeConsensus (int nb_monome, int nb_var){
int i,j,k;
MONOMES monome;
int *new;
Liste new2;
Liste first,second,avantcons;
monome=creerMonome(nb_monome,nb_var);
do {
nb_monome=monome->longueur;
i=0;

/* creation consensus */

avantcons=monome->dernier;
first=monome->premier;
second=first->suivant;
for(j=0;j<nb_monome-1;j++){
      for(k=j+1;k<nb_monome;k++);{
             new=creerConsensus(nb_var,first->valeur,second->valeur);
             if(new){
                  i++;
                  monome=enfile(monome,new);
             }
             second=second->suivant;
        }
        first=first->suivant;
}

if(i){

/* absorption */

first=monome->premier;
second=avantcons->suivant;
for(j=0;j<nb_monome-1;j++){
       while(second!=monome->dernier){
             new2=Absorption(nb_var,first,second);
                    if(new2){
                          monome=defile(monome,new2);
                     }
              second=second->suivant;
             }
        first=first->suivant;
        }
}
}
while(i!=0);
return monome;
}

void afficheMonomes(MONOMES f, int nb_var){
int i,j;
Liste courant=f->premier;
for(i=0;i<f->longueur;i++){
     for(j=0;j<nb_var;j++){
           printf("%d ",courant->valeur[j]);
     }
     printf("+ ");
     courant=courant->suivant;
   }
}

int main (){
int nb_cons,nb_var;
MONOMES f;
printf("Entrer le nb de cons :");scanf("%d",&nb_cons);
printf("Entrer le nb de var :");scanf("%d",&nb_var);
f=methodeConsensus(nb_cons,nb_var);
afficheMonomes(f,nb_var);
return 1;
}



Cette discussion est classée dans : int, liste, nb, monome, monomes


Répondre à ce message

Sujets en rapport avec ce message

aide sur les concensus [ par torgal79 ] salut voila je suis tres novice en langage c et je dois comprendre un code portant sur la methode des concensus.Mais le probleme c'est que mes bases plantage inexpliqué [ par graall ] bonjour, j'ai un problème avec ce code :     getch();     FILE *pHtml;     int nb_char = 0;     bool sortie = false; Probleme de recursivite [ par Anysse ] Salut, je n arrive pas a comprendre le pourquoi de ce que le programme suivant renvoie : #include #include #include void recur (int, int);</FO problème c++ [ par cricri nature ] Je veux multiplier 2 polynomes p1 et p2. Pour cela, j'ai créer 2 tableaux : tab[] qui stocke les degrés d'un monome et liste_monome[] qui stocke diffé problème multiplication [ par cricri nature ] Je veux multiplier 2 polynomes p1 et p2. Pour cela, j'ai créer 2 tableaux : tab[] qui stocke les degrés d'un monome et liste_monome[] qui stocke diffé Manipulation de matrices en C. [ par T TeKa K ] Hello les gens! Je viens quemander de l'aide afin de me sortir de ce programme qui me prend la tete. But de l'exericice: creer un programme qui m strstr() avec int [ par nashoy ] Bonsoir,mon problème est le suivant :j'aimerais utiliser la fonction strstr() avec des variables int , et forcément il râle .. j'ai essayé de faire st Initialisation d'un tableau d'objet [ par Alela ] Bonjour,J'aimerais initialiser ma classe de cette façon :MaClasse *mc= new MaClasse[5](7);avec :class MaClasse {     int nb;     public: Listes chainées [ par angelfire0808 ] Bonjour voila voici mon, code j'ai une ereeur de compilation mais je ne comprend pas ;-(l'erreur c'est ici :   " nouveau->suivant=(*tete); ".De plus j Est-ce que mes destructeurs sont corrects ? [ par nisaloncaje ] Bonjour, voila, j'ai les classes suivantes, et le programme suivant :class st2{public:int nb;            // Le nombre de briques de chacun des joueurs


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales