Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #include <cstdlib>
- #include <ctime>
- #include <errno.h>
- struct para{
- double czas;
- struct para *nast;
- };
- int istnieje(char plik[30]){
- FILE *o;
- if ((o = fopen(plik, "r")) == NULL){
- return 1;
- }
- else{
- fclose(o);
- return 0;
- }
- }
- int main(){
- FILE *o;
- FILE *t;
- char plik[30] = {NULL}, tekst[80] = {NULL};
- int i = 0, c = 0;
- double wartosc;
- struct para *glowa = NULL, *wsk = NULL;
- //pobieranie nazwy pliku
- printf("Podaj nazwe Twojego pliku: ");
- scanf("%s", plik);
- //sprawdzanie długości nazwy pliku
- while (strlen(plik) > 30){
- printf("\nNazwa Twojego pliku jest zbyt dluga, przekracza 30 znakow.\nPodaj nazwe Twojego pliku: ");
- scanf("%s", plik);
- }
- //otwieranie pliku
- if ((o = fopen(plik, "r")) == NULL){
- printf("Blad otwarcia pliku %s: ", plik);
- fprintf(stderr, strerror(errno));
- return 0;
- }
- else{
- printf("Brawo! Twoj plik zostal wczytany poprawnie.\n");
- }
- //zawartość pliku
- printf("\nWczytane dane:\n");
- while (!feof(o)){
- fscanf(o,"%lf", &wartosc);
- int z = 0, d = 0;
- double y = 0;
- z = wartosc;
- y = z;
- if (y == wartosc){
- d = 1;
- }
- else{
- printf("Blad! Podana liczba nie jest calkowita.\n");
- return 0;
- }
- if (wartosc != 0 && wartosc > 0 && d == 1){
- printf("%g\n", wartosc);
- }
- }
- //plik jest pusty
- if (wartosc == 0){
- printf("Blad! Twoj plik jest pusty.\n");
- return 0;
- }
- //liczba ujemna
- if (wartosc < 0){
- printf("Blad! Wartosc podanej liczby jest ujemna.\n");
- return 0;
- }
- //zamykanie pliku
- fclose(o);
- //pobieranie nazwy pliku do zapisu
- printf("\nPodaj nazwe pliku do zapisu: ");
- scanf("%s", plik);
- while (strlen(plik) > 30){
- printf("\nNazwa Twojego pliku jest zbyt dluga, przekracza 30 znakow.\nPodaj nazwe Twojego pliku: ");
- scanf("%s", plik);
- }
- //kontrola
- printf("Nazwa Twojego pliku: %s\n", plik);
- //plik istnieje
- while (istnieje(plik) == 0){
- printf("Blad! Plik o podanej nazwie juz istnieje.\n");
- printf("\nPodaj nazwe pliku do zapisu: ");
- scanf("%s", plik);
- while (strlen(plik) > 30){
- printf("\nNazwa Twojego pliku jest zbyt dluga, przekracza 30 znakow.\nPodaj nazwe Twojego pliku: ");
- scanf("%s", plik);
- }
- }
- //otwieranie pliku do zapisu
- if ((o = fopen(plik, "w")) == NULL){
- printf("Blad otwarcia pliku %s: ", plik);
- fprintf(stderr, strerror(errno));
- }
- else{
- printf("Brawo! Twoj plik zostal wczytany poprawnie.\n");
- }
- //losowanie tekstu
- if ((t = fopen("tekst.txt", "r")) == NULL){
- printf("Blad otwarcia pliku %s: ", plik);
- fprintf(stderr, strerror(errno));
- }
- else{
- printf("Wczytano teskt do wylosowania.\n");
- }
- srand(time(NULL));
- c = rand()%19;
- if (t == NULL){
- printf("Blad otwarcia pliku %s: ", plik);
- fprintf(stderr, strerror(errno));
- }
- while (!feof(t)){
- fgets(tekst, 80, t);
- if (i == c){
- break;
- }
- i++;
- }
- fclose(t);
- //przepisywanie tekstu - etap zręcznościowy
- printf("\nPrzepisz podany napis jak najszybciej i kliknij ENTER.\n");
- printf("%s\n", tekst);
- int a = 0;
- double b = 0;
- while (a < wartosc){
- printf("[%d] proba: ", a+1);
- time_t czasStart = time( NULL );
- scanf("%s", tekst);
- time_t czasStop = time( NULL );
- b = difftime(czasStop, czasStart);
- if (glowa == NULL){
- glowa = wsk = (struct para*)malloc(sizeof(struct para));
- }
- else{
- wsk->nast = (struct para*)malloc(sizeof(struct para));
- wsk = wsk->nast;
- }
- wsk->czas = b;
- printf("Brawo! Przepisales napis w %.2f sek.\n", b);
- a++;
- }
- wsk = glowa;
- a = 0;
- double suma = 0;
- while (a < wartosc){
- printf("\n%.2f", wsk->czas);
- fprintf(o, "%.2f\n", wsk->czas);
- suma = suma + wsk->czas;
- wsk = wsk->nast;
- a++;
- }
- printf("\nSredni czas = %.2f", suma/wartosc);
- fprintf(o, "%.2f\n", suma/wartosc);
- fclose(o);
- printf("\nKoniec programu.\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement