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

простая сложность. разбиение кода (+) - C++

Восстановить пароль Регистрация
 
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
14.10.2013, 09:28     простая сложность. разбиение кода (+) #1
Хочу реализовать код программы по следующему принципу.

Например задан main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
main.cpp
if сложение или вычитание?
 
// задача про Сложение:
сin >> a >>в ;
а+в = с;
 
//задача про Вычитание:
cin >> a >>b >> d;
a - (b*d)  =c;
Нужно разбить код таким образом, чтоб кроме файла main.cpp были:
C++
1
2
3
4
5
6
7
8
9
10
11
12
main.cpp
if сложение или вычитание?
 
summa.cpp
// задача про Сложение:
сin >> a >>в ;
а+в = с;
 
raznica.cpp
//задача про Вычитание:
cin >> a >>b >> d;
a - (b*d)  =c;
---------
надеюсь псевдокод понятен. Хочу разбить программу, чтоб с main.cpp можно было выбирать summa.cpp или raznica.cpp по желанию пользователя.
Как разбить код??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2013, 09:28     простая сложность. разбиение кода (+)
Посмотрите здесь:

C++ Время выполнения(сложность)
создать функцию на основе кода (разбиение строки на отрезки) C++
Сложность в реализации команды C++
C++ Временная сложность алгоритмов
C++ Небольшая сложность
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
reisal78
 Аватар для reisal78
603 / 516 / 119
Регистрация: 28.04.2013
Сообщений: 1,451
14.10.2013, 09:44     простая сложность. разбиение кода (+) #2
Это сделать совсем не сложно, если Вы знакомы с функциями.

Вот пример. Если чтото не поймете - спрашивайте.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//File1.cpp 
//Глобальные переменные
bool IsResult = false;
double Result;
 
//Прототипы функций
void Invert9thPower(double);
 
//Основная функция
int main()
{
    double x = 2.5, y, res;
 
    Invert9thPower (x);
    if (IsResult) res = Result;
 
    y = 1.7; Invert9thPower (y - 1.7);
    if (IsResult) res = Result;
 
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//File2.cpp
extern double Result;
extern bool IsResult;
 
void Invert9thPower (double x)
{
    IsResult = false;
    if (x != 0) IsResult = true;
    else return;
    int i; double Result = 1.0;
    for (int i = 0; i <= 9; i++) Result = Result / x;
    ::Result = Result;
}
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.10.2013, 09:47     простая сложность. разбиение кода (+) #3
Igorokmen, На функции summa() и функция raznica() и смотря что пользователь выбрал вызывать ту или иную функцию.

Можно попробовать через #include , просто создать два файла summ.cpp в него сразу записать код программы и raznica.cpp тоже код программы для разницы
и примерно так будет
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
//ввод пользователя
int summ(0);
cout <<"Enter summ (1), difrence (0) ..."<<endl;
cin >>summ;
if(summ)
#include "summ.cpp"
else
#include "raznica.cpp"
}
Препроцессор заменит строки #include на код который будет в файлах.
Но лучше через функции.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
14.10.2013, 09:50     простая сложность. разбиение кода (+) #4
Здесь можно код вложить в фунцкии, а функции спрятать по файлам если есть необходимость.
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
25
26
27
28
//summa.h
int summ(int a,int b)
{
    return a+b;
}
 
//raznica.h
int minus(int a,int b,int d)
{
   return a-(b*d);
}
 
//main.cpp
#include <iostream>
#include <summa.h>
#include <raznica.h>
 
int main(){
char operation;
int a,b,d;
cin>>operation;
switch(operation)
{
case '+' :  cin>>a>>b;  cout<<summ(a,b); break;
case '-' : cin>>a>>b>>d; cout<<minus(a,b,d); break;
default : cout<<"No operation";
}
}
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
14.10.2013, 11:07  [ТС]     простая сложность. разбиение кода (+) #5
Спасибо Всем ВАМ!
0x10
14.10.2013, 11:28
  #6

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
Можно попробовать через #include , просто создать два файла summ.cpp в него сразу записать код программы и raznica.cpp тоже код программы для разницы
и примерно так будет
Инновационный подход, лучшие практики в исполнении Гуру.

ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.10.2013, 11:48     простая сложность. разбиение кода (+) #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Инновационный подход, лучшие практики в исполнении Гуру.
В С++ мб, а в пхп include используется часто, файлы с фрагментами кода подключаются при определенных условия и меняется представление сайта.

Добавлено через 3 минуты
Да и похоже это один из вариантов разбиения можно в принципе без функций, в файл записать и подключать, результат один и тот же, ничего не измениться.
Ах да это будет равносильно inline функции, даже лучше получиться, код будет более производительный.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
14.10.2013, 12:35     простая сложность. разбиение кода (+) #8
Цитата Сообщение от ninja2 Посмотреть сообщение
код будет более производительный
А ты проверял? Ты хоть понимаешь, что такое инлайн?
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.10.2013, 14:41     простая сложность. разбиение кода (+) #9
Цитата Сообщение от coloc Посмотреть сообщение
А ты проверял? Ты хоть понимаешь, что такое инлайн?
Ну это функции такие ну обозначаются inline void f(){return;} например.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2013, 15:28     простая сложность. разбиение кода (+)
Еще ссылки по теме:

Двухсвязный список (разбиение кода на файлы) C++
C++ Временная сложность алгоритма
Неожиданная сложность с read_json() C++

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

Или воспользуйтесь поиском по форуму:
0x10
14.10.2013, 15:28     простая сложность. разбиение кода (+)
  #10

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
Ну это функции такие ну обозначаются inline void f(){return;} например.
Понимание - это не на уровне синтаксиса, а на уровне ассемблера.

Yandex
Объявления
14.10.2013, 15:28     простая сложность. разбиение кода (+)
Ответ Создать тему
Опции темы

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