Перевести код с Pascal - C (СИ) (73839)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. Program Zavdanya_3;
  2. Uses crt;
  3. Type masiv=array[1..10000]of Integer;
  4. Var F,f1:file of integer;
  5. y,R:byte;
  6. Procedure Stvorenna_file (var F:file of integer);
  7. var x:integer;
  8. i,n:integer;
  9. Begin rewrite (F);
  10. Write ('Створенно файл з розмірністтю: ');
  11. read (n);
  12. For i:=1 To n Do
  13. Begin x:=Random(100)-50;
  14. Write (f,x); End;
  15. Close (F);
  16. writeln;
  17. write('Файл створено!');
  18. End;
  19. Procedure Pereglad_file (var F:file of integer);
  20. var x:integer;
  21. Begin reset (F);
  22. Write ('Вміст файлу: ');
  23. While not eof(f) do
  24. begin read (f,x);
  25. write (x,' ');
  26. End;
  27. Writeln;
  28. Writeln;
  29. Write ('Файл прочитано повністю');
  30. close (F);
  31. End;
  32. Procedure Dopovnenna_file (var F:file of integer);
  33. Var x,a,i:integer;
  34. Begin reset (f);
  35. seek (f,filesize(f));
  36. write ('Введіть кількіть елементів на яку треба збільшити файл: ');
  37. Read (a);
  38. For i:=1 To a Do
  39. Begin x:=random(100)-50;
  40. write (F,x);
  41. End;
  42. close (f);
  43. end;
  44. Procedure Vulychenna_10 (var F:file of integer);
  45. Var Q:masiv; x:integer;
  46. a,b,c,i,v,p:integer;
  47. Begin
  48. i:=1; reset (f);
  49. While not eof(f) do
  50. begin Read (F,x);
  51. write(x,' ');
  52. If (x mod 7)=0 Then i:=i*x;
  53. End;
  54. writeln;
  55. if i=1 then writeln('Чисел кратних 7 немає')
  56. else
  57. writeln('Добуток: ',i);
  58. Close (F);
  59. End;
  60. Begin Assign (F,'Zavdanya_3.txt');
  61. Repeat
  62. Write('--------------------------------------------------------------------------------');
  63. Write (' Головне меню');
  64. Writeln;
  65. Writeln ('1 - Створення файлу');
  66. Writeln ('2 - Перегляд файлу');
  67. Writeln ('3 - Доповнення Файлу');
  68. Writeln ('4 - Вивести добудок чисел які кратні числу 7');
  69. Writeln ('0 - Закінчить програму');
  70. Write('--------------------------------------------------------------------------------');
  71. Write ('Введіть один із пунктів головного меню: ');
  72. Read (r);
  73. Case r of
  74. 1:Stvorenna_file (F);
  75. 2:Pereglad_file (F);
  76. 3:Dopovnenna_file (f);
  77. 4:Vulychenna_10 (F);
  78. 0:Writeln ('Кінець програми');
  79. End;
  80. Writeln;
  81. Until r=0;
  82. End.
помогите с переводом

Решение задачи: «Перевести код с Pascal»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. char *filename = "Zavdanya_3.txt";
  5.  
  6. void create_file()
  7. {
  8.     int x, i, n;
  9.     FILE *F = fopen(filename, "w");
  10.     printf("Create file of size: ");
  11.     scanf("%i", &n);
  12.     for(i = 0; i < n; ++i)
  13.     {
  14.         x = rand() % 100 - 50;
  15.         fprintf(F, "%i ", x);
  16.     }
  17.     fclose(F);
  18.     printf("\nFile has been created succesfully\n");
  19. }
  20.  
  21. void reload_file()
  22. {
  23.     int x;
  24.     FILE *F = fopen(filename, "r");
  25.     printf("\nFile contents are:  ");
  26.     while(fscanf(F, "%i", &x) != EOF)
  27.     {
  28.         printf("%i ", x);
  29.     }
  30.     printf("\n\nFile has been readed successfully\n");
  31.     fclose(F);
  32. }
  33.  
  34. void add_to_file()
  35. {
  36.     int x,a,i;
  37.     FILE *F = fopen(filename, "a");
  38.     printf("\nEnter number of ints to add: ");
  39.     scanf("%i", &a);
  40.     for(i = 0; i < a; ++i)
  41.     {
  42.         x=rand() % 100 - 50;
  43.         fprintf(F, "%i ", x);
  44.     }
  45.     fclose(F);
  46. }
  47.  
  48. void product()
  49. {
  50.     int x, i = 1, f = 0;
  51.     FILE *F = fopen(filename, "r");
  52.     printf("\n");
  53.     while(fscanf(F, "%i", &x) != EOF)
  54.     {
  55.         printf("%i ", x);
  56.         if(x % 7 == 0)
  57.         {
  58.             f = 1;
  59.             i*=x;
  60.         }
  61.     }
  62.     if(f==0)
  63.         printf("\nNo one of ints can be divided by 7\n");
  64.     else
  65.         printf("\nProduct: %i\n", i);
  66.     fclose(F);
  67. }
  68.  
  69. int main()
  70. {
  71.     int r;
  72.     FILE *F = fopen("Zavdanya_3.txt", "r");
  73.     do
  74.     {
  75.         printf("-------------------------------------------------------------------------------\n");
  76.         printf("                                   Main menu\n");
  77.         printf("1 - Create file\n");
  78.         printf("2 - Show file contents\n");
  79.         printf("3 - Add to file\n");
  80.         printf("4 - Print product of ints which can be divided by 7\n");
  81.         printf("0 - End the program\n");
  82.         printf("-------------------------------------------------------------------------------\n");
  83.         printf("Print one of the menu: ");
  84.         scanf("%i", &r);
  85.         switch(r)
  86.         {
  87.             case 1:
  88.                 create_file();
  89.                 break;
  90.             case 2:
  91.                 reload_file();
  92.                 break;
  93.             case 3:
  94.                 add_to_file();
  95.                 break;
  96.             case 4:
  97.                 product();
  98.                 break;
  99.             case 0:
  100.                 printf("End of program\n");
  101.                 break;
  102.             default:
  103.                 break;
  104.         }
  105.         printf("\n");
  106.     }
  107.     while(r!=0);
  108. }

Объяснение кода листинга программы

  1. Объявлены переменные:
    • filename (строка, содержащая имя файла)
    • x (целое число, используется в функциях create_file, reload_file, add_to_file)
    • i (целое число, используется в функциях create_file, reload_file, add_to_file)
    • n (целое число, используется в функции create_file)
    • a (целое число, используется в функции add_to_file)
    • r (целое число, используется в функции main)
    • F (указатель на файл, используется во всех функциях, работающих с файлом)
  2. Функция create_file создает файл указанного размера:
    • Создается файл с помощью функции fopen.
    • С помощью функции scanf считывается размер файла.
    • С помощью цикла for и функции rand создаются случайные числа от -50 до 50 и записываются в файл с помощью функции fprintf.
    • Функция fclose закрывает файл.
    • Выводится сообщение об успешном создании файла.
  3. Функция reload_file считывает содержимое файла:
    • Файл открывается с помощью функции fopen.
    • С помощью цикла while и функции fscanf считываются числа из файла.
    • Каждое число выводится на экран с помощью функции printf.
    • Файл закрывается с помощью функции fclose.
    • Выводится сообщение об успешном чтении файла.
  4. Функция add_to_file добавляет числа в файл:
    • Файл открывается с помощью функции fopen.
    • С помощью функции scanf считывается количество чисел для добавления.
    • С помощью цикла for создаются случайные числа от -50 до 50 и записываются в файл с помощью функции fprintf.
    • Файл закрывается с помощью функции fclose.
  5. Функция product вычисляет произведение чисел, которые делятся на 7:
    • Файл открывается с помощью функции fopen.
    • С помощью цикла while считываются числа из файла.
    • Если число делится на 7, то увеличивается счетчик и сохраняется текущее значение произведения.
    • После окончания чтения файла выводится сообщение о том, что ни одно из чисел не может быть разделено на 7, или выводится произведение.
  6. В функции main реализован главный меню программы:
    • Файл открывается с помощью функции fopen.
    • С помощью цикла do-while выполняется меню:
    • Выводится меню.
    • С помощью функции scanf считывается выбор пользователя.
    • В зависимости от выбора выполняется соответствующая функция.
    • После окончания выполнения программы выводится сообщение об ее завершении.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут