Перевести программу с C++\CLI на С с использованием printf - C (СИ) (74071)
Формулировка задачи:
У меня есть программа на С, помогите сделать ее с printf. Спасибо!
// romb_okruzh.cpp: главный файл проекта.
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
using namespace System;
int main(array<System::String ^> ^args)
{
String^ d1;
String^ d2;
String^ r;
double diag1;
double diag2;
double rad;
double storona;
double max_ra_romb;
Console::WriteLine(L"Введите первую диагональ ромба");
d1 = Console::ReadLine();
diag1 = System::Convert::ToDouble(d1);
Console::WriteLine(L"Введите вторую диагональ ромба");
d2 = Console::ReadLine();
diag2 = System::Convert::ToDouble(d2);
Console::WriteLine(L"Введите радиус окружности");
r = Console::ReadLine();
rad = System::Convert::ToDouble(r);
storona = sqrt (pow(diag1,2)/4 + pow(diag2,2)/4);
max_ra_romb = (diag1*diag2)/(4*storona);
if (max_ra_romb >= rad){
Console::WriteLine(L"Окружность можно вписать в ромб");
}
if (max_ra_romb < rad){
Console::WriteLine(L"Окружность нельзя вписать в ромб");
}
getchar();
return 0;
}Решение задачи: «Перевести программу с C++\CLI на С с использованием printf»
textual
Листинг программы
//#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <locale.h>
int main()
{
setlocale(0, "");
char d1[10];
char d2[10];
char r [10];
double diag1;
double diag2;
double rad;
double storona;
double max_ra_romb;
printf("Введите первую диагональ ромба ");
scanf("%s%*c", d1);
sscanf(d1, "%lf", &diag1);
printf("Введите вторую диагональ ромба ");
scanf("%s%*c", d2);
sscanf(d2, "%lf", &diag2);
printf("Введите радиус окружности ");
scanf("%s%*c", r);
sscanf(r, "%lf", &rad);
storona = sqrt (pow(diag1,2)/4 + pow(diag2,2)/4);
max_ra_romb = (diag1*diag2)/(4*storona);
if (max_ra_romb >= rad)
printf("Окружность можно вписать в ромб\n");
if (max_ra_romb < rad)
printf("Окружность нельзя вписать в ромб\n");
getchar();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
- stdio.h - для работы с функциями ввода-вывода;
- math.h - для работы с математическими функциями;
- string.h - для работы со строками;
- locale.h - для установки локали.
- Установка локали на ``.
- Объявление переменных:
- char d1[10] - для хранения первой диагонали ромба;
- char d2[10] - для хранения второй диагонали ромба;
- char r[10] - для хранения радиуса окружности;
- double diag1 - для хранения значения первой диагонали ромба;
- double diag2 - для хранения значения второй диагонали ромба;
- double rad - для хранения значения радиуса окружности;
- double storona - для хранения значения стороны прямоугольника;
- double max_ra_romb - для хранения максимального значения радиуса окружности, которую можно вписать в ромб.
- Вывод сообщения и запрос на ввод первой диагонали ромба.
- Считывание значения первой диагонали ромба с помощью функции scanf и перевод его в тип double с помощью функции sscanf.
- Вывод сообщения и запрос на ввод второй диагонали ромба.
- Считывание значения второй диагонали ромба с помощью функции scanf и перевод его в тип double с помощью функции sscanf.
- Вывод сообщения и запрос на ввод радиуса окружности.
- Считывание значения радиуса окружности с помощью функции scanf и перевод его в тип double с помощью функции sscanf.
- Расчет значения стороны прямоугольника с помощью формулы: storona = sqrt (pow(diag1,2)/4 + pow(diag2,2)/4).
- Расчет максимального значения радиуса окружности, которую можно вписать в ромб, с помощью формулы: max_ra_romb = (diag1diag2)/(4storona).
- Проверка значения переменной max_ra_romb и вывод соответствующего сообщения с помощью условного оператора if.
- Проверка значения переменной max_ra_romb и вывод соответствующего сообщения с помощью условного оператора if.
- Вывод символа новой строки с помощью функции getchar.
- Возврат значения 0, что означает успешный конец работы программы.