greannmhar

конспект с массивами

Nov 16th, 2023
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* В файле лежит целое число N и далее ещё N целых чисел,
  2.  * образующих массив.
  3.  * Переставить элементы массива циклически на одну поицию влево. */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8.  
  9. /* Функция считывает  count элементов типа int из файла
  10.  * fin в аранее выделенный массив data достаточного рамера.
  11.  * Функция вовращает 0 в случае успеха и -1 в случае ошибки.
  12.  */
  13.  
  14. int ReadArray(FILE* fin, int* data, int count);
  15.  
  16. int ReadArray(FILE* fin, int* data, int count) {
  17.     for (int k = 0; k < count; k++) {
  18.         if (fscanf(fin, "%d", data + k) != 1)
  19.             return -1;
  20.     }
  21.    
  22.     return 0;
  23. }
  24.  
  25.  
  26. /* Функция выводит элементы массива в файл. */
  27. void PrintArray(FILE* fout, int* data, int count);
  28.  
  29. void PrintArray(FILE* fout, int* data, int count) {
  30.     for (int k = 0; k < count; k++)
  31.         fprintf(fout, "%d ", data[k]);
  32. }
  33.  
  34. void Process(int* data, int count);
  35.  
  36. void Process(int* data, int count) {
  37.     int value = data[0];
  38.    
  39.     for (int k = 1; k < count; k++)
  40.         data[k - 1] = data[k];
  41.    
  42.     data[count - 1] = value;
  43. }
  44.  
  45. int main(void) {
  46.     FILE* file;
  47.     int* data;
  48.     int count;
  49.    
  50.     if ((file = fopen("in.txt", "rt")) == NULL) {
  51.         printf("Can't open input file!\n");
  52.         return -1;
  53.     }
  54.    
  55.     if (fscanf(file, "%d", &count) != 1) {
  56.         printf("Can't read count!\n");
  57.         fclose(file);
  58.         return -1;
  59.     }
  60.    
  61.     if (count < 1) {
  62.         printf("Invalid count!\n");
  63.         fclose(file);
  64.         return -1;
  65.     }
  66.    
  67.     if ((data = (int*) malloc(count * sizeof(int))) == NULL) {
  68.         printf("Can't allocate memory!\n");
  69.         fclose(file);
  70.         return -1;
  71.     }
  72.    
  73.     if (ReadArray(file, data, count) < 0) {
  74.         printf("Can't read array!\n");
  75.         fclose(file);
  76.         free(data);
  77.     }
  78.    
  79.     fclose(file);
  80.    
  81.     Process(data, count);
  82.    
  83.     if ((file = fopen("out.txt", "wt")) == NULL) {
  84.         printf("Can't open output file!\n");
  85.         free(data);
  86.         return -1;
  87.     }
  88.    
  89.     PrintArray(file, data, count);
  90.  
  91.     fclose(file);
  92.     free(data);
  93.    
  94.     return 0;
  95. }
  96.  
Add Comment
Please, Sign In to add comment