Перевести код с 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);
}
Объяснение кода листинга программы
- Объявлены переменные:
- 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 (указатель на файл, используется во всех функциях, работающих с файлом)
- Функция create_file создает файл указанного размера:
- Создается файл с помощью функции fopen.
- С помощью функции scanf считывается размер файла.
- С помощью цикла for и функции rand создаются случайные числа от -50 до 50 и записываются в файл с помощью функции fprintf.
- Функция fclose закрывает файл.
- Выводится сообщение об успешном создании файла.
- Функция reload_file считывает содержимое файла:
- Файл открывается с помощью функции fopen.
- С помощью цикла while и функции fscanf считываются числа из файла.
- Каждое число выводится на экран с помощью функции printf.
- Файл закрывается с помощью функции fclose.
- Выводится сообщение об успешном чтении файла.
- Функция add_to_file добавляет числа в файл:
- Файл открывается с помощью функции fopen.
- С помощью функции scanf считывается количество чисел для добавления.
- С помощью цикла for создаются случайные числа от -50 до 50 и записываются в файл с помощью функции fprintf.
- Файл закрывается с помощью функции fclose.
- Функция product вычисляет произведение чисел, которые делятся на 7:
- Файл открывается с помощью функции fopen.
- С помощью цикла while считываются числа из файла.
- Если число делится на 7, то увеличивается счетчик и сохраняется текущее значение произведения.
- После окончания чтения файла выводится сообщение о том, что ни одно из чисел не может быть разделено на 7, или выводится произведение.
- В функции main реализован главный меню программы:
- Файл открывается с помощью функции fopen.
- С помощью цикла do-while выполняется меню:
- Выводится меню.
- С помощью функции scanf считывается выбор пользователя.
- В зависимости от выбора выполняется соответствующая функция.
- После окончания выполнения программы выводится сообщение об ее завершении.