Advertisement
Guest User

Zadanie KR 2

a guest
Jun 25th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.53 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #include <math.h>
  6. #include <ctype.h>
  7. #define filename "myfile.txt"
  8. void createfile();
  9. void task();
  10. void reading();
  11. void print();
  12.  
  13. int main()
  14.  
  15. {
  16.  
  17.     setlocale(LC_ALL, "rus");
  18.  
  19.     setlocale(LC_NUMERIC, "eng");
  20.  
  21.     printf("Выберите задание a или b: ");
  22.  
  23.     char c;
  24.  
  25.     scanf("%c", &c);
  26.  
  27.     switch (c)
  28.  
  29.     {
  30.  
  31.     case 'a':
  32.  
  33.         createfile();
  34.  
  35.         task();
  36.  
  37.         print();
  38.  
  39.         break;
  40.  
  41.     case 'b':
  42.  
  43.         reading();
  44.  
  45.         break;
  46.  
  47.     default:
  48.  
  49.         printf("Вы ввели несуществующий пункт в меню\n");
  50.  
  51.         break;
  52.  
  53.     }
  54.  
  55.     getchar();
  56.  
  57.     getchar();
  58.  
  59.     return 0;
  60.  
  61. }
  62.  
  63. void createfile()
  64.  
  65. {
  66.  
  67.     FILE *f;
  68.  
  69.     int n, i;
  70.  
  71.     float num;
  72.  
  73.     if ((f = fopen(filename, "wb")) == NULL)
  74.  
  75.     {
  76.  
  77.         printf("Не удалось создать файл");
  78.  
  79.         return -1;
  80.  
  81.     }
  82.  
  83.     printf("Введите количество чисел: ");
  84.  
  85.     scanf("%d", &n);
  86.  
  87.     for (i = 0; i < n; i++)
  88.  
  89.     {
  90.  
  91.         printf("%d-е число = ", i + 1);
  92.  
  93.         scanf("%f", &num);
  94.  
  95.         fwrite(&num, sizeof(float), 1, f);
  96.  
  97.     }
  98.  
  99.     printf("\n");
  100.  
  101.     fclose(f);
  102.  
  103. }
  104.  
  105. void task()
  106.  
  107. {
  108.  
  109.     FILE *f;
  110.  
  111.     float num, max;
  112.  
  113.     int i, n = 0;
  114.     int count = 0;
  115.     int position = 0;
  116.     float av = 0;
  117.     char *b = " ";
  118.  
  119.     int N;
  120.  
  121.     if ((f = fopen(filename, "rb+")) == NULL)
  122.  
  123.     {
  124.  
  125.         printf("Не удалось открыть файл");
  126.  
  127.         return -1;
  128.  
  129.     }
  130.  
  131.     while (!feof(f))
  132.  
  133.     {
  134.  
  135.         fread(&num, sizeof(float), 1, f);
  136.  
  137.         if (!feof(f))
  138.  
  139.         {
  140.  
  141.             n++;
  142.  
  143.         }
  144.  
  145.     }
  146.  
  147.     for (i = 1; i <= n; i++)
  148.  
  149.     {
  150.  
  151.         fseek(f, (i - 1) * sizeof(float), SEEK_SET);
  152.  
  153.         fread(&num, sizeof(float), 1, f);
  154.  
  155.         if (num < 0)
  156.         {
  157.             count++;
  158.             av += num;
  159.         }
  160.    
  161.  
  162.     }
  163.  
  164.     printf("Max = %.4f\n", av);
  165.     if (count == 0)
  166.     {
  167.         fseek(f,  0*sizeof(float), SEEK_SET);
  168.         fwrite(&av, sizeof(float), 1, f);
  169.  
  170.     }
  171.     else {
  172.  
  173.         av = av / ((1.0)*count);
  174.         fseek(f, n*sizeof(float), SEEK_SET);
  175.  
  176.         fflush(f);
  177.         fwrite(&av, sizeof(float), 1, f);
  178.     }
  179.        
  180.    
  181.     fclose(f);
  182. }
  183.  
  184. void print()
  185.  
  186. {
  187.  
  188.     FILE *f;
  189.  
  190.     float num;
  191.  
  192.     if ((f = fopen(filename, "rb")) == NULL)
  193.  
  194.     {
  195.  
  196.         printf("Не удалось открыть файл");
  197.  
  198.         return -1;
  199.  
  200.     }
  201.  
  202.     printf("Файл после изменений:\n");
  203.  
  204.     while (!feof(f))
  205.  
  206.     {
  207.  
  208.         fread(&num, sizeof(float), 1, f);
  209.  
  210.         if (!feof(f))
  211.  
  212.             printf("%.4f ", num);
  213.  
  214.     }
  215.  
  216.     printf("\n\n");
  217.  
  218.     fclose(f);
  219.  
  220. }
  221.  
  222. void reading()
  223. {
  224.     FILE *fr, *fc;
  225.     char strsrs[255], s[255];
  226.     char *a = NULL;
  227.     char *b = NULL;
  228.     char *o;
  229.     char *p;
  230.     int i, k = 1024;
  231.     char *c = (char*)malloc(k * sizeof(char)); // создает массив, в который мы будем записывать данные из файла
  232.     char *adresc; // укаазатель на массив, в который будут записываться данные из файла
  233.     if ((fr = fopen("text.txt", "r")) == NULL)
  234.     {
  235.         printf("Не удалось открыть файл");
  236.         return -1;
  237.     }
  238.     else
  239.     {
  240.         printf("Файл для считывания успешно открыт\n");
  241.     }
  242.     if ((fc = fopen("data.txt", "w")) == NULL)
  243.     {
  244.         printf("Не удалось открыть файл");
  245.         return -1;
  246.     }
  247.     else
  248.     {
  249.         printf("Файл для записи успешно открыт\n");
  250.     }
  251.     while (1) //построчное чтение строк из файла
  252.     {
  253.         int i = 0;
  254.         adresc = fgets(c, 255, fr); // чтение одной строки из файла
  255.         if (adresc == NULL) // проверка на конец файла
  256.         {
  257.             if (feof(fr) != 0)
  258.             {
  259.                 printf("\nThe end of the file\n");
  260.                 break;
  261.             }
  262.             else
  263.             {
  264.                 printf("Mistake was found");
  265.                 break;
  266.             }
  267.         }
  268.         int count = 0;
  269.         char *b = (char*)malloc(strlen(c)* sizeof(char));
  270.         char *a = (char*)malloc(strlen(c) * sizeof(char));
  271.         strcpy(a, c);
  272.         for (i; i < strlen(c); i++)
  273.         {
  274.             if ((c[i] >= 'A') && (c[i] <= 'z'))
  275.             {
  276.                 p = strtok(a, " ");
  277.                 while (p)
  278.                 {
  279.  
  280.                     strcpy(b, p);
  281.                     for (i = 0; i < strlen(b); i++)
  282.                     {
  283.                         if ((b[i] >= '0') && (b[i] <= '9'))
  284.                         {
  285.                             count++;
  286.                             fputs(p, fc);
  287.                             fprintf(fc, " ");
  288.                             break;
  289.                         }
  290.                     }
  291.                     if (count == 0)
  292.                     {
  293.                         for (i = strlen(b); i >= 0; i--)
  294.                         {
  295.                             b[i + 1] = b[i];
  296.                         }
  297.                         b[0] = '[';
  298.                         b[strlen(b) + 1] = '\0';
  299.                         b[strlen(b)] = ']';
  300.  
  301.                         fputs(b, fc);
  302.                         fprintf(fc, " ");
  303.  
  304.                     }
  305.                     count = 0;
  306.                     p = strtok(NULL, " ");
  307.                 }
  308.             }
  309.  
  310.             break;
  311.         }
  312.  
  313.         fprintf(fc, "\n");
  314.  
  315.     }
  316.     free(a);
  317.     free(b);
  318.     fclose(fr);
  319.  
  320.     fclose(fc);
  321.  
  322.     free(c);
  323.  
  324. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement