Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2014
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <time.h>
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <errno.h>
  7.  
  8. struct para{
  9. double czas;
  10. struct para *nast;
  11. };
  12.  
  13. void zwolnij(struct para *wsk){
  14. if (wsk){
  15. zwolnij(wsk->nast);
  16. free(wsk);
  17. }
  18. }
  19. /*
  20. void zwol(List * plist) {
  21. Node * psave;
  22. while (*plist != NULL) {
  23. psave = (*plist)->next;
  24. free(*plist);
  25. *plist = psave;
  26. }
  27. }*/
  28.  
  29. int istnieje(char plik[30]){
  30. FILE *o;
  31.  
  32. if ((o = fopen(plik, "r")) == NULL){
  33. return 1;
  34. }
  35. else{
  36. fclose(o);
  37. return 0;
  38. }
  39. }
  40.  
  41. int main(){
  42. FILE *o;
  43. FILE *t;
  44. char plik[30] = {NULL}, tekst[80] = {NULL};
  45. int i = 0, c = 0;
  46. double wartosc = 0;
  47. struct para *glowa = NULL, *wsk = NULL;
  48.  
  49. //pobieranie nazwy pliku
  50. printf("Podaj nazwe Twojego pliku: ");
  51. scanf("%s", plik);
  52. //sprawdzanie długości nazwy pliku
  53. while (strlen(plik) > 30){
  54. printf("\nNazwa Twojego pliku jest zbyt dluga, przekracza 30 znakow.\nPodaj nazwe Twojego pliku: ");
  55. scanf("%s", plik);
  56. }
  57. //otwieranie pliku
  58. if ((o = fopen(plik, "r")) == NULL){
  59. printf("Blad otwarcia pliku %s: ", plik);
  60. fprintf(stderr, strerror(errno));
  61. return 0;
  62. }
  63. else{
  64. printf("Brawo! Twoj plik zostal wczytany poprawnie.\n");
  65. }
  66. //zawartość pliku
  67. printf("\nWczytane dane:\n");
  68. while (!feof(o)){
  69. fscanf(o,"%lf", &wartosc);
  70. //plik jest pusty
  71. if (wartosc == 0){
  72. printf("Blad! Plik %s jest pusty.\n", plik);
  73. return 0;
  74. }
  75. //liczba ujemna
  76. if (wartosc < 0){
  77. printf("Blad! Wartosc podanej liczby jest ujemna.\n");
  78. return 0;
  79. }
  80. int z = 0, d = 0;
  81. double y = 0;
  82. z = wartosc;
  83. y = z;
  84. if (y == wartosc){
  85. d = 1;
  86. }
  87. else{
  88. //liczba niecalkowita
  89. printf("Blad! Podana liczba nie jest calkowita.\n");
  90. return 0;
  91. }
  92. if (wartosc != 0 && wartosc > 0 && d == 1){
  93. printf("%g\n", wartosc);
  94. }
  95. }
  96.  
  97.  
  98. //zamykanie pliku
  99. fclose(o);
  100. //pobieranie nazwy pliku do zapisu
  101. printf("\nPodaj nazwe pliku do zapisu: ");
  102. scanf("%s", plik);
  103. while (strlen(plik) > 30){
  104. printf("\nNazwa Twojego pliku jest zbyt dluga, przekracza 30 znakow.\nPodaj nazwe Twojego pliku: ");
  105. scanf("%s", plik);
  106. }
  107. //kontrola
  108. printf("Nazwa Twojego pliku: %s\n", plik);
  109. //plik istnieje
  110. while (istnieje(plik) == 0){
  111. printf("Blad! Plik o podanej nazwie juz istnieje.\n");
  112. printf("\nPodaj nazwe pliku do zapisu: ");
  113. scanf("%s", plik);
  114. while (strlen(plik) > 30){
  115. printf("\nNazwa Twojego pliku jest zbyt dluga, przekracza 30 znakow.\nPodaj nazwe Twojego pliku: ");
  116. scanf("%s", plik);
  117. }
  118. }
  119. //otwieranie pliku do zapisu
  120. if ((o = fopen(plik, "w")) == NULL){
  121. printf("Blad otwarcia pliku %s: ", plik);
  122. fprintf(stderr, strerror(errno));
  123. }
  124. else{
  125. printf("Brawo! Twoj plik zostal wczytany poprawnie.\n");
  126. }
  127. //losowanie tekstu
  128. if ((t = fopen("tekst.txt", "r")) == NULL){
  129. printf("Blad otwarcia pliku %s: ", "tekst.txt");
  130. fprintf(stderr, strerror(errno));
  131. }
  132. else{
  133. printf("Wczytano teskt do wylosowania.\n");
  134. }
  135. srand(time(NULL));
  136. c = rand()%19;
  137. while (!feof(t)){
  138. fgets(tekst, 80, t);
  139. if (i == c){
  140. break;
  141. }
  142. i++;
  143. }
  144. fclose(t);
  145. //przepisywanie tekstu - etap zręcznościowy
  146. printf("\nPrzepisz podany napis jak najszybciej i kliknij ENTER.\n");
  147. printf("%s\n", tekst);
  148. int a = 0;
  149. double b = 0;
  150.  
  151. while (a < wartosc){
  152. printf("[%d] proba: ", a+1);
  153. time_t czasStart = time( NULL );
  154. scanf("%s", tekst);
  155. time_t czasStop = time( NULL );
  156. b = difftime(czasStop, czasStart);
  157. if (glowa == NULL){
  158. glowa = wsk = (struct para*)malloc(sizeof(struct para));
  159. }
  160. else{
  161. wsk->nast = (struct para*)malloc(sizeof(struct para));
  162. wsk = wsk->nast;
  163. }
  164. wsk->czas = b;
  165. printf("Brawo! Przepisales napis w %.2f sek.\n", b);
  166. a++;
  167. }
  168. wsk = glowa;
  169. a = 0;
  170. double suma = 0;
  171. while (a < wartosc){
  172. printf("\n%.2f", wsk->czas);
  173. fprintf(o, "%.2f\n", wsk->czas);
  174. suma = suma + wsk->czas;
  175. if (a-1 < wartosc){
  176. wsk->nast = NULL;
  177. }
  178. else{
  179. wsk = wsk->nast;
  180. }
  181. a++;
  182. }
  183.  
  184. printf("\nSredni czas = %.2f", suma/wartosc);
  185. fprintf(o, "%.2f\n", suma/wartosc);
  186. fclose(o);
  187. printf("\nKoniec programu.\n");
  188.  
  189. wsk = glowa;
  190. zwolnij(wsk);
  191.  
  192. return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement