Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define tap(x,y) (x+y*nbrColumns)
- int *tableauAPeindre;
- int nbrRows, nbrColumns;
- int nbrCommandes;
- FILE *sortie;
- /*
- 0 = on peint pas
- 1 = on peint
- 2 = déjà peint
- */
- void dessinerCarre(void)
- {
- }
- void ouvreFichierSortie(void)
- {
- sortie = fopen("sortie.txt", "wb");
- if(sortie == NULL)
- {
- fprintf(stderr, "ouvreFichierSortie : erreur d'ouverture du fichier sortie.txt\n");
- exit(1);
- }
- }
- void ecritNbrCommandes(int n)
- {
- if(n>nbrRows*nbrColumns || n<=0)
- {
- fprintf(stderr, "ecritNbrCommandes : n=%d doit être >=0 et <%d=nbrRows*nbrColumns\n", n, nbrRows*nbrColumns);
- exit(1);
- }
- fprintf(sortie, "%d\n", n);
- nbrCommandes = n;
- }
- void ecritSquare(int col, int row, int s)
- {
- if(row>=nbrRows || row<0)
- {
- fprintf(stderr, "ecritSquare : row=%d doit être >=0 et <%d=nbrRows\n", row, nbrRows);
- exit(1);
- }
- if(col>=nbrColumns || col<0)
- {
- fprintf(stderr, "ecritSquare : col=%d doit être >=0 et <%d=nbrColumns\n", col, nbrColumns);
- exit(1);
- }
- if(s<0)
- {
- fprintf(stderr, "ecritSquare : s=%d doit être >=0\n", s);
- exit(1);
- }
- if(row-s<0 || row+s>=nbrRows || col-s<0 || col+s>=nbrColumns)
- {
- fprintf(stderr, "ecritSquare : le carré (%d %d %d) qui peint de (%d %d) à (%d %d) sort du cadre\n", row, col, s, row-s, col-s, row+s, col+s);
- exit(1);
- }
- fprintf(sortie, "PAINT_SQUARE %d %d %d\n", row, col, s);
- nbrCommandes--;
- }
- void ecritLine(int col1, int row1, int col2, int row2)
- {
- if(row1>=nbrRows || row1<0)
- {
- fprintf(stderr, "ecritLine : row1=%d doit être >=0 et <%d=nbrRows\n", row1, nbrRows);
- exit(1);
- }
- if(row2>=nbrRows || row2<0)
- {
- fprintf(stderr, "ecritLine : row2=%d doit être >=0 et <%d=nbrRows\n", row2, nbrRows);
- exit(1);
- }
- if(col1>=nbrColumns || col1<0)
- {
- fprintf(stderr, "ecritLine : col1=%d doit être >=0 et <%d=nbrColumns\n", col1, nbrColumns);
- exit(1);
- }
- if(col2>=nbrColumns || col2<0)
- {
- fprintf(stderr, "ecritLine : col2=%d doit être >=0 et <%d=nbrColumns\n", col2, nbrColumns);
- exit(1);
- }
- if(row1!=row2 && col1!=col2)
- {
- fprintf(stderr, "ecritLine : De (%d %d) à (%d %d) n'est pas une ligne\n", row1, col1, row2, col2);
- exit(1);
- }
- fprintf(sortie, "PAINT_LINE %d %d %d %d\n", row1, col1, row2, col2);
- nbrCommandes--;
- }
- void ecritErase(int col, int row)
- {
- if(row>=nbrRows || row<0)
- {
- fprintf(stderr, "ecritErase : row=%d doit être >=0 et <%d=nbrRows\n", row, nbrRows);
- exit(1);
- }
- if(col>=nbrColumns || col<0)
- {
- fprintf(stderr, "ecritErase : col=%d doit être >=0 et <%d=nbrColumns\n", col, nbrColumns);
- exit(1);
- }
- fprintf(sortie, "ERASE_CELL %d %d\n", row, col);
- nbrCommandes--;
- }
- void fermeFichierSortie(void)
- {
- fclose(sortie);
- if(nbrCommandes < 0)
- {
- fprintf(stderr, "fermeFichierSortie : le nombre de commande écrites dans le fichier sortie.txt ne correspond pas à la 1ère ligne de ce fichier : il y en a %d en trop\n", -nbrCommandes);
- exit(1);
- }
- if(nbrCommandes > 0)
- {
- fprintf(stderr, "fermeFichierSortie : le nombre de commande écrites dans le fichier sortie.txt ne correspond pas à la 1ère ligne de ce fichier : il y en manque %d\n", nbrCommandes);
- exit(1);
- }
- }
- void lireFichier(void)
- {
- int cptRows, cptColumns;
- char signe;
- char ligne[100];
- char *pointeur;
- FILE* fichier = NULL;
- fichier = fopen("learn_and_teach.in", "r+");
- if (fichier != NULL)
- {
- fgets(ligne, 100, fichier);
- pointeur = ligne;
- while(*pointeur != 32)
- pointeur++;
- *pointeur = '\0';pointeur++;
- nbrRows = atoi(ligne);
- nbrColumns = atoi(pointeur);
- tableauAPeindre = malloc(nbrRows * nbrColumns * sizeof(int));
- //for(cptColumns = 0; cptColumns < nbrColumns; cptColumns++)
- // tableauAPeindre[cptColumns] = malloc(nbrRows * sizeof(int));
- for(cptRows = 0; cptRows < nbrRows; cptRows++)
- {
- for(cptColumns = 0; cptColumns < nbrColumns; cptColumns++)
- {
- signe = fgetc(fichier);
- if(signe == '.')
- tableauAPeindre[tap(cptColumns,cptRows)] = 0;
- else
- tableauAPeindre[tap(cptColumns,cptRows)] = 1;
- }
- fgets(ligne, 100, fichier);
- }
- //debug
- printf("%d %d", cptRows, cptColumns);
- printf("\n");
- for(cptRows = 0; cptRows < nbrRows; cptRows++)
- {
- for(cptColumns = 0; cptColumns < nbrColumns; cptColumns++)
- printf("%d", tableauAPeindre[tap(cptColumns,cptRows)]);
- printf("\n");
- }
- fclose(fichier);
- }
- else
- printf("Impossible d'ouvrir le fichier test.txt");
- }
- int main()
- {
- lireFichier();
- ouvreFichierSortie();
- ecritNbrCommandes(3);
- ecritErase(199, 99);
- ecritLine(10, 10, 10, 0);
- ecritSquare(199, 99, -1);
- fermeFichierSortie();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement