CHAN-HOW-THAK Guillaume 1-SUITES ARITHMETIQUES ET GEOMETRIQUES: Fichier SuiteAriGeo.h : /** * TYPE ABSTRAIT TypeSuite * Concept : Ce type permet d'énumérer différents types de suites ** Opérations de base * Constructeur TypeSuite : suiteGeo() : TypeSuite * Constructeur TypeSuite : suiteAri() : TypeSuite * Fin des opérations de base * FIN DE TYPE ABSTRAIT */*/ enum ETypeSuite{suiteGeo,suiteAri}; typedef enum ETypeSuite TypeSuite; /** * TYPE ABSTRAIT SuiteAriGeo * Concept : Ce type permet de modéliser une suite arithmétique ou géométrique */*/ struct SuiteAriGeo { double u0; double coeff; TypeSuite ts; }; typedef struct SSuiteAriGeo SuiteAriGeo; /** * Opérations de base */*/ Constructeur SuiteAriGeo creerSuiteAriGeo(double uO, dobule coeff, TypeSuite ts); Observateur double recUO(SuiteAriGeo sag); Observateur double recCoeff(SuiteAriGeo sag); Observateur TypeSuite recTypeSuite(SuiteAriGeo sag); /** * Axiomes * recU0(creerSuiteAriGeo(u0,coeff,ts)) = u0 * recCoeff(creerSuiteAriGeo(u0,coeff,ts)) = coeff • recTypeSuite(creerSuiteAriGeo(u0,coeff,ts)) = ts • * Fin des axiomes * FIN DE TYPE ABSTRAIT **/*/ Fichier SuiteAriGeo.ta.c : Langage /* TYPE ABSTRAIT SuiteAriGeo */*/ #include "SuiteAriGeo.ta.h" SuiteAriGeo creerSuiteAriGeo(double u0, double coeff, TypeSuite ts) { SuiteAriGeo sag; sag.u0 = u0; sag.coeff = coeff; sag.ts = ts; return sag; } /* Opération de base */*/ Observateur double recUO( SuiteAriGeo sag) { return sag.u0; } /* Opération de base */*/ Observateur double recCoeff( SuiteAriGeo sag) { return sag.coeff; } /* Opération de base */*/ Observateur TypeSuite recTypeSuite( SuiteAriGeo sag) { return sag.ts; } /** * Axiomes * recU0(creerSuiteAriGeo(u0,coeff,ts)) == u0 * recCoeff(creerSuiteAriGeo(u0,coeff,ts)) == coeff * recTypeSuite(creerSuiteAriGeo(u0,coeff,ts)) == ts */* Fichier afficherTermes.c //Transformateur Sortie : afficherTermesSuiteAriGeo(SuiteAriGeo sag,Entier n) : Sortie #include"suiteAriGeo.h" #include #include void afficherTermesSuiteAriGeo(SuiteAriGeo sag,int n) { float u; int i; prinf("Caractéristiques de la SuiteAriGeo :"); if (recTypeSuite(sag)==suiteAri()) { printf("Suite arithmetique"); } else { printf("Suite géometrique"); } printf("Premier terme = "); printf("%f\n",recU0(sag)); printf("Raison = "); printf("%f\n",recCoeff(sag)); if (recTypeSuite(sag)==suiteAri()) { u=recU0(sag); for(i=1;i <= n; i++) { u=u + recCoeff(sag); printf("u("); printf("%d",i); printf(") = "); printf("%f\n",u); } } else { u=recU0(sag); for(i=1; i<=n; i++) { u=u * recCoeff(sag); printf("u("); printf("%d",i); printf(") = "); printf("%f\n",u); } } } 2-LES POINTEURS: On inclura aussi "algoC.h" Q1) Ensemble creerEnsembleVide() { Ensemble newEns; newEns=malloc(sizeof(SEnsemble)); newEns->pelements=NULL; newEns.nbElements=NULL; return newEns; } Q2) Ensemble ajouterElement(Ensemble ens, Element e) { int i; int n; n=ens.nbElement; if(ens.nbElement==0) { ens.nbElement=1; ens->pelement=e; } else { for(i=0,ipelements[i]!=e) { ens->pelement[n]=e; ens.nbElement=ens.nbElement+1; } } } return ens; } Q3) Ensemble supprimerElement(Ensemble ens, int i) { if(ens.nbElement==0) { return NULL; } else { ens.nbElement=ens.nbElement-1; ens->pelement[i]=NULL; } return ens; } 3-QUELQUES ERREURS DE COMPILATIONS: int main() { int i; for(i = 0; i < 10; i++) { // to do } int k; for(k = 0; k < 10; k++) { // to do } return 0 }