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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
#1

Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? - C++

15.11.2012, 00:33. Просмотров 660. Ответов 5
Метки нет (Все метки)

Написал код в котором надо вводить каждый елемент(первое число, знак операции, второе число, знак операции, 3... знак "=") по отдельности. + - * / работают, а вот sin... не работают. Во первых как сделать чтоб в програма могла проверить есть ли знаком операции не только символ но и строку? во вторых, если я введу sin то функция бралась от следущей введеной строки?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main ()
{
    float g, res=0;
    bool EXIT = false;
    char str[100],op='\0',history[255];
    history[0]='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        strcat(history,str);
        if (str[0] == '=') EXIT = true;
        g = atoi(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res+=g;
                if (op == '-') res-=g;
                if (op == '*') res*=g;
                if (op == '/') res/=g;
                if (op == "sin") res=sin(g);
                if (op == "cos") res=cos(g);
                if (op == "tan") res=tan(g);
                if (op == "cot") res=cot(g);
                if (op == "log") res=log(g);
                op = '\0';
            }
            else res = g;
        }
    }
    cout << history << res; 
    getch();
    return 0;
}
Добавлено через 16 минут
и как правильно вызвать функцию котангенса?

Добавлено через 10 минут
сделал проверку операции через strcmp, но что дальше делать не знаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define c cos; 
using namespace std;
int main ()
{
    float g, res=0;
    bool EXIT = false;
    char str[100],op='\0',history[255];
    history[0]='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        strcat(history,str);
        if (str[0] == '=') EXIT = true;
        g = atoi(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res+=g;
                if (op == '-') res-=g;
                if (op == '*') res*=g;
                if (op == '/') res/=g;
                if (strcmp(&op, "sin")==0) res=sin(g);
                if (strcmp(&op, "cos")==0) res=cos(g);
                if (strcmp(&op, "tg")==0) res=tan(g);
                if (strcmp(&op, "log")==0) res=log(g);
                op = '\0';
            }
            else res = g;
        }
    }
    cout << history << res; 
    getch();
    return 0;
}

Добавлено через 50 минут
ну, кто нибуть, кто знает как ето сделать??

Добавлено через 1 час 50 минут
АААУУУ, та помогите кто нибуть с етим калькулятором, пожалуста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 00:33     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм?
Посмотрите здесь:

Как в С++ реализовать(записать) LN (натуральный логарифм по основанию е)? - C++
Как в С++ реализовать(записать) LN (натуральный логарифм по основанию е)?

Передача ф-ции как параметра другой ф-ции - C++
struct pupil{ char surname; int school; int answer; int num; } tmp, a; int usl(int i, pupil a) { }

Подскажите функцию, аналогичную ф-ции getch() - C++
Так как функция getch() считывает информацию до символа новой строки, мне нужна функция, считывающая весь текст целиком. Желательно в...

Создать функцию, вычисляющую логарифм заданного числа по заданному основанию. - C++
Создать функцию, вычисляющую логарифм заданного числа по заданному основанию. Как!?

Как реализовать функцию? - C++
Функция должна считывать из файла посимвольно строку, встречая символ &quot;;&quot; то что до него помещается в символьный массив. Содержимое...

Степень вывести через указатель,a десятичный логарифм через функцию рекуренционную - C++
Написать функции,где 3 натуральных числа a,b,c(a/b-десятичный логарифм).Чтобы степень вывести через указатель,a десятичный логарифм через...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15841 / 10168 / 1522
Регистрация: 24.12.2010
Сообщений: 19,175
15.11.2012, 00:36     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? #2
Цитата Сообщение от ozzy_b Посмотреть сообщение
функцию котангенса
1/tan(g)
Но проверить, не на нуль ли делишь.
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
15.11.2012, 00:57  [ТС]     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? #3
Байт, ну а как тогда все ето "связать в одну кучу" чтоб оно работало, а то как я не ввожу числа и sin, tg... в разных последовательностях програма не считает ничего(выводит 0)?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
15.11.2012, 01:06     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? #4
Цитата Сообщение от ozzy_b Посмотреть сообщение
char str[100],op='\0'
Цитата Сообщение от ozzy_b Посмотреть сообщение
if (g==0) op = str[0];
Цитата Сообщение от ozzy_b Посмотреть сообщение
(strcmp(&op, "sin")==0)
ну и откуда в op слово sin возьмется ?
во первых это единичный символ
во вторых сивол ты туда и копируешь
а сравниваешь со строкой
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
15.11.2012, 17:00  [ТС]     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? #5
ValeryS, все, вот так работает. А можно както сделать чтоб можно было вводить как строку а не символ, а то както не красиво оно в истории выводит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define c cos; 
using namespace std;
int main ()
{
    float g, res=0;
    bool EXIT = false;
    char str[100],op='\0',history[255];
    history[0]='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        strcat(history,str);
        if (str[0] == '=') EXIT = true;
        g = atof(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res+=g;
                if (op == '-') res-=g;
                if (op == '*') res*=g;
                if (op == '/') res/=g;
                if (op == 's') res=(sin(g));
                if (op == 'c') res=cos(g);
                if (op == 't') res=tan(g);
                if ((op == 'С')&& (g!=0)) res=1/(tan(g));
                if (op == 'l') res=log(g);
                op = '\0';
            }
            else res = g;
        }
    }
    cout << history << res; 
    getch();
    return 0;
}
Добавлено через 14 минут
и как сделать чтоб в истории(то что выводиться в конце, все операнты, знаки операции, =, результат) выводилось к примеру не с30="что то там", а соs(30)="что то там".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2012, 17:38     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм?
Еще ссылки по теме:

Как процедуру в Паскале реализовать, как функцию в с++? - C++
Здравствуйте! Есть код на Паскале. Нужно процедуру реализовать в С++ как функцию. Возможно ли в моем случае? Попробовал по-всякому, но у...

Как реализовать функцию, чтения из файла с сравнением? - C++
Функция должна считывать из файла посимвольно строку, встречая символ &quot;;&quot; то что до него помещается в символьный массив. Содержимое массива...

Передача неизвестного количества аргументов в функцию, как реализовать? - C++
Вот есть функция и в нее будут передаваться какие-то аргументы, причем заранее не известен их тип и количество (там уже в зависимости от...

Реализовать программный калькулятор - C++
Нужно сделать на с++ следующее... Прошу помощи.

Не могу разобраться как реализовать функцию инициализации даты по веденному массиву char - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

найти факториал всех чисел от 1 до 10 с шагом 2. Вычисление факториала реализовать как функцию - C++
Нужно найти факториал всех чисел от 1 до 10 с шагом 2. Вычисление факториала реализовать как функцию.


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
15.11.2012, 17:38     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? #6
сравнивай не символы а строки strcmp
http://lord-n.narod.ru/download/book.../14/strcmp.htm
или вообще открой для себя тип string там есть и поиск символа в строке поиск подстроки и еще много вкусостей
Yandex
Объявления
15.11.2012, 17:38     Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru