Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Управление системой через C++ (http://forum.oszone.net/showthread.php?t=135681)

XEN_STRANGER 24-03-2009 11:46 1073068

Управление системой через C++
 
Всем доброе время суток...

У меня появилась идея сделать прогу, которая например сможет извлеч/вставить диск в приводе, выключить, перезагрузить комп и тому подобное. Но и при возможности переходить в фоновый режим, дабы быть незаметной и всё это на c++. Нет я не ставлю себе цель сделать вирус, порсто небольшой прикол для учительницы по информатике. Но так же и добавить некоторые функции в свой проэкт...

Кто чем может, помогите, заранее спасибо.

Drongo 24-03-2009 12:00 1073085

Цитата:

Цитата XEN_STRANGER
Но так же и добавить некоторые функции в свой проэкт... »

Какие?
Цитата:

Цитата XEN_STRANGER
порсто небольшой прикол для учительницы по информатике »

Вот этого лучше делать не нужно. Дурное дело, не хитрое, лучше напиши что-то, что ей будет приятно от того, что она тебя чему-то научила.

Codru 24-03-2009 14:20 1073249

Цитата:

Цитата XEN_STRANGER
порсто небольшой прикол для учительницы по информатике. »

Откуда такое огромное желание нагадить кому-то? При этом используя знания и ум других.
Нравится, когда кто-то вам гадит, да?
Действительно
Цитата:

Цитата Drongo
Дурное дело, не хитрое, лучше напиши что-то, что ей будет приятно от того, что она тебя чему-то научила. »

Ребята, у вас вся жизнь впереди, научитесь делать добро, добром вам и ответят. Не гадьте все вокруг, рано или поздно сами в это же дерьмо вляпаетесь.

Drongo 24-03-2009 15:08 1073292

Цитата:

Цитата Codru
Не гадьте все вокруг, рано или поздно сами в это же дерьмо вляпаетесь. »

Во-во-во, притом учителю, зарплата которой чисто символическая. Если она тебя не научит, то кто тогда?
Был у нас случай во времена учёбы, классическая ситуация, девчонка после института, лет 22-23, классный преподаватель информатики. И был студент, наглый, циничный и состоятельный. И однажды он накурился и нагрубил ей как своей ровеснице, выругав матами. Ему ничего не было. А препод-девчонка, расплакалась на глазах и ушла с работы. Поэтому не все шутки можно понять. К тому же если учитель поощряет новшества и развитие творческих идей, это одно, а вот просто так, чтобы допекти, это низко. Codru прав, и я удалил свои советы выше. XEN_STRANGER, Хочешь гадить? Тужься.

crashtuak 24-03-2009 17:59 1073452

Drongo, Codru, вы правы.XEN_STRANGER, сейчас я тебе выложу пример проги соответствующей твоим просьбам, только не знаю, понравится ли он тебе и твоему ПК :) :) :) . И за 16 лет своей жизни у меня только раз возникло подобное желание "по приколу" сделать что то человеку, и запомнил я это на всю жизнь...

Codru 24-03-2009 19:37 1073565

crashtuak, не надо. Злом, зло не уничтожить.

XEN_STRANGER 24-03-2009 21:03 1073664

crashtuak, Drongo, Codru, Ребят тихо, тихо, вы что подумали? Я не хочю делать ничего плохово, и тем более теперь вообще уже расхотелось.
Цитата:

Цитата Drongo
Но так же и добавить некоторые функции в свой проэкт... »
Какие? »

Для моего проэкта мне нужны функции закрытия самого приложения, выключение / перезагрузка компьютера, прошу вас покажите примеры, чтоб я понял сам принцып, а то я в c++ недавно, и за пределы самого приложения пока не выходил.

Заранее большое спасибо, крайне извиняюсь за слова, повлекшие вышеизложенные дискуссии...

Delirium 25-03-2009 00:57 1073838

XEN_STRANGER, выключение, перезагрузка компа, открытие дисковода - на все есть стандартные утилиты Windows. Например, shutdown - выключение/перезагрузка. Для реализации необходимо просто запускать из своей программы другую программу.
Пример выключения компьютера. И вообще, учитесь пользоваться поиском в гугле , там есть ответы практически на все вопросы по данной тематике.

crashtuak 25-03-2009 08:32 1073986

XEN_STRANGER, вот тебе факи:
http://www.cyberguru.ru/programming/...d-cpp-faq.html - Borland C++ Builder FAQ
http://www.cyberguru.ru/programming/...p-vcl-faq.html - Borland C++ Builder VCL FAQ
http://www.cyberguru.ru/programming/...l-cpp-faq.html - Visual C++ FAQ
Там есть ответы на твои вопросы.
Для закрытия приложения см в консоли taskkill /?. Потом в своей программе просто запускаешь taskkill с нужными параметрами.
(только не надо делать то, что ты запланировал раньше :) :) )

Busla 25-03-2009 11:05 1074122

Delirium, crashtuak для всего этого есть API, а чуть что - "запускать из своей программы другую программу" - это не "управление системой через C++"!

crashtuak 25-03-2009 11:33 1074159

Busla, про API я знаю (в ссылках на факи там и есть описание API), просто я сейчас хочу из своей проги запустить другую, а ничего не выходит :( , ну и я зациклился на запуске программ :).
ПЫСЫ: Уже вышло :), спс Busla.

XEN_STRANGER 25-03-2009 11:58 1074183

Кто-нибудь может выложить пример кода, который выключает комп?

Drongo 25-03-2009 13:22 1074264

Цитата:

Цитата XEN_STRANGER
пример кода, который выключает комп »

Код:

ExitWindowsEx(EWX_SHUTDOWN, 0);

XEN_STRANGER 25-03-2009 15:14 1074378

Drongo,
Цитата:

Цитата Drongo
ExitWindowsEx(EWX_SHUTDOWN, 0); »

Так, это функция значит, а никаких инклудов не надо?
Рас уж это не так сложно выложи пожалуйсто ещё перезагрузку и если можно закрытие самой проги

