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

Сокращение кода - C++

Восстановить пароль Регистрация
 
JustBear
 Аватар для JustBear
5 / 5 / 0
Регистрация: 01.03.2013
Сообщений: 160
13.01.2014, 11:51     Сокращение кода #1
Всем привет! Ребят, возникла мелкая проблема. Написал программку человеку, он начал сдавать ее преподу. Та не приняла, сославшись, что код "слишком длинный". Можно ли его как-то сократить, сохранив при этом "понятность" ввода данных в переменные?
Вот код, сократил, как мог:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
#include <math.h> 
void main()
{int h,k=0;
float r;
 cout<<"Enter r: ";
 cin>>r;
 cout<<"Enter h: ";
 cin>>h;
 cout<<"Enter 1 for S or 0 for V: ";
cin>>k; 
if(k==1) 
{cout<<"S = "<<2*3.14*r*(h+r); } 
else
{cout<<"V = "<<3.14*pow(r,2)*h;}}
Суть задачи: вычисление площади или объема фигуры с использованием if. ОДНОГО if!
P.S.: пишу строго на C++ 6.0 (условие человека)

в приложении - извращенский вариант.
Миниатюры
Сокращение кода  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 11:51     Сокращение кода
Посмотрите здесь:

сокращение дроби C++
Сокращение дроби C++
C++ Сокращение кода
Сокращение кода C++
Сокращение кода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
13.01.2014, 12:05     Сокращение кода #2
О такой ошибке как слишком длинный код никогда не слышал но вот несколько символов убрать можно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
using namespace std;
void main()
{int h,k=0;
float r, p=3.14;
 cout<<"Enter r and h: ";
 cin>>r>>h;
 cout<<"1 - S \n 0 - V: "<<endl;
cin>>k; 
if(k==1) 
{cout<<"S = "<<2*p*r*(h+r); } 
else
{cout<<"V = "<<p*r*r*h;}}
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
13.01.2014, 12:06     Сокращение кода #3
JustBear, использовать switch/case может?
И попробуй вводить сразу r, h, и k.
C++
1
2
cout << "Enter r, h, and 1 for S or 0 for V:" << endl;
cin >> r >> h >> k;
JustBear
 Аватар для JustBear
5 / 5 / 0
Регистрация: 01.03.2013
Сообщений: 160
13.01.2014, 12:08  [ТС]     Сокращение кода #4
ShadowFirst, ну не нравится преподу и хоть в лепешку расшибись. Не знаю, что делать(

Добавлено через 54 секунды
nexen, я думал о таком, но тогда пользователь не знает, какую точно величину он вводит. Я хотел с сохранением "понятности". Так-то можно вообще урезать 5-6 строк.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
13.01.2014, 13:26     Сокращение кода #5
Согласен с ShadowFirst, тоже не разу не слышал , что код слишком длинный.
Одно из двух либо этот человек, ни понимает и не может передать, что не нравится преподавателю, либо препод с перепоя.
Но все же предложу свой вариант
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
int main()
{
    float h, k, r, p=3.14;
    std::cout<<"Enter r and h: ";  std::cin>>r>>h;
    std::cout<<"1 - S \n 0 - V: \n"; std::cin>>k; 
    if(k) 
       std::cout<<"S = "<<2*p*r*(h+r); 
    else
       std::cout<<"V = "<<p*r*r*h;
}
JustBear
 Аватар для JustBear
5 / 5 / 0
Регистрация: 01.03.2013
Сообщений: 160
13.01.2014, 16:10  [ТС]     Сокращение кода #6
egor2116, спасибо, передам.
KOPOJI
Модератор
 Аватар для KOPOJI
16241 / 6452 / 389
Регистрация: 12.06.2012
Сообщений: 19,335
13.01.2014, 16:27     Сокращение кода #7
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main()
{
    float h, k, r, p=3.14;
    std::cout << "Enter r, h, and 1 for S or 0 for V:" << std::endl;
    std::cin >> r >> h >> k;
    std::cout << (k ? "S" : "V") << " = " << (p *r * (k ? 2 * (h +r) : r * h)) << std::endl;
    return 0;
}
Наверное, меньше текущий код можно сделать если только с помощью обфускации.. Если не понравится - пусть покажет такой код..)
C++
1
2
#include <iostream>
int main(){float h,k,r,p=3.14;std::cout<<"Enter r, h, and 1 for S or 0 for V:"<<std::endl;std::cin>>r>>h>>k;std::cout<<(k?"S":"V")<<" = "<<(p*r*(k?2*(h+r):r*h))<<std::endl;return 0;}
Добавлено через 3 минуты
а, это же c++, можно "забить" на return.. Ну и еще одну строчку можно "скостить" другим способом расставления скобок
C++
1
2
3
4
5
6
7
#include <iostream>
int main() {
    float h, k, r, p=3.14;
    std::cout << "Enter r, h, and 1 for S or 0 for V:" << std::endl;
    std::cin >> r >> h >> k;
    std::cout << (k ? "S" : "V") << " = " << (p *r * (k ? 2 * (h +r) : r * h)) << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2014, 17:08     Сокращение кода
Еще ссылки по теме:

Сокращение дроби C++
C++ Возможно ли сделать такое сокращение?
Сокращение дробей до несократимого вида C++

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

Или воспользуйтесь поиском по форуму:
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
15.01.2014, 17:08     Сокращение кода #8
C++
1
2
3
4
5
6
#include <iostream>
main() {
    float h, k, r, p=3.14;
    std::cin >> r >> h >> k;
    std::cout << (k ? "S" : "V") << " = " << (p *r * (k ? 2 * (h +r) : r * h)) << std::endl;
}
Добавлено через 1 минуту
C++
1
2
3
4
5
6
#include <iostream>
main() {
    float h, k, r, p=3.14;
    std::cin >> r >> h >> k;
    std::cout << (k ? "S" : "V") << " = " << (p *r * (k ? 2 * (h +r) : r * h));
}
Добавлено через 14 секунд
C++
1
2
3
4
5
6
#include <iostream>
main() {
    float h, k, r, p=3.14;
    std::cin >> r >> h >> k;
    std::cout << (k ? "S" : "V") << " = " << (p *r * (k ? 2 * (h +r) : r * h));
}
Yandex
Объявления
15.01.2014, 17:08     Сокращение кода
Ответ Создать тему
Опции темы

Текущее время: 14:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru