Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define tap(x,y) (x+y*nbrColumns)
  5.  
  6. int *tableauAPeindre;
  7. int nbrRows, nbrColumns;
  8. int nbrCommandes;
  9. FILE *sortie;
  10.  
  11. /*
  12. 0 = on peint pas
  13. 1 = on peint
  14. 2 = déjà peint
  15. */
  16.  
  17. void dessinerCarre(void)
  18. {
  19.  
  20.  
  21. }
  22.  
  23. void ouvreFichierSortie(void)
  24. {
  25. sortie = fopen("sortie.txt", "wb");
  26. if(sortie == NULL)
  27. {
  28. fprintf(stderr, "ouvreFichierSortie : erreur d'ouverture du fichier sortie.txt\n");
  29. exit(1);
  30. }
  31. }
  32.  
  33. void ecritNbrCommandes(int n)
  34. {
  35. if(n>nbrRows*nbrColumns || n<=0)
  36. {
  37. fprintf(stderr, "ecritNbrCommandes : n=%d doit être >=0 et <%d=nbrRows*nbrColumns\n", n, nbrRows*nbrColumns);
  38. exit(1);
  39. }
  40.  
  41. fprintf(sortie, "%d\n", n);
  42. nbrCommandes = n;
  43. }
  44.  
  45. void ecritSquare(int col, int row, int s)
  46. {
  47. if(row>=nbrRows || row<0)
  48. {
  49. fprintf(stderr, "ecritSquare : row=%d doit être >=0 et <%d=nbrRows\n", row, nbrRows);
  50. exit(1);
  51. }
  52.  
  53. if(col>=nbrColumns || col<0)
  54. {
  55. fprintf(stderr, "ecritSquare : col=%d doit être >=0 et <%d=nbrColumns\n", col, nbrColumns);
  56. exit(1);
  57. }
  58.  
  59. if(s<0)
  60. {
  61. fprintf(stderr, "ecritSquare : s=%d doit être >=0\n", s);
  62. exit(1);
  63. }
  64.  
  65. if(row-s<0 || row+s>=nbrRows || col-s<0 || col+s>=nbrColumns)
  66. {
  67. 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);
  68. exit(1);
  69. }
  70.  
  71. fprintf(sortie, "PAINT_SQUARE %d %d %d\n", row, col, s);
  72. nbrCommandes--;
  73. }
  74.  
  75. void ecritLine(int col1, int row1, int col2, int row2)
  76. {
  77. if(row1>=nbrRows || row1<0)
  78. {
  79. fprintf(stderr, "ecritLine : row1=%d doit être >=0 et <%d=nbrRows\n", row1, nbrRows);
  80. exit(1);
  81. }
  82.  
  83. if(row2>=nbrRows || row2<0)
  84. {
  85. fprintf(stderr, "ecritLine : row2=%d doit être >=0 et <%d=nbrRows\n", row2, nbrRows);
  86. exit(1);
  87. }
  88.  
  89. if(col1>=nbrColumns || col1<0)
  90. {
  91. fprintf(stderr, "ecritLine : col1=%d doit être >=0 et <%d=nbrColumns\n", col1, nbrColumns);
  92. exit(1);
  93. }
  94.  
  95. if(col2>=nbrColumns || col2<0)
  96. {
  97. fprintf(stderr, "ecritLine : col2=%d doit être >=0 et <%d=nbrColumns\n", col2, nbrColumns);
  98. exit(1);
  99. }
  100.  
  101. if(row1!=row2 && col1!=col2)
  102. {
  103. fprintf(stderr, "ecritLine : De (%d %d) à (%d %d) n'est pas une ligne\n", row1, col1, row2, col2);
  104. exit(1);
  105. }
  106.  
  107. fprintf(sortie, "PAINT_LINE %d %d %d %d\n", row1, col1, row2, col2);
  108. nbrCommandes--;
  109. }
  110.  
  111. void ecritErase(int col, int row)
  112. {
  113. if(row>=nbrRows || row<0)
  114. {
  115. fprintf(stderr, "ecritErase : row=%d doit être >=0 et <%d=nbrRows\n", row, nbrRows);
  116. exit(1);
  117. }
  118.  
  119. if(col>=nbrColumns || col<0)
  120. {
  121. fprintf(stderr, "ecritErase : col=%d doit être >=0 et <%d=nbrColumns\n", col, nbrColumns);
  122. exit(1);
  123. }
  124.  
  125. fprintf(sortie, "ERASE_CELL %d %d\n", row, col);
  126. nbrCommandes--;
  127. }
  128.  
  129. void fermeFichierSortie(void)
  130. {
  131. fclose(sortie);
  132. if(nbrCommandes < 0)
  133. {
  134. 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);
  135. exit(1);
  136. }
  137.  
  138. if(nbrCommandes > 0)
  139. {
  140. 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);
  141. exit(1);
  142. }
  143. }
  144.  
  145. void lireFichier(void)
  146. {
  147. int cptRows, cptColumns;
  148. char signe;
  149. char ligne[100];
  150. char *pointeur;
  151. FILE* fichier = NULL;
  152.  
  153. fichier = fopen("learn_and_teach.in", "r+");
  154.  
  155. if (fichier != NULL)
  156. {
  157. fgets(ligne, 100, fichier);
  158. pointeur = ligne;
  159.  
  160. while(*pointeur != 32)
  161. pointeur++;
  162.  
  163. *pointeur = '\0';pointeur++;
  164.  
  165. nbrRows = atoi(ligne);
  166. nbrColumns = atoi(pointeur);
  167.  
  168. tableauAPeindre = malloc(nbrRows * nbrColumns * sizeof(int));
  169. //for(cptColumns = 0; cptColumns < nbrColumns; cptColumns++)
  170. // tableauAPeindre[cptColumns] = malloc(nbrRows * sizeof(int));
  171.  
  172. for(cptRows = 0; cptRows < nbrRows; cptRows++)
  173. {
  174. for(cptColumns = 0; cptColumns < nbrColumns; cptColumns++)
  175. {
  176. signe = fgetc(fichier);
  177. if(signe == '.')
  178. tableauAPeindre[tap(cptColumns,cptRows)] = 0;
  179. else
  180. tableauAPeindre[tap(cptColumns,cptRows)] = 1;
  181. }
  182. fgets(ligne, 100, fichier);
  183. }
  184.  
  185. //debug
  186. printf("%d %d", cptRows, cptColumns);
  187. printf("\n");
  188. for(cptRows = 0; cptRows < nbrRows; cptRows++)
  189. {
  190. for(cptColumns = 0; cptColumns < nbrColumns; cptColumns++)
  191. printf("%d", tableauAPeindre[tap(cptColumns,cptRows)]);
  192.  
  193. printf("\n");
  194. }
  195.  
  196. fclose(fichier);
  197. }
  198. else
  199. printf("Impossible d'ouvrir le fichier test.txt");
  200.  
  201. }
  202.  
  203. int main()
  204. {
  205. lireFichier();
  206.  
  207. ouvreFichierSortie();
  208.  
  209. ecritNbrCommandes(3);
  210. ecritErase(199, 99);
  211. ecritLine(10, 10, 10, 0);
  212. ecritSquare(199, 99, -1);
  213.  
  214. fermeFichierSortie();
  215. return 0;
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement