Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
#1

Совершенствование кода - C++

11.02.2012, 15:11. Просмотров 470. Ответов 3
Метки нет (Все метки)

Всем доброго времени суток На C++ я новичок, но эта тема создана не для проверки математического решения задач в моих кодах и не для решения этих же задач. Здесь я хочу спросить как правильнее оформить код чтобы он выглядел более совершенным (красивым). Все таки если учиться писать программы используя C++ то учиться писать их красиво нужно с самого начала (как я считаю).

Сама задача была по площади квадрата найти остальные значения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 1-1.cpp: По площади квадрата найти необходимые значения
//
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
        // Русский язык
    setlocale(LC_ALL, "");
    cout << "Введите площадь квадрата: S = ";
    double S;
    cin >> S;
    // a - сторона, d - диагональ, S1 - площадь описанного около квадрата круга
    double a = sqrt(S), d = sqrt(2*S), S1 = 3.14*0.5*a*a;
    // Округление всех чисел до двух знаков после запятой (если требуется)
    a = int(a * 100) / 100.0;
    d = int(d * 100) / 100.0;
    S1 = int(S1 * 100) / 100.0;
    // Вывод данных на экран
    cout << "\nОтветы:" << "\na = " << a << "\nd = " << d << "\nS1 = " << S1 << "\n";
    getch();
    return 0;
}
Собственно вопросы по коду:
1.
C++
1
float a = sqrt(S), d = sqrt(2*S), S1 = 3.14*0.5*a*a;
Адекватно ли сразу при объявлении переменных присваивать им формулы для рассчетов? Или всеже стоит просто объявить переменные, а ниже построчно уже присваивать формулы/значения?

2.
C++
1
2
3
a = int(a * 100) / 100.0;
d = int(d * 100) / 100.0;
S1 = int(S1 * 100) / 100.0;
Стоит ли для этой части округления создавать отдельную функцию/процедуру?

3.
C++
1
cout << "\nОтветы:" << "\na = " << a << "\nd = " << d << "\nS1 = " << S1 << "\n";
Так правильно или вывод каждой переменной стоит оформить cout'ом отдельными строками?

4. Насколько знаю тип float занимает меньше объема памяти чем double, не экономней ли его было использовать здесь?

5. Пожалуй технический вопрос. cin.get() не хочет задерживать экран после выполнения программы, поэтому приходиться использовать getch() подключая отдельную библиотеку. Быть может есть варианты почему cin.get() не работает?

Спасибо за внимание
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 15:11     Совершенствование кода
Посмотрите здесь:

Создание кода программы с нуля!! создание кода C++ - C++
ВОТ УСЛОВИЕ : Для данного вещественного x,a,b,c найти значение следующей функции f,принимающей вещественное задания: ...

Совершенствование программы - Delphi
Здравствуйте, помогите пожалуйста: мне нужно было написать программу:&quot;В одномерном массиве целых чисел вычислить и вывести на экран ...

Совершенствование шаблона Вдрузях - HTML, CSS
Здраствуйте я скачал шаблон Вдрузях мне нужна помощ в его досконаленни. Мне нужно для Ucoz я его по ставил когда я вожу логин и пароль...

Haskell: совершенствование языка vs популярные крупные проекты
По мотивам Haskell: цель или всё-таки средство?. Тема похоже назрела, хотелось бы вынести это обсуждение за пределы сообщества ruhaskell...

Совершенствование процессов планирования за использованием материально-технических ресурсов путём разработки.. - Экономика
Добрый вечер, беспокоит такой вопрос: Пишу дипломную работу на тему: Совершенствование процессов планирования за использованием...

Исполнение кода, написанного в текстовом файле (динамическая компиляция кода) - C#
к примеру есть у меня форма а на ней кнопка, можно ли присваивать код кнопке с текстового файла? пример в текстовике: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
11.02.2012, 15:30     Совершенствование кода #2
По-моему, все ОК. Если не устраивают длинные строчки, то пишете так:
C++
1
2
3
double a = sqrt(S), 
       d = sqrt(2*S),
       S1 = 3.14*0.5*a*a;
Добавлено через 1 минуту
для задержки перед cin.get() ставьте cin.sync().

Добавлено через 5 минут
cin.get() не работает, потому что, если уже производился ввод, то в буфере потока cin остается несчитанный символ новой строки, который и дочитывает cin.get(). cin.sync() очищает буфер, поэтому cin.get() брать из потока уже нечего, и он ждет ввода какого-нибудь символа.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
11.02.2012, 16:21     Совершенствование кода #3
1. да, мало того это хорошая идея - инициализировать сразу после объявления. только лучше каждую переменную на своей строке. более читаемо.

2. опять же из соображений читаемости и очевидности кода - да. что-то вродe a=round(a) гораздо яснее передает суть, чем строка a = int(a * 100) / 100.0; Но программа маленькая и это не критично.

3. если все умещается в пределах экрана, то можно. Иначе либо просто перенести строку с правильным выравниванием, либо сделать еще один cout<<...

4. исходить нужно из соображений требуемой точности, а не экономить память на глупостях.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 17:30     Совершенствование кода
Еще ссылки по теме:

Как реализовать замещение кода при активности другого кода? - PrestaShop
В cms подгружается стандартный шаблон страницы в формате .tpl, но код этой страницы должен исчезнуть при появлении в коде активности...

Засечь время выполнения (в ms) определённого кода или части кода - C#
Доброго времени суток всем. Хотелось бы поинтересоваться у знающих людей. Как можно засеч время выполнения(в ms) определённого кода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
12.02.2012, 17:30  [ТС]     Совершенствование кода #4
Спасибо за советы вроде со всем разобрался)
Yandex
Объявления
12.02.2012, 17:30     Совершенствование кода
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru