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

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

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

Program Zavdanya_3;
Uses crt;
Type masiv=array[1..10000]of Integer;
Var F,f1:file of integer;
    y,R:byte;
Procedure Stvorenna_file (var F:file of integer);
          var x:integer;
              i,n:integer;
          Begin rewrite (F);
                Write ('Створенно файл з розмірністтю: ');
                read (n);
                For i:=1 To n Do
                Begin x:=Random(100)-50;
                Write (f,x); End;
                Close (F);
                writeln;
                write('Файл створено!');
                End;
Procedure Pereglad_file (var F:file of integer);
          var x:integer;
          Begin reset (F);
                Write ('Вміст файлу:  ');
                While not eof(f) do
                begin read (f,x);
                      write (x,'    ');
                End;
                Writeln;
                Writeln;
                Write ('Файл прочитано повністю');
                close (F);
          End;
Procedure Dopovnenna_file (var F:file of integer);
          Var x,a,i:integer;
          Begin reset (f);
                seek (f,filesize(f));
                write ('Введіть кількіть елементів на яку  треба збільшити файл: ');
                Read (a);
                For i:=1 To a Do
                Begin x:=random(100)-50;
                      write (F,x);
                End;
                close (f);
                end;
Procedure Vulychenna_10 (var F:file of integer);
          Var Q:masiv; x:integer;
              a,b,c,i,v,p:integer;
          Begin
          i:=1; reset (f);
 
                While not eof(f) do
                begin Read (F,x);
                write(x,' ');
                If (x mod 7)=0 Then i:=i*x;
                End;
                writeln;
                 if i=1 then writeln('Чисел кратних 7 немає')
                 else
                 writeln('Добуток: ',i);
                Close (F);
                          End;
Begin Assign (F,'Zavdanya_3.txt');
      Repeat
      Write('--------------------------------------------------------------------------------');
      Write ('                                Головне меню');
      Writeln;
      Writeln ('1 - Створення файлу');
      Writeln ('2 - Перегляд файлу');
      Writeln ('3 - Доповнення Файлу');
      Writeln ('4 - Вивести добудок чисел які кратні числу 7');
      Writeln ('0 - Закінчить програму');
      Write('--------------------------------------------------------------------------------');
      Write ('Введіть один із пунктів головного меню: ');
      Read (r);
      Case r of
      1:Stvorenna_file (F);
      2:Pereglad_file (F);
      3:Dopovnenna_file (f);
      4:Vulychenna_10 (F);
      0:Writeln ('Кінець програми');
      End;
      Writeln;
      Until r=0;
End.
помогите с переводом

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char *filename = "Zavdanya_3.txt";
 
void create_file()
{
    int x, i, n;
    FILE *F = fopen(filename, "w");
    printf("Create file of size: ");
    scanf("%i", &n);
    for(i = 0; i < n; ++i)
    {
        x = rand() % 100 - 50;
        fprintf(F, "%i ", x);
    }
    fclose(F);
    printf("\nFile has been created succesfully\n");
}
 
void reload_file()
{
    int x;
    FILE *F = fopen(filename, "r");
    printf("\nFile contents are:  ");
    while(fscanf(F, "%i", &x) != EOF)
    {
        printf("%i ", x);
    }
    printf("\n\nFile has been readed successfully\n");
    fclose(F);
}
 
void add_to_file()
{
    int x,a,i;
    FILE *F = fopen(filename, "a");
    printf("\nEnter number of ints to add: ");
    scanf("%i", &a);
    for(i = 0; i < a; ++i)
    {
        x=rand() % 100 - 50;
        fprintf(F, "%i ", x);
    }
    fclose(F);
}
 
void product()
{
    int x, i = 1, f = 0;
    FILE *F = fopen(filename, "r");
    printf("\n");
    while(fscanf(F, "%i", &x) != EOF)
    {
        printf("%i ", x);
        if(x % 7 == 0)
        {
            f = 1;
            i*=x;
        }
    }
    if(f==0)
        printf("\nNo one of ints can be divided by 7\n");
    else
        printf("\nProduct: %i\n", i);
    fclose(F);
}
 
int main()
{
    int r;
    FILE *F = fopen("Zavdanya_3.txt", "r");
    do
    {
        printf("-------------------------------------------------------------------------------\n");
        printf("                                   Main menu\n");
        printf("1 - Create file\n");
        printf("2 - Show file contents\n");
        printf("3 - Add to file\n");
        printf("4 - Print product of ints which can be divided by 7\n");
        printf("0 - End the program\n");
        printf("-------------------------------------------------------------------------------\n");
        printf("Print one of the menu: ");
        scanf("%i", &r);
        switch(r)
        {
            case 1:
                create_file();
                break;
            case 2:
                reload_file();
                break;
            case 3:
                add_to_file();
                break;
            case 4:
                product();
                break;
            case 0:
                printf("End of program\n");
                break;
            default:
                break;
        }
        printf("\n");
    }
    while(r!=0);
}

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

  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