diff --git a/ControleMachine2/Adrian_Pourchot.tar b/ControleMachine2/Adrian_Pourchot.tar new file mode 100644 index 0000000..1c9e252 Binary files /dev/null and b/ControleMachine2/Adrian_Pourchot.tar differ diff --git a/ControleMachine2/Exercice1.c b/ControleMachine2/Exercice1.c new file mode 100644 index 0000000..3ff057b --- /dev/null +++ b/ControleMachine2/Exercice1.c @@ -0,0 +1,39 @@ +#include +#include +#include + +char* suppNonLettres(char* s){ + int i; + for (i=0;i<255;i++){ + if (s[i]<'A'){ + s[i]='\a'; + } if (s[i]>'Z'&& s[i]<'a'){ + s[i]='\a'; + } if (s[i]>'z'){ + s[i]='\a'; + } + } return(s); +} + +int main(int argc, char const *argv[]) +{ + char* s=calloc(256,sizeof(char)); + char c=-128; + int i; + int t; + + s[0]=c; + for (i=0;i<255;i++){ + c++; + s[i]=c; + } suppNonLettres(s); + printf("%s\n",s); + t=strlen(s); + for (i=t;i>=0;i--){ + if (s[i]=='\a'){ + t--; + } + } + printf("Cette chaine est de taille %d.\n",t); + return 0; +} \ No newline at end of file diff --git a/ControleMachine2/Exercice2.c b/ControleMachine2/Exercice2.c new file mode 100644 index 0000000..c93d8af --- /dev/null +++ b/ControleMachine2/Exercice2.c @@ -0,0 +1,65 @@ +#include +#include + +void afficheTab(float tab[],int taille){ + if(taille==0){ + return; + } afficheTab(tab, taille-1); + printf("%.2f ",tab[taille-1]); +} + +int indicePlusPetit(float tab[10]){ + int taille=10; + int i; + int indice=0; + int min=tab[0]; + + for(i=1;i +#include + +struct maillon { + int valeur; + struct maillon* suiv; +}; + +typedef struct maillon maillon; + +maillon* ajouteDebut(maillon *chaine, int entier){ + maillon *nouveauMaillon=malloc(sizeof(maillon)); + nouveauMaillon->valeur=entier; + nouveauMaillon->suiv=chaine; + return nouveauMaillon; +} + +void afficheListe(maillon *chaine){ + maillon *affichage=malloc(sizeof(maillon)); + affichage=chaine; + while(affichage->suiv!=NULL){ + printf("%hu ",affichage->valeur); + affichage=affichage->suiv; + } printf("\n\n"); + free(affichage); +} + +maillon* fusionImperative(maillon *chaine1, maillon *chaine2){ + int i; + +} + +int main(int argc, char const *argv[]) +{ + maillon *liste1=malloc(sizeof(maillon)); + maillon *liste2=malloc(sizeof(maillon)); + int i; + + for(i=30;i>=0;i--){ + if (i%2==1){ + if (i<=24 && i%9==0){ + liste1=ajouteDebut(liste1,i); + } else{ + liste2=ajouteDebut (liste2,i); + } + }else{ + liste1=ajouteDebut (liste1,i); + } + } afficheListe(liste1); + afficheListe(liste2); + return 0; +} \ No newline at end of file diff --git a/ControleMachineJava/Exercice1/MainExo1.class b/ControleMachineJava/Exercice1/MainExo1.class new file mode 100644 index 0000000..5032be3 Binary files /dev/null and b/ControleMachineJava/Exercice1/MainExo1.class differ diff --git a/ControleMachineJava/Exercice1/MainExo1.java b/ControleMachineJava/Exercice1/MainExo1.java new file mode 100644 index 0000000..e13ce08 --- /dev/null +++ b/ControleMachineJava/Exercice1/MainExo1.java @@ -0,0 +1,35 @@ +import java.awt.*; +import javax.swing.*; +import java.util.*; + +public class MainExo1 { + + public static void main(String[] args) { + for(int j=0; j=-7){ + System.out.println("Piece non truquer"); + }else{ + System.out.println("Piece truquer"); + } + } +} \ No newline at end of file diff --git a/ControleMachineJava/Exercice3/ObjetAleatoire.class b/ControleMachineJava/Exercice3/ObjetAleatoire.class new file mode 100644 index 0000000..31d0611 Binary files /dev/null and b/ControleMachineJava/Exercice3/ObjetAleatoire.class differ diff --git a/ControleMachineJava/Exercice3/ObjetAleatoire.java b/ControleMachineJava/Exercice3/ObjetAleatoire.java new file mode 100644 index 0000000..785a1aa --- /dev/null +++ b/ControleMachineJava/Exercice3/ObjetAleatoire.java @@ -0,0 +1,4 @@ +public interface ObjetAleatoire{ + void lancer(); + int lire(); +} \ No newline at end of file diff --git a/ControleMachineJava/Exercice3/Piece.class b/ControleMachineJava/Exercice3/Piece.class new file mode 100644 index 0000000..1c5aa9f Binary files /dev/null and b/ControleMachineJava/Exercice3/Piece.class differ diff --git a/ControleMachineJava/Exercice3/Piece.java b/ControleMachineJava/Exercice3/Piece.java new file mode 100644 index 0000000..7388322 --- /dev/null +++ b/ControleMachineJava/Exercice3/Piece.java @@ -0,0 +1,21 @@ +import java.awt.*; +import javax.swing.*; +import java.util.*; + +public class Piece implements ObjetAleatoire { + + private int faceVisible; // 0 = pile; 1 = face. + + public Piece(){ + this.faceVisible=faceVisible; + } + + public void lancer(){ + Random r = new Random(); + this.faceVisible=(r.nextInt()%2); + } + + public int lire(){ + return faceVisible; + } +} \ No newline at end of file diff --git a/ControleMachineJava/Exercice3/PiecePipee.class b/ControleMachineJava/Exercice3/PiecePipee.class new file mode 100644 index 0000000..da87c7b Binary files /dev/null and b/ControleMachineJava/Exercice3/PiecePipee.class differ diff --git a/ControleMachineJava/Exercice3/PiecePipee.java b/ControleMachineJava/Exercice3/PiecePipee.java new file mode 100644 index 0000000..1b01f97 --- /dev/null +++ b/ControleMachineJava/Exercice3/PiecePipee.java @@ -0,0 +1,25 @@ +import java.awt.*; +import javax.swing.*; +import java.util.*; + +public class PiecePipee implements ObjetAleatoire { + + private int faceVisible; // 0 = pile; 1 = face. + + public PiecePipee(){ + this.faceVisible=faceVisible; + } + + public void lancer(){ + Random r = new Random(); + if(r.nextInt()%10<7&&r.nextInt()%10>-7){ + this.faceVisible=0; + }else{ + this.faceVisible=1; + } + } + + public int lire(){ + return faceVisible; + } +} \ No newline at end of file diff --git a/ControleMachineJava/reponses.tar b/ControleMachineJava/reponses.tar new file mode 100644 index 0000000..167cecb Binary files /dev/null and b/ControleMachineJava/reponses.tar differ diff --git a/DEV2.1/TP8:Tests/MonInt.class b/DEV2.1/TP8:Tests/MonInt.class new file mode 100644 index 0000000..291f499 Binary files /dev/null and b/DEV2.1/TP8:Tests/MonInt.class differ diff --git a/DEV2.1/TP8:Tests/MonInt.java b/DEV2.1/TP8:Tests/MonInt.java new file mode 100644 index 0000000..1458bbf --- /dev/null +++ b/DEV2.1/TP8:Tests/MonInt.java @@ -0,0 +1,114 @@ + // notez le s apres Object. Permet entre autre de stipuler qu'un objet o n'est pas null avec la methode Objects.requireNonNull(o, "message d'erreur detaille"); + import java.util.Objects; + + /* + * Sorte de Int du pauvre a laquelle on ajoute un nom sous forme textuelle. + * + * Classe donnee a titre d'exemple pour illustrer les ingredients techniques de la prog defensive. + * et les assertions java + */ + public class MonInt { + + // un entier + private int valeur ; + // son nom sous forme textuelle + private String nom ; + + public MonInt(int n, String s){ + this.valeur = n; + this.nom = s; + } + + /** + * division du pauvre. + * + * + * @param c le diviseur par lequel on souhaite diviser this + */ + public void divise (MonInt c){ + Objects.requireNonNull(c, "la classe denominateur ne peut pas etre null"); + + int avant = this.valeur; + + this.valeur = this.valeur / c.getValeur(); + this.nom = "(" + this.nom + " divise par " + c.getNom() +")"; + + assert(this.valeur*c.getValeur() == avant); // NB. un assert qui ne marche pas tout le temps. + } + + /** + * Un getter superstitieux. + * retourne une exception si la valeur vaut 13. + */ + public int getValeur(){ + if (valeur == 13) throw new IllegalStateException("Comme disait Sacha Guitry, je ne suis pas superstitieux mais on ne sait jamais."); + return valeur; + } + + public String getNom(){ + return nom; + } + + /** + * @return String representant l'entier. + */ + public String toString(){ + return this.getValeur() + " " + this.getNom(); + } + + /** + * C'est un peu moche mais on peut pour simplifier mettre des tests manuels dans un main dans chaque classe. + * C'est plutot mieux que de mettre des print dans chaque methode car vous etes plus sur de la stabilite de vos tests + * (vous pouvez rejouer les tests plus tard). + * + * Idealement on utilise un outil dedie comme JUnit qui favorise au maximum cette automatisation. + * + * @param args pas de parametre en ligne de commande prevu. + */ + public static void main(String[] args) { + MonInt c3 = new MonInt(3,"trois"); + MonInt c4 = new MonInt(4,"quatre"); + MonInt c9 = new MonInt(9,"neuf"); + MonInt c13 = new MonInt(13,"treize"); + System.out.println(c3.toString()); + System.out.println(c4.toString()); + System.out.println(c9.toString()); + + + c9.divise(c3); + // 3 + System.out.println(c9.toString()); + + c3.divise(c4); + // 0 + System.out.println(c3.toString()); + + // tester des exceptions pas pratique + // Si on veut tester plusieurs exceptions + // il faut attraper et verifier que c'est le bon type d'exception. + // ici manuellement en regardant le message. + try { + System.out.println(c13.toString()); // toucher au nbre 13 avec getValeur() + } + catch(Exception e){ + System.out.println(e); + } + + try{ + c9.divise(c3); //division par 0 + } + catch(Exception e){ + System.out.println(e); + } + + try{ + c9.divise(null); //division par null + } + catch(Exception e){ + System.out.println(e); + } + + + } + } + \ No newline at end of file diff --git a/DEV2.1/TP9:FluxOctets/Imag.class b/DEV2.1/TP9:FluxOctets/Imag.class new file mode 100644 index 0000000..50332e6 Binary files /dev/null and b/DEV2.1/TP9:FluxOctets/Imag.class differ diff --git a/DEV2.1/TP9:FluxOctets/Imag.java b/DEV2.1/TP9:FluxOctets/Imag.java new file mode 100644 index 0000000..0b104a0 --- /dev/null +++ b/DEV2.1/TP9:FluxOctets/Imag.java @@ -0,0 +1,41 @@ +import java.awt.*; +import java.awt.image.BufferedImage; +import javax.swing.*; +import java.io.*; + +public class Imag extends JComponent{ + private Image image; + + public Imag(int width, int height, String path) throws IOException { + image = readFromFile(width, height, path); + setPreferredSize(new Dimension(width, height)); + } + + private Image readFromFile(int width, int height, String path) throws IOException { + FileInputStream input = new FileInputStream(path); + BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); + for (int i = 0; i < height; i++){ + for (int j = 0; j < width; j++){ + int r = input.read(); + int g = input.read(); + int b = input.read(); + int rgb = (r << 16 | (g << 8) | (b)); + img.setRGB(j, i, rgb); + } + } + return img; + } + + @Override + + protected void paintComponent(Graphics pinceau) { + // obligatoire : on cree un nouveau pinceau pour pouvoir le modifier plus tard + Graphics pinceau2 = pinceau.create(); + if (this.isOpaque()) { + // obligatoire : on repeint toute la surface avec la couleur de fond + pinceau2.setColor(this.getBackground()); + pinceau2.fillRect(0, 0, this.getWidth(), this.getHeight()); + } + pinceau2.drawImage(this.image, 768, 1024, this); + } +} \ No newline at end of file diff --git a/DEV2.1/TP9:FluxOctets/MainImage.class b/DEV2.1/TP9:FluxOctets/MainImage.class new file mode 100644 index 0000000..4bdecc1 Binary files /dev/null and b/DEV2.1/TP9:FluxOctets/MainImage.class differ diff --git a/DEV2.1/TP9:FluxOctets/MainImage.java b/DEV2.1/TP9:FluxOctets/MainImage.java new file mode 100644 index 0000000..a9e5dad --- /dev/null +++ b/DEV2.1/TP9:FluxOctets/MainImage.java @@ -0,0 +1,22 @@ +import java.awt.*; +import javax.swing.*; +import java.io.*; + +public class MainImage{ + + public static void main(String[] args) { + try{ + FileInputStream file = new FileInputStream("image.bin"); + try { + JFrame fenetre = new JFrame(); + fenetre.setSize(1024, 768); + fenetre.setLocation(0, 0); + fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + fenetre.add(new Imag(1024, 768, "image.bin")); + fenetre.setVisible(true); + fenetre.pack(); + file.close(); + } catch(IOException e){} + }catch(FileNotFoundException e){} + } +} \ No newline at end of file diff --git a/DEV2.1/TP9:FluxOctets/image.bin b/DEV2.1/TP9:FluxOctets/image.bin new file mode 100644 index 0000000..1bf996b Binary files /dev/null and b/DEV2.1/TP9:FluxOctets/image.bin differ