Advertisement
Qellex

7.2 - 18v

Mar 21st, 2022
1,128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #include <locale.h>
  5. #include <math.h>
  6.  
  7. // функция для определения простых чисел
  8. int prov_np(int n) {
  9.     for (int i = 2; i <= sqrt(n); i++) {
  10.         if (n % i == 0) {
  11.             // вывести, что n  не простое, так как делится на i
  12.             return 0;
  13.         }
  14.     }
  15.     return 1;
  16. }
  17.  
  18.  
  19. int main() {
  20.  
  21.     setlocale(LC_ALL, "rus");
  22.  
  23.     FILE* fp, rez; // иницилизация
  24.  
  25.     if (fopen_s(&fp, "arr.bin", "wb") != 0) {
  26.         printf("Ошибка открытия файла!");
  27.         system("pause");
  28.         return 0;
  29.     }
  30.     else {
  31.         // создаем и записываем бинарный файл
  32.         int n = 10;
  33.         int matrix[10] = { 13, 14, 16, 0, 0, 23, 17, 8, 9, 96 };
  34.  
  35.         printf("Числа:\n");
  36.         for (int i = 0; i < n; i++) {
  37.                 printf("%d ", matrix[i]);
  38.                 fwrite(&matrix[i], sizeof(int), 1, fp);
  39.         }
  40.     }
  41.  
  42.     if (fclose(fp) != 0)
  43.         printf("Ошибка закрытия файла");
  44.  
  45.     if (fopen_s(&fp, "arr.bin", "rb") != 0) {
  46.         printf("Ошибка открытия файла!");
  47.         system("pause");
  48.         return 0;
  49.     }
  50.  
  51.     int np = 0, n1 = 0, n2 = 0, n0 = 0; // простое. нечет, чет, нуль
  52.     int number[1]; // массив для хранения числа
  53.  
  54.     while (fread(number, sizeof(int), 1, fp) != 0) { // считываем по не дойдем до конца
  55.         // проверям какое число
  56.         if (number[0] == 0)
  57.             n0++;
  58.         else if (prov_np(number[0]))
  59.             np++;
  60.         else if (number[0] % 2 == 0)
  61.             n2++;
  62.         else
  63.             n1++;
  64.     }
  65.    
  66.     if (fclose(fp) != 0)
  67.         printf("Ошибка закрытия файла");
  68.  
  69.     if (fopen_s(&fp, "arr.bin", "wb") != 0) {
  70.         printf("Ошибка открытия файла!");
  71.         system("pause");
  72.         return 0;
  73.     }
  74.  
  75.     fprintf(fp, "%d %d", np, n1); fprintf(fp, " %d %d", n2, n0); // перезаписываем бинарный файл
  76.     printf( "\nпростых - %d нечетных - %d", np, n1); printf(" четных - %d нулевых - %d", n2, n0);
  77.  
  78.     if (fclose(fp) != 0)
  79.         printf("Ошибка закрытия файла");
  80.  
  81.     system("pause");
  82.     return 0;
  83. }
  84.  
  85. /*Дан бинарный файл целых чисел. Создать новый бинарный файл, в
  86. начале которого записаны четыре числа NП, NН, NЧ, N0 —
  87. количества чисел из исходного файла, являющихся соответственно
  88. простыми, нечётными составными, чётными и нулевыми. Далее в
  89. результирующем файле должны быть сохранены все простые
  90. числа, все нечётные составные и все чётные числа из исходного
  91. файла.*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement