Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
 Аватар для JustBear
7 / 7 / 0
Регистрация: 01.03.2013
Сообщений: 166

Сокращение кода

13.01.2014, 11:51. Показов 4380. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Ребят, возникла мелкая проблема. Написал программку человеку, он начал сдавать ее преподу. Та не приняла, сославшись, что код "слишком длинный". Можно ли его как-то сократить, сохранив при этом "понятность" ввода данных в переменные?
Вот код, сократил, как мог:

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 (условие человека)

в приложении - извращенский вариант.
Миниатюры
Сокращение кода  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2014, 11:51
Ответы с готовыми решениями:

Сокращение кода
Я учусь сокращать код на С++, для решения олемпиадных задач. (только пока еще простые задачки) Условие задачи: Сбор черники ...

Сокращение кода
Думаю, многие, кто занимался олимпиадным программированием, знакомы с сайтом acmp.ru. И думаю многие знают, что чем короче код, тем круче...

Сокращение кода
Есть задача: Я решил таким способом: #include &lt;fstream&gt; int N,i,x,t,k,j,*G; main() { std::fstream...

7
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 166
13.01.2014, 12:05
О такой ошибке как слишком длинный код никогда не слышал но вот несколько символов убрать можно:

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;}}
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
13.01.2014, 12:06
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;
0
 Аватар для JustBear
7 / 7 / 0
Регистрация: 01.03.2013
Сообщений: 166
13.01.2014, 12:08  [ТС]
ShadowFirst, ну не нравится преподу и хоть в лепешку расшибись. Не знаю, что делать(

Добавлено через 54 секунды
nexen, я думал о таком, но тогда пользователь не знает, какую точно величину он вводит. Я хотел с сохранением "понятности". Так-то можно вообще урезать 5-6 строк.
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
13.01.2014, 13:26
Согласен с 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;
}
0
 Аватар для JustBear
7 / 7 / 0
Регистрация: 01.03.2013
Сообщений: 166
13.01.2014, 16:10  [ТС]
egor2116, спасибо, передам.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.01.2014, 16:27
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;
}
0
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
15.01.2014, 17:08
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));
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2014, 17:08
Помогаю со студенческими работами здесь

Сокращение кода и времени проверки (задача)
Однажды Вася очень долго просидел на остановке, прежде чем дождался своего автобуса. Чтобы как-то занять время, он решил записывать на...

Решение уравнения методом перебора (сокращение кода)
A*X3 + B*X2 + C*X + D = 0 нужно решить это уравнение методом перебора корни уравнение целые . как можно ещё сжать код? #include...

Сокращение дроби
Даны натуральные числа a и b, обозначающие соответственно числитель и знаменатель дроби. Сократите дробь, т.е найти такие натуральные p и...

Сокращение дроби
Есть класс дроби с полями Чисельник и Знаменник. надо написать функцию сокращение дроби. сделать функцию дружественной и т.п. я умею, мне...

Сокращение строки на 1 символ С++
Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru