Переписать код с Pascal - C (СИ)
Формулировка задачи:
Добрый вечер.
Прошу помощи по переводу кода программы из паскаля в Си.
Спасибо.
uses crt;
var i,j,m:longint;
begin
clrscr;
write('VVedite chislo:');readln(m);
for i:=1 to round(sqrt(m))+1 do
for j:=1 to round(sqrt(m))+1 do
if i*i+j*j=m then begin
write('Mojno! Chisla: ',i,' i ',j);
readln;halt;
end;
write('NO!');
readln;
end.Решение задачи: «Переписать код с Pascal»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int i, j;
float m;
printf("vvedite chislo: \n");
scanf("%f", &m);
for(i = 0; i < floor(sqrt(m)) + 1; i++)
for(j = 0; j < floor(sqrt(m)) + 1; j++)
if(i * i + j * j == m)
{
printf("Mojno! Chisla %d i %d", i, j);
exit(0);
}
printf("NO!");
getch();
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
, , , - Главная функция программы: main()
- Объявление переменных:
- i, j (целые числа)
- m (число с плавающей точкой)
- Вывод сообщения и запрос на ввод числа: printf(
vvedite chislo: \n); scanf(%f, &m); - Два вложенных цикла for, которые выполняются до тех пор, пока i и j меньше или равны квадратному корню из числа m плюс единица:
- Первый цикл for выполняет поиск всех целых чисел от 0 до корня из числа m (включительно)
- Второй цикл for выполняет поиск всех целых чисел от 0 до корня из числа m (включительно)
- Проверка условия: ii + jj равно числу m
- Если условие выполняется, то выводится сообщение
Mojno! Chisla %d i %d, i, j и программа завершается функцией exit(0) - Если условие не выполняется, то выводится сообщение
NO! - Вызов функции getch() для приостановки выполнения программы и ожидания нажатия клавиши