Drongo 25-03-2009 15:43 1074404

XEN_STRANGER, Выложишь потом программу, что написал? ;)
Цитата:

Цитата XEN_STRANGER
Так, это функция значит, а никаких инклудов не надо? »

Нет, никаких, в обработчик ставишь.
Цитата:

Цитата XEN_STRANGER
выложи пожалуйсто ещё перезагрузку »

Код:

ExitWindowsEx(EWX_REBOOT, 0);
Цитата:

Цитата XEN_STRANGER
если можно закрытие самой проги »

Код:

...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Close();
}
...


crashtuak 25-03-2009 16:55 1074489

Цитата:

Цитата Drongo
XEN_STRANGER, Выложишь потом программу, что написал? »

Только клади в виде исходников, а то скопиленый вариант ещё компа поломает :)

XEN_STRANGER 25-03-2009 22:11 1074798

crashtuak, Вот, доволен?

Код:

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <cmath>

using namespace std;

typedef struct _CONSOLE_FONT_INFOEX
{
  ULONG cbSize;
  DWORD nFont;
  COORD dwFontSize;
  UINT  FontFamily;
  UINT  FontWeight;
  WCHAR FaceName[LF_FACESIZE];
}
CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;

typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);    // прототип недокументированый функции для XP

typedef BOOL (WINAPI *SETCURRENTCONSOLEFONTEX)(HANDLE,BOOL, PCONSOLE_FONT_INFOEX);  // для vista
SETCURRENTCONSOLEFONTEX SetCurrentConsoleFontEx  ;
SETCONSOLEFONT SetConsoleFont;



unsigned int GetFib (unsigned int position);
int physic ();
int gorenie ();
int nagrev ();
int math ();
int x2yravn ();
double GetX2yravn (double a, double b, double c, double* x1, double* x2);
int fibmain ();
int backer ();


// -------------------------Главное меню---------------------------------------------------------------------

int main ()
{

  OSVERSIONINFOEX osvi;
  CONSOLE_FONT_INFOEX cfon;
  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  GetVersionEx((OSVERSIONINFO *) &osvi) ;  // получение версии винды
  HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");    // функции
  if (osvi.dwMajorVersion<6)
  {   
        SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");  // берем  адрес функции
        if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}  //  если ошибка
        SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),10);  // устанавливаем 10 шрифт..
        //эксперементально установил что в обычной XP  это Lucida  Console 14.

  } 
  else
  {
        SetCurrentConsoleFontEx =(SETCURRENTCONSOLEFONTEX) GetProcAddress(hmod, "SetCurrentConsoleFontEx");  // берем  адрес  функции
        if (!SetCurrentConsoleFontEx) {cout<<"error\n" ; exit(1);}  //  если ошибка
        ZeroMemory(&cfon, sizeof(CONSOLE_FONT_INFOEX));
        cfon.cbSize=sizeof(CONSOLE_FONT_INFOEX);
        //cfon.nFont=10;
        cfon.FontFamily=54;  //  Lucida  Console
        if (!SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), false, &cfon)) cout<<"error";
  }

  SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода
 





        unsigned short int choise;

        cout << "-----START_Makros_2.0-------------------------------------------" << endl << endl;
        cout << "Выберите пункт, введя число\n\n";
        cout << "1-Физика      2-Математика";
        cout << endl;
        cout << "\nПункт - ";
        cin >> choise;
        cout  << endl;
        if (choise == 1)
        {
                physic ();
        }
        if (choise == 2)
        {
        math (); 
    }
        if ((choise != 1) && (choise != 2))
        {
            cout << "<Ошибка! Введите коректное число!>" << endl << endl << endl;
                return main ();
        }

        return 0;
}

// -------------END-------------------------------------------------------------------------------------






//---------------Раздел физика--------------------------------------------------------------------------

int physic ()

        unsigned short int choiseP;
        cout << "-----NEXT-------------------------------------------------------" << endl;
    cout << "Раздел физики" << endl;
        cout << "Выбор формулы:\n\n";
        cout << "1-Нагревание    2-Горение";
        cout << endl;
        cout << "\nФормула - ";
    cin >> choiseP;
        cout  << endl << endl;
        if (choiseP == 1)
        {
        nagrev ();
        }
        if (choiseP == 2)
        {
                gorenie ();
        }

    if ((choiseP != 1) && (choiseP != 2))
        {
            cout << endl << "<Ошибка! Введите коректное число!>";
                return physic ();
        }

        return 0;

}

//--------------------------------------------------------------------------------------------------------------






//----------------------Функция нагревания----------------------------------------------------------------------

