Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "[С++] Создание калькулятора" 
:(
    Опции темы
natashasuper5
Дата 30.3.2010, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



Помогите пожалуйста!
Написать консольный калькулятор, выполняющий операции сложения, вычитания, умножения, деления, возведения в степень, нахождения корня, вычисления синуса и косинуса указанного угла, а также поиск логарифма числа по указанному основанию.

вот ход работы:
1.    Создаём пустой проект и добавляем в папку исходных кодов (Source Files) файл .cpp;
2.    Подключаем необходимые библиотеки, в нашем случае iostream, conio и math.
3.    Разрешаем использование типов в пространстве имен std используя для этого директиву using, поэтому уточнение использования типа в этом пространстве имен не требуется.
4.    Создаём точку входа  (основную функцию) программы void main().
5.    Для проведения вычислений нам понадобятся три переменные, две для хранения операндов, а третья для хранения операции. Так как вычисления могут производится и над десятичными дробями, переменные операндов будут типа double – с плавающей точкой двойной точности. Знак операции будет представлен символом, поэтому для его хранения будет использован символьный тип данных char.
6.    Проинициализируем переменные данными из входящего потока cin, используя операцию чтения из потока “>>”.
7.    После определения функции main(), объявим функции для вычисления выражений. В нашем случае будет определено лишь две функции: функция сложения и возведения в степень. Функция сложения (plus()) просто возвращает арифметическую сумму входных параметров, а функция возведения в степень (power()) , использует функцию из математического пакета Math
8.    Производём вычисления и вывод результата в зависимости от знака операции, используя блок switch.
9.    Если попытаться откомпилировать программу сейчас, появиться ошибка, так как компилятор, начав выполнения программы на момент вычисления функций в блоке switch не знает об их существованиий. Проблему можно исправить двумя способами, либо перенести определения функций перед функцией main(), либо добавить описание функции перед main(). Мы пошли вторым путём.

Результат нашей работы представлен ниже, для успешного выполнения задания, необходимо повторить пункты 7 – 9 для операции вычитания, умножения, деления, нахождения корня, вычисления синуса и косинуса указанного угла, а также поиска логарифма числа по указанному основанию.

а вот уже как бы есть половина программы....ну или пример...

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

//Объявление функций
double plus(double X, double Y);
double power(double X, double Y);

void main()
{
    //Выбираем русскую локаль, чтобы можно было выводить
    //русские символы
    setlocale(LC_ALL,"Russian" );

    //Получаем переменные и знак операции
    double x, y;
    char op;
    cout <<  "Введите X: ";
    cin >> x;
    cout << "Введите Y: ";
    cin >> y;
    cout << "Введите знак операции:\n" 
         << " + - сложение;\n" 
         << " ^ - возведение X в степень Y;\n : ";
    cin >> op;

    //Производим вычисления и вывод результата в зависимости
    //от знака операции
    switch (op)
    {
    case '+': cout << " X + Y = "<< plus(x, y); break;
    case '^': cout << " X ^ Y = "<< power(x, y); break;

    default: cout << "Введёный оператор не поддерживается.";
    }
    
    getch();
}

//Определение функции
double plus(double X, double Y)
{
    return X + Y;
}

double power(double X, double Y)
{
    return pow(X, Y);
}

вот задали такую лабораторную....если кто может помочь..ответьте...заранее спасибо!!!
PM MAIL   Вверх
world
Дата 30.3.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 2.10.2009
Где: Харьков

Репутация: 6
Всего: 12



Глупый вопрос. А если есть уже рабочие функции калькулятора, то нельзя по образу и подобию написать оставшиеся функции ?..
Ладно, помогу. Первое замечание - у вас присутствуют функции, которые требуют или 1 (синус, косинус) или 2(все оставшиеся) операнда, следовательно прежде чем запросить 2 операнд, мы должны знать выполняемую операцию, а её можно узнать либо между 1 и 2 операндом(как было реализовано мной), либо перед запросом первого операнда. Во-вторых, пользуйтесь кнопкой "код".

Лови код. Пытался написать как можно ближе к вашему стилю.

Код

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

//Объявление функций
double plus(double X, double Y);
double power(double X, double Y);
double minus(double X, double Y);
double mult(double X, double Y);
double div(double X, double Y);
double root(double X, double Y);
double sinus(double X);
double cosinus(double X);
double logariphm(double X, double Y);

void main()
{
    //Выбираем русскую локаль, чтобы можно было выводить
    //русские символы
    setlocale(LC_ALL,"Russian" );

    //Получаем переменные и знак операции
    double x, y;
    char op;
    cout <<  "Введите X: ";
    cin >> x;
    cout << "Введите знак операции\n" 
         << " + - сложение;\n" 
         << " - - вычитание;\n"
         << " * - умножение;\n"
         << " / - деление;\n"
         << " r - корень степени Y из числа Х;\n"
         << " ^ - возведение X в степень Y;\n"
         << " l - логарифм X по основанию Y;\n"
         << " s - синус угла;\n"
         << " с - косинус угла;\n";
    cin >> op;
    if(op != 's' && op != 'c')
    {
        cout << "Введите Y: ";
        cin >> y;
    }
    
    //Производим вычисления и вывод результата в зависимости
    //от знака операции
    switch (op)
    {
    case '+': cout << " X + Y = "<< plus(x, y); break;
    case '-': cout << " X - Y = "<< minus(x, y); break;
    case '*': cout << " X * Y = "<< mult(x, y); break;
    case '/': cout << " X / Y = "<< div(x, y); break;
    case 'r': cout << " X root Y = "<< root(x, y); break;
    case '^': cout << " X ^ Y = "<< power(x, y); break;
    case 'l': cout << " X log Y = "<< logariphm(x, y); break;
    case 's': cout << " sin X "<< sinus(x); break;
    case 'c': cout << " cos X "<< cosinus(x); break;
    default: cout << "Введёный оператор не поддерживается.";
    }
    
    getch();
}

//Определение функции
double plus(double X, double Y)
{
    return X + Y;
}

double power(double X, double Y)
{
    return pow(X, Y);
}

double minus(double X, double Y)
{
    return X - Y;
}
double mult(double X, double Y)
{
    return X * Y;
}
double div(double X, double Y)
{
    return X / Y;
}
double root(double X, double Y)
{
    return pow(X, 1/Y);
}
double sinus(double X)
{
    return sin(X * 3.14 / 180);
}
double cosinus(double X)
{
    return cos(X * 3.14 / 180);
}
double logariphm(double X, double Y)
{
    return log(X)/log(Y);
}

--------------------
Say what you mean, and mean what you say. Robert Wilson Cody
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.