Перевод с паскаля на си - C (СИ)
Формулировка задачи:
Пожалуйста, помогите перевести код с паскаля на си (не ++).
program z13;
uses crt;
var i,m,k,sum : longint;
a : array [1..20] of longint;
b : array [1..50] of longint;
s : real;
begin
clrscr;
textcolor(10);
write('введите кол-во элементов таблицы: ');readln(m);
for i:=1 to m do
begin
write('a[',i,']=');readln(a[i]);s:=s+a[i];
end;
s:=s/m;
writeln('среднее орифметическое: ',s);m:=round(s);
write('при округлении ');
if m=1 then begin write('совершенное');readln;halt; end;
sum:=0;k:=1;
for i:=1 to m-1 do if m mod i=0 then begin
b[k]:=i;inc(k);
end;
for i:=1 to k-1 do sum:=sum+b[i];
if m=sum then write('совершенное')
else write('не совершенное');
readln;
end.Решение задачи: «Перевод с паскаля на си»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int main ()
{
int i, m, k, sum;
int a[20];
int b[50];
float s;
printf("введите кол-во элементов таблицы: ");
scanf("%d", &m);
for (i = 0; i < m; ++i)
{
printf("a[%d]=", i);
scanf("%d", &a[i]);
s = s + a[i];
}
s = s / m;
printf("среднее орифметическое: %f", s);
m = roundf (s);
printf("при округлении ");
if (m = 1)
{
printf("совершенное");
return 0;
}
sum = 0;
k = 1;
for (i = 0; i < m; ++i)
{
if ((m % i) == 0)
{
b[k] = i;
++k;
}
}
for (i = 0; i < k; ++i)
sum = sum + b[i];
if (m == sum)
printf("совершенное");
else
printf("не совершенное");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и математическими вычислениями
- Объявление переменных: i, m, k, sum, a[20], b[50], s
- Вывод сообщения и запрос на ввод количества элементов таблицы
- Организация цикла для ввода элементов таблицы a[i] и суммирования их значений
- Вычисление среднего арифметического путем деления суммы элементов на количество элементов
- Округление среднего арифметического до целого числа с помощью функции roundf
- Проверка, является ли округленное среднее арифметическим равным 1
- Если условие выполняется, то выводится сообщение
совершенноеи программа завершается - Иначе, инициализируется переменная sum и k равным 1
- Организация цикла для проверки делителей округленного среднего арифметического
- Если делитель найден, то он добавляется в массив b и увеличивается значение k
- После окончания цикла, проверяется условие, является ли сумма элементов массива b равной округленному среднему арифметическому
- Если условие выполняется, то выводится сообщение
совершенное, иначе -не совершенное - Возвращение значения 0, что означает успешное завершение программы