int nagrev ()
{
        const int N_zolot=130, N_rtyt=140, N_svinecc=140, N_olovo=230, N_serebro=250, N_med=400, N_ccink=400, N_latyn=400,
                      N_zhelezo=460, N_stal=500, N_chugyn=540, N_graphit=750, N_labsteklo=840, N_kirpich=880, N_alumini=920,
                          N_maslopodsol=1700, N_led=2100, N_kerosin=2100, N_efir=2350, N_derevodyb=2400, N_spirt=2500, N_voda=4200;

        unsigned short int choise1;
        unsigned short int back;
    cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Вычисление энергии нагревания вещества" << endl << endl;
        cout << "Выбор вещества:\n\n";
        cout << "1-Золото      2-Ртуть      3-Свинец      4-Олово        5-Серебро";
        cout << endl << "6-Медь        7-Цинк      8-Латунь      9-Железо      10-Сталь";
        cout << endl << "11-Чюгун      12-Графит    13-Лаб стекло  14-Кирпич      15-Алюминий";
        cout << endl << "16-Масло      17-Лёд      18-Керосин    19-Эфир        20-Дерево (Дуб)";
        cout << endl << "21-Спирт      22-Вода";
        cout << endl << "\nВещество - ";
        cin >> choise1;

        switch (choise1)
        {
        case 1:
                {
            cout << "Хорошо, введите массу золота";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_zolot;
        cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг золота выделилось " << Q << " Дж энергии" << endl;
                cout << "================================================================";
                }

                break;
       
        case 2:
                {
                cout << "Хорошо, введите массу ртути";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_rtyt;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг ртути выделилось " << Q << " Дж энергии" << endl;
                cout << "================================================================";
                }

                break;

    case 3:
                {
                cout << "Хорошо, введите массу свинца";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_svinecc;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг свинца выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 4:
                {
                cout << "Хорошо, введите массу олова";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_olovo;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг олова выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 5:
                {
                cout << "Хорошо, введите массу серебра";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_serebro;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг серебра выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;
       
        case 6:
                {
                cout << "Хорошо, введите массу меди";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_med;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг меди выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 7:
                {
                cout << "Хорошо, введите массу цинка";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_ccink;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг цинка выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 8:
                {
                cout << "Хорошо, введите массу латуни";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_latyn;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг латуни выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 9:
                {
                cout << "Хорошо, введите массу железа";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_zhelezo;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг железа выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

    case 10:
                {
                cout << "Хорошо, введите массу стали";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_stal;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг стали выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 11:
                {
                cout << "Хорошо, введите массу чугуна";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_chugyn;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг чугуна выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 12:
                {
                cout << "Хорошо, введите массу графита";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_graphit;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг графита выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 13:
                {
                cout << "Хорошо, введите массу лабораторного стекла";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_labsteklo;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг лаб стекла выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 14:
                {
                cout << "Хорошо, введите массу кирпича";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_kirpich;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг кирпича выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 15:
                {
                cout << "Хорошо, введите массу алюминия";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_alumini;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг алюминия выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 16:
                {
                cout << "Хорошо, введите массу масла подсолнечного";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_maslopodsol;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг масла выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 17:
                {
                cout << "Хорошо, введите массу льда";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_led;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг льда выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 18:
                {
                cout << "Хорошо, введите массу керосина";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_kerosin;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг керосина выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 19:
                {
                cout << "Хорошо, введите массу эфира";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_efir;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг эфира выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 20:
                {
                cout << "Хорошо, введите массу древесины (Дуб)";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_derevodyb;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг древесины выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 21:
                {
                cout << "Хорошо, введите массу спирта";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_spirt;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг спирта выделилось" << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 22:
                {
                cout << "Хорошо, введите массу воды";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_voda;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг воды выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        default:
                {
                cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                return nagrev ();
                }
        }
   
        backer ();
       
}

//----------------END-------------------------------------------------------------------------






//----------------Функция горения-------------------------------------------------------------

int gorenie ()
{
    const double S_poroh=0.38, S_torph=1.4, S_kamugol=2.7,
                        S_spirt=2.7, S_drovugol=3.4, S_gas=4.4,
                            S_neft=4.4, S_benzin=4.6, S_kerosin=4.6;

        const unsigned int S_drova=1, S_antracit=3, S_vodorod=12;

        unsigned short int choise2;
    unsigned short int back;
    cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Вычисление энергии от сгоревшего топлива" << endl << endl;
        cout << "Выбор топлива:\n\n";
        cout << "1-Порох      2-Дрова      3-Торф      4-Каменный уголь      5-Спирт";
        cout << endl << "6-Антрацит    7-Др уголь    8-Газ        9-Нефть                10-Бензин"; 
        cout << endl << "11-Керосин    12-Водород";
        cout << endl;
        cout << "\nТопливо - ";
    cin >> choise2;
        switch (choise2)
        {
        case 1:
                {
                cout << "Хорошо, введите массу пороха";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_poroh;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг пороха выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 2:
                {
        cout << "Хорошо, введите массу дров";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                unsigned int Q = mass * S_drova;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг дров выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 3:
                {
        cout << "Хорошо, введите массу торфа";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_torph;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг торфа выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 4:
                {
        cout << "Хорошо, введите массу каменного угля";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_kamugol;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг угля выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 5:
                {
        cout << "Хорошо, введите массу спирта";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_spirt;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании  " << mass << " кг спирта " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 6:
                {
        cout << "Хорошо, введите массу антрацита";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                unsigned int Q = mass * S_antracit;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг антрацита выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 7:
                {
        cout << "Хорошо, введите массу древесного угля";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_drovugol;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг др угля выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 8:
                {
        cout << "Хорошо, введите массу газа";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_gas;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг газа выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 9:
                {
        cout << "Хорошо, введите массу нефти";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_neft;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг нефти выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 10:
                {
        cout << "Хорошо, введите массу бензина";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_benzin;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг бензина выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 11:
                {
        cout << "Хорошо, введите массу керосина";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_kerosin;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг керосина выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 12:
                {
        cout << "Хорошо, введите массу водорода";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                unsigned int Q = mass * S_vodorod;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг водорода выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        default:
                {
        cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                return gorenie ();
                }
    }
       
        backer ();

}

//----------END-----------------------------------------------------------------------------------





//---------------Раздел математика----------------------------------------------------------------

int math ()

        unsigned short int choiseM;
        cout << "-----NEXT-------------------------------------------------------" << endl;
    cout << "Раздел математики" << endl;
        cout << "Выбор пункта:\n\n";
        cout << "1-Квадратные уравнения    2-Ряд Фибоначи";
        cout << endl;
        cout << "\nПункт - ";
    cin >> choiseM;
        cout  << endl << endl;
        if (choiseM == 1)
        {
                x2yravn ();
        }
        if (choiseM == 2)
        {
                fibmain ();
        }

    if ((choiseM != 1) && (choiseM != 2))
        {
            cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                return math ();
        }

        return 0;

}

//-----------END--------------------------------------------------------------------------------------------







//----------Квадратные уравнения-----------------------------------------------------------------------

int x2yravn ()
{
        double a, b, c, x1, x2;
        double error;
        unsigned short int back;
        cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Ввод уравнения: " << endl;
        cout << endl << "(a=) ";
        cin >> a;
        cout << "(b=) ";
        cin >> b;
        cout << "(c=) ";
        cin >> c;


    error = GetX2yravn (a, b, c, &x1, &x2);
        if (!error)
        {
                backer ();
        }

    else
        {
                cout << endl << "Ошибка! а=0, уравнение не квадратное" << endl;
        }
        char response;
        cin >> response;
        return 0;

}


// Функция нахождения корней

double GetX2yravn (double a, double b, double c, double *px1, double *px2)
{
        double value = 0;
        if (a == 0)
                value = 1;
        else
        {
                double D;
            D = b*b - 4*a*c;
                cout << endl << "Дискриминант равен " << D << endl;
                if (D < 0)
                {
                        cout << "=====РЕЗУЛЬТАТ==================================================";
                        cout << endl << "Корней не найдено, дискриминант меньше ноля" << endl;
                        cout << "================================================================" << endl;
                }
                if (D == 0)
                {
                        *px1 = -b / (2*a);
                        cout << "=====РЕЗУЛЬТАТ==================================================";
                        cout << endl << "Найден один корень, x = " << *px1 << endl;
                        cout << "================================================================" << endl;
                }
                if (D > 0)
                {
                        *px1 = (-b + sqrt(D)) / (2*a);
                        *px2 = (-b - sqrt(D)) / (2*a);
                        cout << "=====РЕЗУЛЬТАТ==================================================";
                        cout << endl << "Найдено два корня, x1 = " << *px1 << ", x2 = " << *px2 << endl;
                        cout << "================================================================" << endl;
                }
                value = 0;
        }
        return value;
}

//-------END---------------------------------------------------------------------------








//---------Ряд Фибоначи---------------------------------------------------------------------------

int fibmain ()
{
       
        unsigned int answer, position;
    cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Ряд Фибоначи" << endl;
        cout << "Выбор позиции числа в ряду? ";
        cout << "\nПозиция - ";
        cin >> position;
        cout << endl;

        answer = GetFib(position);
        cout << "=====РЕЗУЛЬТАТ==================================================";
        cout << endl << answer << " является " << position << " числом ряда Фибоначи! " << endl;
    cout << "================================================================";

    backer ();
    return 0;

       
}


// Функция определения числа

unsigned int GetFib (unsigned int n)
{
        unsigned int minusTwo=1, minusOne=1, answer=2;

        if (n < 3)
                return 1;
        for (n-=3; n!=0; n--)
        {
                minusTwo = minusOne;
                minusOne = answer;
                answer = minusOne + minusTwo;
        }
        return 0;
}



//----END--------------------------------------------------------------------------------------------




//----Функция возврата------------------------------------------------------------------------------

int backer ()
{
        unsigned short int back;
        cout << endl << endl<< "Вернуться в главное меню? (Да - 1, Нет - 2)";
        cin >> back;
        cout << endl << endl;
        switch (back)
        {
        case 1:
                {
                  cout << "-----END---------------------------------------------------------";
                  cout << endl << endl << endl << endl << endl << endl << endl;
                  return main();
                }
                break;

        case 2:
                {
          cout << endl << "Можете закрыть программу.";
                      char response;
          cin >> response;
                  return 0;
                }
            break;
        default:
                {
              cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                  return backer ();
                }
        }
}

//-------END-----------------------------------------------------------------------------------------


crashtuak 26-03-2009 07:20 1074995

Интересно, а сколько при возгорании, выделит энергии мой компьютер:)?. И к стати,XEN_STRANGER, к чему вам было открытие лотка привода, выключение, перезагрузка пк?
PS: если данный код написали вы - хорошо, не вы - тоже хорошо.
PPS: если вы занялись целью написать математическую, физическую программу, можно объединить усилия. Я люблю и знаю данные предметы.

XEN_STRANGER 26-03-2009 08:19 1075014

Цитата:

Цитата crashtuak
И к стати,XEN_STRANGER, к чему вам было открытие лотка привода, »

Это как доп функции, и вообще думаю пригодится. Да, напиши ещё извлечение / вставление лотка.

Цитата:

Цитата crashtuak
если данный код написали вы - хорошо, не вы - тоже хорошо. »

crashtuak, Весь год я написал сам, за исключением там в начяле включение поддержки кирилицы.

Цитата:

Цитата crashtuak
если вы занялись целью написать математическую, физическую программу, можно объединить усилия. Я люблю и знаю данные предметы. »

Да? Большое спасибо, а как именно ты можешь помочь? Можешь подкинуть несколько мини прог для вычисление каких-нибудь формул (часто используемых в практике), а я их добавлю как новые функции. :clapping:

Drongo 26-03-2009 11:09 1075132

Два непонятных момента, выделил красным цветом. Это у вас попытка возврата в функцию main()?
Цитата:

Цитата XEN_STRANGER
Код:

...
if ((choise != 1) && (choise != 2))
 {
 cout << "<Ошибка! Введите коректное число!>" << endl << endl << endl;
 return main ();
 }
return 0;
}
...

»

Цитата:

Цитата XEN_STRANGER
Код:

...
cout << "-----END---------------------------------------------------------";
 cout << endl << endl << endl << endl << endl << endl << endl;
 return main();
...

»


XEN_STRANGER 26-03-2009 12:06 1075171

Drongo, ну да, а что?

Drongo 26-03-2009 12:38 1075203

Не проще ли просто return 0;? И ещё такой момент break и return может что-то одно будет?
Код:

...
switch (back)
        {
        case 1:
                {
                  cout << "-----END---------------------------------------------------------";
                  cout << endl << endl << endl << endl << endl << endl << endl;
                  return 0;
                }
                break;

        case 2:
                {
          cout << endl << "Можете закрыть программу.";
                      char response;
          cin >> response;
                  return 0;
                }
            break;
        default:
...

Ну и из функций int nagrev () и int gorenie () возвращай значение.

P.S. Только не пойму, что общего с вашим кодом и управлением системы?

XEN_STRANGER 26-03-2009 18:44 1075540

Я не опытный просто. А в функциях int nagrev () и int gorenie () нужно будет вернуть какое-нибудь число, только не 0?


Цитата:

Цитата Drongo
Код:

...
switch (back)
 {
 case 1:
 {
 cout << "-----END---------------------------------------------------------";
 cout << endl << endl << endl << endl << endl << endl << endl;
 return 0;
 }
 break;
case 2:
 {
 cout << endl << "Можете закрыть программу.";
 char response;
 cin >> response;
 return 0;
 }
 break;
 default:
...

»

А тут мне надо будет return 0; убрать?

Цитата:

Цитата Drongo
Только не пойму, что общего с вашим кодом и управлением системы? »

Вообще для повышения функциональности программы, она как утилита многофункциональная будет

Drongo 26-03-2009 19:14 1075574

Цитата:

Цитата XEN_STRANGER
А в функциях int nagrev () и int gorenie () нужно будет вернуть какое-нибудь число, только не 0? »

Думаю, если последняя инструкция у тех функций backer ();, то нужно перед ними добавить
Код:

return backer ();
Цитата:

Цитата XEN_STRANGER
А тут мне надо будет return 0; убрать? »

Да.

P.S. Настоятельно прошу использовать тег кода - #

crashtuak 28-03-2009 17:58 1077271

Цитата:

Цитата XEN_STRANGER
Да? Большое спасибо, а как именно ты можешь помочь? Можешь подкинуть несколько мини прог для вычисление каких-нибудь формул (часто используемых в практике), а я их добавлю как новые функции. »

Совет: формулы все стандартные. Например для квадратного уравнения ax^2+bx+c=0, D=b^2-4ac, ну и тд.
Сделать решение подобного примера можно легко последовательностью разных простейших математических действий.
Сначала загружаем в память компа a, b, c, ищем дискриминант, потом с помощью if проверяем D<0 - два корня, D>0 - уравнение корней не имеет, D=0 - в уравнения 1 корень. Про дискриминант - если корень с дискриминанта будет числом иррациональным, то стоит в ответ записать его как sqrt(D). Ещё где то нарою отличную формулу для решения кубичных уравнений, я её немного призабыл, и названия тоже не помню, но в ней в результате определенных действий мы получим помоему два или одно квадратное уравнение, решения которых будут решением изначального кубичного уравнения. А для физических расчетов, по моему, лучше делать программу с граф интерфейсом, можна будет легко сделать базу данных с значениями сопротивления, температурами плавления кипения и тд. для разных веществ, соответственно потом останется сделать стандартный кусок кода с формулами, и потом только подставить нужные значения.

ПС: любую "физическую" программу надо делать с конвертером величин, просто меня иногда бесит переводить 5 км\с в м\с :)

XEN_STRANGER 29-03-2009 00:26 1077608

crashtuak, Решалку квадратных уравнений я уж давно написал... Не подскажешь формулу для кубических уравнений?

Если у тебя есть исходники на подобные темы, пожалуйсто выложи.

Drongo 29-03-2009 00:32 1077614

Цитата:

Цитата XEN_STRANGER
Не подскажешь формулу для кубических уравнений? Если у тебя есть исходники на подобные темы, пожалуйсто выложи. »

Если просьба будет встречена одобрительно, желательно в отдельную тему 'Решение кубических уравнений на C++', чтобы было в паре с темой - Решение квадратных уравнений на С++. :)

XEN_STRANGER 29-03-2009 13:47 1077892

Drongo, crashtuak, Ребят надо ещё извлечение лотка привода (ну и естественно вовлечение лотка)

Drongo 29-03-2009 14:17 1077949

Цитата:

Цитата XEN_STRANGER
Ребят надо ещё извлечение лотка привода »

Незабудь сначала подключить заголовочный файл
Код:

#include <mmsystem.h>
...
...
...
// Извлечение лотка CD-ROM----------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    mciSendString("Set cdaudio door open wait", NULL, 0, Handle);
}
// Закрытие лотка CD-ROM----------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    mciSendString("Set cdaudio door closed wait", NULL, 0, Handle);
}
//---------------------------------------------------------------------------


XEN_STRANGER 29-03-2009 15:48 1078044

Drongo, Спасибо большое.

А для выключения, перезагрузки компа и закрытия проги нужны заголовочные файлы типа #include <mmsystem.h>?

Код:

//выкл
ExitWindowsEx(EWX_SHUTDOWN, 0);


//перезагр
ExitWindowsEx(EWX_REBOOT, 0);


//выкл проги
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Close();
}


Drongo 29-03-2009 15:55 1078052

Цитата:

Цитата XEN_STRANGER
А для выключения, перезагрузки компа и закрытия проги нужны заголовочные файлы типа #include <mmsystem.h>? »

Нет, не нужны.

XEN_STRANGER 29-03-2009 15:57 1078053

Drongo, Всё понятно, спасибо, на теме можно ставить "решено"

Drongo 29-03-2009 16:02 1078057

XEN_STRANGER, Вы это можете сделать сами в настройках темы - Отметить решенной - Использование форума -> Как мне сообщить о том, что моя проблема решена?

Codru 29-03-2009 20:01 1078255

Цитата:

Цитата XEN_STRANGER
Drongo, Всё понятно, спасибо, на теме можно ставить "решено" »

А нажать
Цитата:

Цитата Drongo
Полезное сообщение »

слабо?

Drongo 29-03-2009 21:20 1078314

Codru, Как сказал Vadikan, Хороший коммент не пропадёт. ;)
Цитата:

Цитата Vadikan
хороший пост не пропадет »


XEN_STRANGER 30-03-2009 17:59 1079199

Drongo, помнишь ты писал мне код закрытия проги?

Код:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Close();
}

что-то не работает. Я наверное не так всавил. Вот первоначальный вариант, преобразуй его:

Код:

int backer ()
{
        unsigned short int back;
        cout << endl << endl<< "Вернуться в главное меню? (Да - 1, Нет - 2)";
        cin >> back;
        cout << endl << endl;
        switch (back)
        {
        case 1:
                {
                  cout << "-----END---------------------------------------------------------";
                  cout << endl << endl << endl << endl << endl << endl << endl;
                  return main();
                }
                break;

        case 2:
                {
          cout << endl << "Можете закрыть программу.";
                      char response;
          cin >> response;
                }
            break;
        default:
                {
              cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                  return backer ();
                }
        }
}

В кейсе 2 нужно чтоб происходило закрытие

XEN_STRANGER 30-03-2009 18:30 1079230

Drongo, к сожалению ExitWindowsEx(EWX_SHUTDOWN, 0); и ExitWindowsEx(EWX_REBOOT, 0); тоже не компилируются.
Ошибки:
ExitWindowsEx' : undeclared identifier
EWX_REBOOT' : undeclared identifier
EWX_SHUTDOWN' : undeclared identifier

Drongo, Дальше выношу за пределы main () и тут уже другие ошибки:

c:\program files\microsoft visual studio\vc98\include\mmsystem.h(113) : error C2146: syntax error : missing ';' before identifier 'MMVERSION'

c:\program files\microsoft visual studio\vc98\include\mmsystem.h(113) : fatal error C1004: unexpected end of file found

Синтаксическая ошибка в заголовочном файле - это что-то новенькое.

Drongo 30-03-2009 18:49 1079249

Цитата:

Цитата XEN_STRANGER
что-то не работает. Я наверное не так всавил. »

А я думал ты в графическом интерфейсе хочешь её вставить. Функци выхода из консольного варианта я не знаю.

XEN_STRANGER 30-03-2009 18:59 1079260

Drongo, Ладно, а есть вариант быстро портировать мой код в графический интерфейс?
Хотябы чтоб это по-прежнему была консоль, но внутри окна и тогда твои коды будут работать.

Код:


#include <iostream>
#include <windows.h>
#include <conio.h>
#include <cmath>

using namespace std;

typedef struct _CONSOLE_FONT_INFOEX
{
  ULONG cbSize;
  DWORD nFont;
  COORD dwFontSize;
  UINT  FontFamily;
  UINT  FontWeight;
  WCHAR FaceName[LF_FACESIZE];
}
CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;

typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);    // прототип недокументированый функции для XP

typedef BOOL (WINAPI *SETCURRENTCONSOLEFONTEX)(HANDLE,BOOL, PCONSOLE_FONT_INFOEX);  // для vista
SETCURRENTCONSOLEFONTEX SetCurrentConsoleFontEx  ;
SETCONSOLEFONT SetConsoleFont;



unsigned int GetFib (unsigned int position);
int physic ();
int gorenie ();
int nagrev ();
int math ();
int x2yravn ();
double GetX2yravn (double a, double b, double c, double* x1, double* x2);
int fibmain ();
int backer ();


// -------------------------Главное меню---------------------------------------------------------------------

int main ()
{

  OSVERSIONINFOEX osvi;
  CONSOLE_FONT_INFOEX cfon;
  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  GetVersionEx((OSVERSIONINFO *) &osvi) ;  // получение версии винды
  HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");    // функции
  if (osvi.dwMajorVersion<6)
  {   
        SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");  // берем  адрес функции
        if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}  //  если ошибка
        SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),10);  // устанавливаем 10 шрифт..
        //эксперементально установил что в обычной XP  это Lucida  Console 14.

  } 
  else
  {
        SetCurrentConsoleFontEx =(SETCURRENTCONSOLEFONTEX) GetProcAddress(hmod, "SetCurrentConsoleFontEx");  // берем  адрес  функции
        if (!SetCurrentConsoleFontEx) {cout<<"error\n" ; exit(1);}  //  если ошибка
        ZeroMemory(&cfon, sizeof(CONSOLE_FONT_INFOEX));
        cfon.cbSize=sizeof(CONSOLE_FONT_INFOEX);
        //cfon.nFont=10;
        cfon.FontFamily=54;  //  Lucida  Console
        if (!SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), false, &cfon)) cout<<"error";
  }

  SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода
 





        unsigned short int choise;

        cout << "-----START_Makros_2.0-------------------------------------------" << endl << endl;
        cout << "Выберите пункт, введя число\n\n";
        cout << "1-Физика      2-Математика";
        cout << endl;
        cout << "\nПункт - ";
        cin >> choise;
        cout  << endl;
        if (choise == 1)
        {
                physic ();
        }
        if (choise == 2)
        {
        math (); 
    }
        if ((choise != 1) && (choise != 2))
        {
            cout << "<Ошибка! Введите коректное число!>" << endl << endl << endl;
                return main ();
        }

        return 0;
}

// -------------END-------------------------------------------------------------------------------------






//---------------Раздел физика--------------------------------------------------------------------------

int physic ()

        unsigned short int choiseP;
        cout << "-----NEXT-------------------------------------------------------" << endl;
    cout << "Раздел физики" << endl;
        cout << "Выбор формулы:\n\n";
        cout << "1-Нагревание    2-Горение";
        cout << endl;
        cout << "\nФормула - ";
    cin >> choiseP;
        cout  << endl << endl;
        if (choiseP == 1)
        {
        nagrev ();
        }
        if (choiseP == 2)
        {
                gorenie ();
        }

    if ((choiseP != 1) && (choiseP != 2))
        {
            cout << endl << "<Ошибка! Введите коректное число!>";
                return physic ();
        }

        return 0;

}

//--------------------------------------------------------------------------------------------------------------






//----------------------Функция нагревания----------------------------------------------------------------------

int nagrev ()
{
        const int N_zolot=130, N_rtyt=140, N_svinecc=140, N_olovo=230, N_serebro=250, N_med=400, N_ccink=400, N_latyn=400,
                      N_zhelezo=460, N_stal=500, N_chugyn=540, N_graphit=750, N_labsteklo=840, N_kirpich=880, N_alumini=920,
                          N_maslopodsol=1700, N_led=2100, N_kerosin=2100, N_efir=2350, N_derevodyb=2400, N_spirt=2500, N_voda=4200;

        unsigned short int choise1;
        unsigned short int back;
    cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Вычисление энергии нагревания вещества" << endl << endl;
        cout << "Выбор вещества:\n\n";
        cout << "1-Золото      2-Ртуть      3-Свинец      4-Олово        5-Серебро";
        cout << endl << "6-Медь        7-Цинк      8-Латунь      9-Железо      10-Сталь";
        cout << endl << "11-Чюгун      12-Графит    13-Лаб стекло  14-Кирпич      15-Алюминий";
        cout << endl << "16-Масло      17-Лёд      18-Керосин    19-Эфир        20-Дерево (Дуб)";
        cout << endl << "21-Спирт      22-Вода";
        cout << endl << "\nВещество - ";
        cin >> choise1;

        switch (choise1)
        {
        case 1:
                {
            cout << "Хорошо, введите массу золота";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_zolot;
        cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг золота выделилось " << Q << " Дж энергии" << endl;
                cout << "================================================================";
                }

                break;
       
        case 2:
                {
                cout << "Хорошо, введите массу ртути";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_rtyt;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг ртути выделилось " << Q << " Дж энергии" << endl;
                cout << "================================================================";
                }

                break;

    case 3:
                {
                cout << "Хорошо, введите массу свинца";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_svinecc;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг свинца выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 4:
                {
                cout << "Хорошо, введите массу олова";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_olovo;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг олова выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 5:
                {
                cout << "Хорошо, введите массу серебра";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_serebro;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг серебра выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;
       
        case 6:
                {
                cout << "Хорошо, введите массу меди";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_med;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг меди выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 7:
                {
                cout << "Хорошо, введите массу цинка";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_ccink;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг цинка выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 8:
                {
                cout << "Хорошо, введите массу латуни";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_latyn;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг латуни выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 9:
                {
                cout << "Хорошо, введите массу железа";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_zhelezo;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг железа выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

    case 10:
                {
                cout << "Хорошо, введите массу стали";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_stal;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг стали выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 11:
                {
                cout << "Хорошо, введите массу чугуна";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_chugyn;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг чугуна выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 12:
                {
                cout << "Хорошо, введите массу графита";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_graphit;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг графита выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 13:
                {
                cout << "Хорошо, введите массу лабораторного стекла";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_labsteklo;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг лаб стекла выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 14:
                {
                cout << "Хорошо, введите массу кирпича";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_kirpich;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг кирпича выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 15:
                {
                cout << "Хорошо, введите массу алюминия";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_alumini;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг алюминия выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 16:
                {
                cout << "Хорошо, введите массу масла подсолнечного";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_maslopodsol;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг масла выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 17:
                {
                cout << "Хорошо, введите массу льда";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_led;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг льда выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 18:
                {
                cout << "Хорошо, введите массу керосина";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_kerosin;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг керосина выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 19:
                {
                cout << "Хорошо, введите массу эфира";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_efir;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг эфира выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 20:
                {
                cout << "Хорошо, введите массу древесины (Дуб)";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_derevodyb;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг древесины выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 21:
                {
                cout << "Хорошо, введите массу спирта";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_spirt;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг спирта выделилось" << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 22:
                {
                cout << "Хорошо, введите массу воды";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                long Q = mass * N_voda;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При нагревании " << mass << " кг воды выделилось " << Q << " Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        default:
                {
                cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                return nagrev ();
                }
        }
   
        backer ();
       
}

//----------------END-------------------------------------------------------------------------






//----------------Функция горения-------------------------------------------------------------

int gorenie ()
{
    const double S_poroh=0.38, S_torph=1.4, S_kamugol=2.7,
                        S_spirt=2.7, S_drovugol=3.4, S_gas=4.4,
                            S_neft=4.4, S_benzin=4.6, S_kerosin=4.6;

        const unsigned int S_drova=1, S_antracit=3, S_vodorod=12;

        unsigned short int choise2;
    unsigned short int back;
    cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Вычисление энергии от сгоревшего топлива" << endl << endl;
        cout << "Выбор топлива:\n\n";
        cout << "1-Порох      2-Дрова      3-Торф      4-Каменный уголь      5-Спирт";
        cout << endl << "6-Антрацит    7-Др уголь    8-Газ        9-Нефть                10-Бензин"; 
        cout << endl << "11-Керосин    12-Водород";
        cout << endl;
        cout << "\nТопливо - ";
    cin >> choise2;
        switch (choise2)
        {
        case 1:
                {
                cout << "Хорошо, введите массу пороха";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_poroh;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг пороха выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 2:
                {
        cout << "Хорошо, введите массу дров";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                unsigned int Q = mass * S_drova;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг дров выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 3:
                {
        cout << "Хорошо, введите массу торфа";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_torph;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг торфа выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 4:
                {
        cout << "Хорошо, введите массу каменного угля";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_kamugol;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг угля выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 5:
                {
        cout << "Хорошо, введите массу спирта";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_spirt;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании  " << mass << " кг спирта " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 6:
                {
        cout << "Хорошо, введите массу антрацита";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                unsigned int Q = mass * S_antracit;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг антрацита выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 7:
                {
        cout << "Хорошо, введите массу древесного угля";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_drovugol;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг др угля выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 8:
                {
        cout << "Хорошо, введите массу газа";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_gas;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг газа выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 9:
                {
        cout << "Хорошо, введите массу нефти";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_neft;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг нефти выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 10:
                {
        cout << "Хорошо, введите массу бензина";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_benzin;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг бензина выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 11:
                {
        cout << "Хорошо, введите массу керосина";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                double Q = mass * S_kerosin;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг керосина выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        case 12:
                {
        cout << "Хорошо, введите массу водорода";
                int mass;
                cout << endl;
                cout << "Масса - ";
                cin >> mass;
                unsigned int Q = mass * S_vodorod;
                cout << endl << "=====РЕЗУЛЬТАТ==================================================";
                cout << endl << "При сгорании " << mass << " кг водорода выделилось " << Q << " * 10000000 Дж энергии"<< endl;
                cout << "================================================================";
                }

                break;

        default:
                {
        cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                return gorenie ();
                }
    }
       
        backer ();

}

//----------END-----------------------------------------------------------------------------------





//---------------Раздел математика----------------------------------------------------------------

int math ()

        unsigned short int choiseM;
        cout << "-----NEXT-------------------------------------------------------" << endl;
    cout << "Раздел математики" << endl;
        cout << "Выбор пункта:\n\n";
        cout << "1-Квадратные уравнения    2-Ряд Фибоначи";
        cout << endl;
        cout << "\nПункт - ";
    cin >> choiseM;
        cout  << endl << endl;
        if (choiseM == 1)
        {
                x2yravn ();
        }
        if (choiseM == 2)
        {
                fibmain ();
        }

    if ((choiseM != 1) && (choiseM != 2))
        {
            cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                return math ();
        }

        return 0;

}

//-----------END--------------------------------------------------------------------------------------------







//----------Квадратные уравнения-----------------------------------------------------------------------

int x2yravn ()
{
        double a, b, c, x1, x2;
        double error;
        unsigned short int back;
        cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Ввод уравнения: " << endl;
        cout << endl << "(a=) ";
        cin >> a;
        cout << "(b=) ";
        cin >> b;
        cout << "(c=) ";
        cin >> c;


    error = GetX2yravn (a, b, c, &x1, &x2);
        if (!error)
        {
                backer ();
        }

    else
        {
                cout << endl << "Ошибка! а=0, уравнение не квадратное" << endl;
        }
        char response;
        cin >> response;
        return 0;

}


// Функция нахождения корней

double GetX2yravn (double a, double b, double c, double *px1, double *px2)
{
        double value = 0;
        if (a == 0)
                value = 1;
        else
        {
                double D;
            D = b*b - 4*a*c;
                cout << endl << "Дискриминант равен " << D << endl;
                if (D < 0)
                {
                        cout << "=====РЕЗУЛЬТАТ==================================================";
                        cout << endl << "Корней не найдено, дискриминант меньше ноля" << endl;
                        cout << "================================================================" << endl;
                }
                if (D == 0)
                {
                        *px1 = -b / (2*a);
                        cout << "=====РЕЗУЛЬТАТ==================================================";
                        cout << endl << "Найден один корень, x = " << *px1 << endl;
                        cout << "================================================================" << endl;
                }
                if (D > 0)
                {
                        *px1 = (-b + sqrt(D)) / (2*a);
                        *px2 = (-b - sqrt(D)) / (2*a);
                        cout << "=====РЕЗУЛЬТАТ==================================================";
                        cout << endl << "Найдено два корня, x1 = " << *px1 << ", x2 = " << *px2 << endl;
                        cout << "================================================================" << endl;
                }
                value = 0;
        }
        return value;
}

//-------END---------------------------------------------------------------------------








//---------Ряд Фибоначи---------------------------------------------------------------------------

int fibmain ()
{
       
        unsigned int answer, position;
    cout << "-----NEXT-------------------------------------------------------" << endl;
        cout << "Ряд Фибоначи" << endl;
        cout << "Выбор позиции числа в ряду? ";
        cout << "\nПозиция - ";
        cin >> position;
        cout << endl;

        answer = GetFib(position);
        cout << "=====РЕЗУЛЬТАТ==================================================";
        cout << endl << answer << " является " << position << " числом ряда Фибоначи! " << endl;
    cout << "================================================================";

    backer ();
    return 0;

       
}


// Функция определения числа

unsigned int GetFib (unsigned int n)
{
        unsigned int minusTwo=1, minusOne=1, answer=2;

        if (n < 3)
                return 1;
        for (n-=3; n!=0; n--)
        {
                minusTwo = minusOne;
                minusOne = answer;
                answer = minusOne + minusTwo;
        }
        return 0;
}



//----END--------------------------------------------------------------------------------------------




//----Функция возврата------------------------------------------------------------------------------

int backer ()
{
        unsigned short int back;
        cout << endl << endl<< "Вернуться в главное меню? (Да - 1, Нет - 2)";
        cin >> back;
        cout << endl << endl;
        switch (back)
        {
        case 1:
                {
                  cout << "-----END---------------------------------------------------------";
                  cout << endl << endl << endl << endl << endl << endl << endl;
                  return main();
                }
                break;

        case 2:
                {
          cout << endl << "Можете закрыть программу.";
                      char response;
          cin >> response;
                }
            break;
        default:
                {
              cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
                  return backer ();
                }
        }
}

//-------END-----------------------------------------------------------------------------------------


Drongo 30-03-2009 19:05 1079267

Цитата:

Цитата XEN_STRANGER
а есть вариант быстро портировать мой код в графический интерфейс? »

Быстро никак. В остальном я вне компетенции.

crashtuak 30-03-2009 19:22 1079284

Цитата:

Цитата XEN_STRANGER
Не подскажешь формулу для кубических уравнений? »

Постараюсь через день, у меня её друг знает на память:) :) :).

XEN_STRANGER 30-03-2009 19:26 1079286

Drongo, а медленно можешь показать?

crashtuak 30-03-2009 19:28 1079288

Вспомнил название: Схема Горнера. Но почему то в том виде, которых я знал, её нету в инете. :(
Вот ещё решение по какой то формуле карнадо.
http://cubic-solver.info/
Вот Тригонометрическая Формула Виета, первый раз вижу, но она сравнительно легкая, и почти идеально подходит для реализации на С++: http://ru.wikipedia.org/wiki/%D0%A2%...B5%D1%82%D0%B0

XEN_STRANGER 30-03-2009 20:52 1079366

crashtuak, для это разговора перейдём в другую тему http://forum.oszone.net/thread-136334.html


Время: 07:07.

Время: 07:07.
© OSzone.net 2001-