Форум: "Прочее";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
ВнизБазовые зниния C++ Найти похожие ветки
← →
grisme © (2006-08-04 15:50) [0]Устроился в компанию.) Написание большой системы проектирование, расчетов для нефтяной компании. Моя часть - программинг матаппарата(исходя из работы инженеров) и движка на OpenGL(моделирование, 3D построения, etc.) в среде Delphi. Но до оформления(в понедельник) попросили написать подпрограмму для расчета течения жидкости(нефти, скажем прямо :0) в различных условиях(давления, сечения труб, процента смешения, типа скважин и прочего много-много параметров - это не важно), но в среде MSVC 6 (сам знаю - изврат :0), просто мол пока я свободен дома до срока начала - помочь им..
так вот, Cи я знаю на уровне "почитать документацию",т.е. "голый Си", но конкретностей, к сожалению не ведаю..
приведите пожалуйста базовый пример написания хедера. т.е. представьте чистый лист: нужно описать константы, глобальные переменные, пользовательские ф-ии, чтобы хедер к приложению на MFC прицепить и юзать...:0) не нужно приводить гору(откуда-нибудь выдранную тоже), просто самый базовый уровень. буду очень признателен
← →
grisme © (2006-08-04 17:16) [1]пока сам варганил, посмотрел в готовых модулях - константы объявляются,как #define, ф-ии как обычно,но при компиляции MSVC ругался сразу на заголовок первой же ф-ии, он считал ее константой. как указать, что сейчас идет уже основная (implementation) часть модуля, т.е. где сам код подпрограмм лежит? и еще, нужно ли заголовки подпрограмм выносить (ака interface в delphi-модулях) в "интерфейсную" часть заголовочника(ежели такая вообще имеется)?
← →
DesWind © (2006-08-04 17:16) [2]Наверно лучше всетаки книгу полистать хоть глазами пробежаться....
Лучше пол дня потерять, потом за пол часа долететь(с)
← →
StriderMan © (2006-08-04 17:19) [3]
> подпрограмму для расчета течения жидкости(нефти, скажем
> прямо :0) в различных условиях(давления, сечения труб, процента
> смешения, типа скважин и прочего много-много параметров
> - это не важно)
за выходные???? а ты в гидродинамике сечешь? это ж убойнешие дифуры!!!
← →
Jeer © (2006-08-04 17:25) [4]
> это ж убойнешие дифуры!!!
Это для студентов.
Для инженеров - обычные методики, разработанные "убойными" специалистами по "истечению жидкостей".
← →
grisme © (2006-08-04 17:27) [5]я же сказал, что по результатам работы инженеров...:0) даны расчетные выкладки, просто их "завернуть" в приложеньице нужно..:0) но вот незадача, им обязательно на MSVC...:0) отказаться не предлагайте..:0)
p.s. попробовал обернуть в #ifdef <имя модуля> #endif
теперь без ошибок, подозреваю, что "обернул" в implementation. Это так?)
← →
Bless © (2006-08-04 17:31) [6]
> grisme © (04.08.06 17:16) [1]
>
> пока сам варганил, посмотрел в готовых модулях - константы
> объявляются,как #define, ф-ии как обычно,но при компиляции
> MSVC ругался сразу на заголовок первой же ф-ии, он считал
> ее константой. как указать, что сейчас идет уже основная
> (implementation) часть модуля, т.е. где сам код подпрограмм
> лежит? и еще, нужно ли заголовки подпрограмм выносить (ака
> interface в delphi-модулях) в "интерфейсную" часть заголовочника(ежели
> такая вообще имеется)?
.h-файл - это и есть "интерфейсная часть". А "implementation-часть модуля"
идет в другом файле .cpp//-----------simple_lib.h-------------
...
void f();
...
//-----------simple_lib.cpp-------------
...
void f(){
cout<<"body of function f"<<endl;
};
....
//--------main.cpp-------------
....
#include "simple_lib.h"
int main(){
f();
};
...
Приблизительно так, видимо.
← →
DesWind © (2006-08-04 17:31) [7]Если я не прав, то поправте. Там нет никаких частей переменные можно объявлять в любом месте, но видно их будет только в пределах подпрограммы в которой они объявлены. Хотя насколько помню там есть оператор расширяющий область видимости. Заголовочные файлы это просто файлы с прототипами ф-й.
← →
grisme © (2006-08-04 17:31) [8]ценю ваше внимание, но дайте пожалуйста ответ(лучше примерный модуль)..:0)
инженеры строят "фундамент", затем уже мне на результатах производить совсем другие расчеты, но это уже другая история и на Delphi :0)
← →
grisme © (2006-08-04 17:34) [9]Bless © (04.08.06 17:31) [6]
DesWind © (04.08.06 17:31) [7]
Спасибо..:0)
← →
isasa © (2006-08-04 17:35) [10]grisme © (04.08.06 15:50)
... для расчета течения жидкости(нефти, скажем прямо :0) в различных условиях(давления, сечения труб, процента смешения,...
Тебе конкретную мат. аппарат хоть дали, для подпрограммы. Потому, что с фантазией здесь, подход не на один год.
Особенно процента смешения. :) Жидкость неопределенного состава.
← →
Bless © (2006-08-04 17:35) [11]Что касается общих переменных, то с ними все аналогично функциям:
объявление - в h-файле, определение - в .cpp
Т.е. так:---simple_lib.h
...
extern int my_variable;
...
---simple_lib.cpp
...
int my_variable;
...
PS Я в cpp совсем-совсем новичок да и пишу не проверяя, так что имей в виду :)
← →
grisme © (2006-08-04 17:40) [12]Матаппарат этот не такой уж нетривиальный.:0) там еще огурцы-там просто матмодели течения в трубе, в основном. у них есть еще матмодель, привязанная к грунту, где от толщины грунта нужно изменять факторы и параметры труб, и затем уже эту матчасть(которую мне оборачивать) подключать...:0) хотя можно и в обратной логике все представить..
← →
Piter © (2006-08-04 17:48) [13]Jeer © (04.08.06 17:25) [4]
> это ж убойнешие дифуры!!!
Это для студентов.
Для инженеров - обычные методики, разработанные "убойными" специалистами по "истечению жидкостей".
ну не надо. Это действительно задача не на 3 дня. И проблем возникнет предостаточно.
Я видел коммерческий софт за килобаксы, который выполняет эти задачи... Конечно, функционал не сравнить, но тем не менее...
← →
StriderMan © (2006-08-04 17:58) [14]Звали меня в такую сферу. Дали рюхать учебник по гидродинамике. А я к тому времени только что диплом защитил, естесственно на второй странице я учебник закрыл, т.к. почувствовал себя обманутым - только учеба кончилась а тут на тебе....
Короче отказался. Может конечно я ленивый раздолбай и упустил свою синию птицу (все же нефть...), но не жалею если честно.
← →
grisme © (2006-08-04 18:02) [15]Софт тоже коммерческий..:0)
Господа, с матаппаратом проблем нету. На данный момент довольно глупая проблема - незнание синтаксиса..:0)
если Освященный© прав, то подтвердите его слова..:0)
Bless, не в обиду, просто ты сам признался, что новичек..:0)
← →
isasa © (2006-08-04 18:04) [16]Piter © (04.08.06 17:48) [13]
Название софта, или ссылки на сайт не подбросишь. Аж любопытно стало.
Зависимости - это одно(теория), а практика это чуть другое(обычно, это решение этой белиберды в нескольких точках, при наборе заданных входных).
← →
Jeer © (2006-08-04 18:16) [17]Piter © (04.08.06 17:48) [13]
Если есть инженерная методика расчета, то все намного проще, чем решение нелинейных дифуров с использованием МКР
← →
grisme © (2006-08-04 18:32) [18]Подскажите, учебник же не качать/искать ради этого..:0) мне же в итоге, не на C писать потом..:0) Версия Bless© отказывается собираться..:0( т.е. растащил по 2-м модулям *.cpp и *.h. в h оставил только головы функций, константы и тела функций вынес в cpp. на cpp компилятор ругается, что неожиданный конец файла, и что нужно поставить точку с запятой перед константой(???) указывая мне на заголовок фунции(которая с телом)..:0)
P.S. на всякий случай, точка с запятой стоит..:0)
← →
Jeer © (2006-08-04 18:33) [19]
> учебник же не качать/искать ради этог
Почему - нет ?
← →
grisme © (2006-08-04 18:38) [20]>Почему - нет ?
Потому что если и буду переходить на эту среду, то, по крайней мере, не сейчас(в частности, выходные)..:0)
← →
Bless © (2006-08-04 18:51) [21]
> grisme © (04.08.06 18:32) [18]
Приведи фрагмент кода, чтоб я мог у себя попробовать.
← →
grisme © (2006-08-04 19:04) [22]Пишу с той же конструкцией..:0)
//---------------test.cpp-----
#include <трали-вали>
... //другие модули
#define ...;
...//другие константы
int Sum(int a,int b) //ну это например..:0)
{
int c;
c=a+b;
return (c);
}
//-----------------------test.h
#include ... //тоже чего-нибудь
int sum(int a,int b);
вот, примерно такого вида конструкция. затем уже в основных модулях подключаю модуль test.h и юзаю sum(тоже например привел)..:0)
← →
Bless © (2006-08-04 19:09) [23]Не, "трали-вали" тут мне не поможет:)
Я хочу ошибку у себя увидеть, тогда может чем помочь смогу.
Т.е. сделай простейший рабочий пример, который генерирует ошибку и запости его сюда. Должно, видимо, быть три файла test.cpp, test.h и basic_module.cpp
← →
Bless © (2006-08-04 19:09) [24]Кстати, после #define...
никаких ";" с запятой быть не должно!
← →
Bless © (2006-08-04 19:11) [25]Кстати, после #define...
никаких ";" с запятой быть не должно!#define x 5;
- заменяет в тексте имя x на то, что идет после этого имени в директиве #define, т.е. в этом случае на "5;"
И примерz=x+y;
после обработки препроцессором будет выглядеть какz=5;+y
,
что естественно даст ошибку
← →
Bless © (2006-08-04 19:13) [26]";" с запятой
читать как
точек с запятой
← →
Piter © (2006-08-04 19:24) [27]isasa © (04.08.06 18:04) [16]
Название софта, или ссылки на сайт не подбросишь. Аж любопытно стало
к сожалению, не помню :(
Нам на практике показывали.
Jeer © (04.08.06 18:16) [17]
Если есть инженерная методика расчета, то все намного проще, чем решение нелинейных дифуров с использованием МКР
кто же спорит. Но даже если есть эмпирическое формулы на все случаи жизни - просто задолбаешься все это собирать по различным источникам. И методик этих - туча немерянная.
← →
grisme © (2006-08-04 19:35) [28]fatal error C1010: unexpected end of file while looking for precompiled header directive
Эта ошибка на последнюю строку в модуле cpp, после описания всех тел ф-й
← →
vidiv © (2006-08-04 19:52) [29]
> grisme © (04.08.06 19:35) [28]
а ты опиши функции в основной программе и отдай. там ж мастера - сами все сделают :)
← →
Bless © (2006-08-04 19:53) [30]Слушай, эта ошибка мне ни о чем не говорит.
Ну сделай ты три простейших файла и приведи здесь их текст. Неужели это трудно?
Я попробовал у себя://--------------head.cpp----------------
#include "head.h"
#define x 5; // хоть так и неправильно, но я x нигде не использую
int sum(int a,int b) //ну это например..:0)
{
int c;
c=a+b;
return (c);
}
//------------head.h-------------------
#include <iostream>
int sum(int a, int b);
//-----------main.cpp--------------------
#include <iostream>
#include "head.h"
int main(){
std::cout << sum(2,3) << std::endl;
return 0;
}
Все работает.
← →
vidiv © (2006-08-04 19:57) [31]
> std::cout << sum(2,3) << std::endl;
я с Си чуть чуть тоже знаком. такой синтаксис меня пугает, объясни что к чему, пожалуйста :)
← →
Bless © (2006-08-04 20:12) [32]
> акой синтаксис меня пугает, объясни что к чему, пожалуйста
> :)
Что именно пугает?
std:: ?
Так было не всегда и в старых версиях можно было писать так:cout << sum(2,3) <<endl;
Я еще до namespace-ов не дошел :), но в общем так:
все классы стандартной библиотеки (и cout в том числе) объявлены в пространстве имен std.
Пространства имен (namespace) ограничивают видимость имен, объявленных внутри него. Обратиться к имени, объявленному внутри namespace-а, можно только явно указав имя namespace-а конструкцией вида <имя_namespace-а>::<имя чего_то_там>
Можно было бы написать так:using namespace std
cout << sum(2,3) << endl;
Или тебе сама строчкаcout << sum(2,3) << endl;
тоже не понятно?
← →
vidiv © (2006-08-04 20:15) [33]не...
вот этоstd::cout
- мне примерно понятно, а вот знаки<<
вообще нет, даж пугают
← →
Bless © (2006-08-04 20:23) [34]Ну с этими знаками ты по C должен быть знаком: << - это операция сдвига влево.
Но C++ позволяет перегружать операции, т.е. придавать им какой тебе нравится смысл.
Т.е. ты обяъвляешь класс, внутри него перегружаешь операцию какую-либо и теперь везде, где эта операция будет применяться к твоему классу, она будет означать не то, что обозначала изначально, а то, как ты ее переопределил.
cout - это класс (стандартный выходной поток).
Внутри него перегружена операция "<<" и она обозначает применительно к этому классу не "сдвинуть влево", а "вывести в выходной поток".
Строчкаcout << sum(2,3) << endl;
означает просто "вывести в выходной поток cout(на экран) значение функции sum(2,3) и символ новой строки endl"
← →
Bless © (2006-08-04 20:25) [35]Короче это c++-ная альтернатив c-шной функции
printf("%d\n", sum(2,3);
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.037 c