Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <locale.h>
- #include <math.h>
- #include <ctype.h>
- #define filename "myfile.txt"
- void createfile();
- void task();
- void reading();
- void print();
- int main()
- {
- setlocale(LC_ALL, "rus");
- setlocale(LC_NUMERIC, "eng");
- printf("Выберите задание a или b: ");
- char c;
- scanf("%c", &c);
- switch (c)
- {
- case 'a':
- createfile();
- task();
- print();
- break;
- case 'b':
- reading();
- break;
- default:
- printf("Вы ввели несуществующий пункт в меню\n");
- break;
- }
- getchar();
- getchar();
- return 0;
- }
- void createfile()
- {
- FILE *f;
- int n, i;
- float num;
- if ((f = fopen(filename, "wb")) == NULL)
- {
- printf("Не удалось создать файл");
- return -1;
- }
- printf("Введите количество чисел: ");
- scanf("%d", &n);
- for (i = 0; i < n; i++)
- {
- printf("%d-е число = ", i + 1);
- scanf("%f", &num);
- fwrite(&num, sizeof(float), 1, f);
- }
- printf("\n");
- fclose(f);
- }
- void task()
- {
- FILE *f;
- float num, max;
- int i, n = 0;
- int count = 0;
- int position = 0;
- float av = 0;
- char *b = " ";
- int N;
- if ((f = fopen(filename, "rb+")) == NULL)
- {
- printf("Не удалось открыть файл");
- return -1;
- }
- while (!feof(f))
- {
- fread(&num, sizeof(float), 1, f);
- if (!feof(f))
- {
- n++;
- }
- }
- for (i = 1; i <= n; i++)
- {
- fseek(f, (i - 1) * sizeof(float), SEEK_SET);
- fread(&num, sizeof(float), 1, f);
- if (num < 0)
- {
- count++;
- av += num;
- }
- }
- printf("Max = %.4f\n", av);
- if (count == 0)
- {
- fseek(f, 0*sizeof(float), SEEK_SET);
- fwrite(&av, sizeof(float), 1, f);
- }
- else {
- av = av / ((1.0)*count);
- fseek(f, n*sizeof(float), SEEK_SET);
- fflush(f);
- fwrite(&av, sizeof(float), 1, f);
- }
- fclose(f);
- }
- void print()
- {
- FILE *f;
- float num;
- if ((f = fopen(filename, "rb")) == NULL)
- {
- printf("Не удалось открыть файл");
- return -1;
- }
- printf("Файл после изменений:\n");
- while (!feof(f))
- {
- fread(&num, sizeof(float), 1, f);
- if (!feof(f))
- printf("%.4f ", num);
- }
- printf("\n\n");
- fclose(f);
- }
- void reading()
- {
- FILE *fr, *fc;
- char strsrs[255], s[255];
- char *a = NULL;
- char *b = NULL;
- char *o;
- char *p;
- int i, k = 1024;
- char *c = (char*)malloc(k * sizeof(char)); // создает массив, в который мы будем записывать данные из файла
- char *adresc; // укаазатель на массив, в который будут записываться данные из файла
- if ((fr = fopen("text.txt", "r")) == NULL)
- {
- printf("Не удалось открыть файл");
- return -1;
- }
- else
- {
- printf("Файл для считывания успешно открыт\n");
- }
- if ((fc = fopen("data.txt", "w")) == NULL)
- {
- printf("Не удалось открыть файл");
- return -1;
- }
- else
- {
- printf("Файл для записи успешно открыт\n");
- }
- while (1) //построчное чтение строк из файла
- {
- int i = 0;
- adresc = fgets(c, 255, fr); // чтение одной строки из файла
- if (adresc == NULL) // проверка на конец файла
- {
- if (feof(fr) != 0)
- {
- printf("\nThe end of the file\n");
- break;
- }
- else
- {
- printf("Mistake was found");
- break;
- }
- }
- int count = 0;
- char *b = (char*)malloc(strlen(c)* sizeof(char));
- char *a = (char*)malloc(strlen(c) * sizeof(char));
- strcpy(a, c);
- for (i; i < strlen(c); i++)
- {
- if ((c[i] >= 'A') && (c[i] <= 'z'))
- {
- p = strtok(a, " ");
- while (p)
- {
- strcpy(b, p);
- for (i = 0; i < strlen(b); i++)
- {
- if ((b[i] >= '0') && (b[i] <= '9'))
- {
- count++;
- fputs(p, fc);
- fprintf(fc, " ");
- break;
- }
- }
- if (count == 0)
- {
- for (i = strlen(b); i >= 0; i--)
- {
- b[i + 1] = b[i];
- }
- b[0] = '[';
- b[strlen(b) + 1] = '\0';
- b[strlen(b)] = ']';
- fputs(b, fc);
- fprintf(fc, " ");
- }
- count = 0;
- p = strtok(NULL, " ");
- }
- }
- break;
- }
- fprintf(fc, "\n");
- }
- free(a);
- free(b);
- fclose(fr);
- fclose(fc);
- free(c);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement