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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Словесный калькулятор, что я опять нахимичил? 
:(
    Опции темы
Code Magister
  Дата 23.4.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


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

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



Короче у меня задание:
Зделать свой интерпретатор примитивных команд калькулятора, которые работают в жестко фиксированном режиме, например:
"ПУСТЬ а = 12.123"
"ПОДЕЛИТЬ a, b, c" // a=b/с
"ВЫВЕСТИ a"

Я сделал ввод, вывод и плюсование...
Но! Когда идет плюсование с записью резльтата в переменную с (ДОБАВИТь с a b например), так этот результат какого-то хрена умножается на 2. С остальными переменными вроде нормально.
Писал на С++ 3.1
Вот код:
Код

#include <string.h>
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

char str[100];
char* znaki=" ,=\/<>!@#$%^&*()_+-?!|";
char* comand;
char* param;
char* param1;
char* param2;
int key;
double a,b,c;
char *strto;

void main()
{
while(key!=27)
{
    clrscr();

    cin.getline(str,49);

    comand=strtok(str, znaki);

    param = strtok(NULL, znaki);

    param1 = strtok(NULL, znaki);

    param2 = strtok(NULL, znaki);
    //короче до этого момента идет считывание слов до пробела(или другого знака препинания)  слов в переменные comand, param, param1, param2. Считивает правильно... 

    if (!(stricmp(comand, "ПУСТЬ")))
    {
        if (!(stricmp(param, "a")))
            a=strtod(param1, &strto);

        if (!(stricmp(param, "b")))
            b=strtod(param1, &strto);

        if (!(stricmp(param, "c")))
            c=strtod(param1, &strto);

    }
    if (!(stricmp(comand, "ВЫВЕСТИ")))
    {
        if (!(stricmp(param, "a")))
            printf("\na=%lf\n",a);

        if (!(stricmp(param, "b")))
            printf("\nb=%lf\n",b);

        if (!(stricmp(param, "c")))
            printf("\nc=%lf\n",c);

    }
    if (!(stricmp(comand, "ДОБАВИТЬ")))
    {
        if (( (!stricmp(param1,"a")) && (!stricmp(param2,"b") ) || ( (!stricmp(param1, "b")) && (!stricmp(param2, "a" )))))
            if ( !stricmp(param, "a") ) a=a+b;
            if ( !stricmp(param, "b") ) b=a+b;
            if ( !stricmp(param, "c") ) c=a+b;

        if (( (!stricmp(param1,"b")) && (!stricmp(param2,"c") ) || ( (!stricmp(param1, "c")) && (!stricmp(param2, "b" )))))
            if ( !stricmp(param, "a") ) a=c+b;
            if ( !stricmp(param, "b") ) b=c+b;
            if ( !stricmp(param, "c") ) c=c+b;

        if (( (!stricmp(param1,"a")) && (!stricmp(param2,"c") ) || ( (!stricmp(param1, "c")) && (!stricmp(param2, "a" )))))
            if ( !stricmp(param, "a") ) a=a+c;
            if ( !stricmp(param, "b") ) b=a+c;
            if ( !stricmp(param, "c") ) c=a+c;



    }

       key=getch();
}
}

Я вобще все слова(добавить, вывести) англ. писал. Это я чтоб вам легче понять было.
Вобщем жду помощи, самому не разобраться...

Это сообщение отредактировал(а) _Slipknot - 23.4.2005, 21:41
--------------------
PM MAIL WWW ICQ   Вверх
SMiX
Дата 23.4.2005, 21:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня в свое время были проблемы в таких прогах с русской 8-битной кодировкойю.
Исправляется легко - юзаньем английских фраз.
  Вверх
Code Magister
Дата 23.4.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


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

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



Цитата(_Slipknot @ 23.4.2005, 21:25)
Я вобще все слова(добавить, вывести) англ. писал. Это я чтоб вам легче понять было.

я же написал..
--------------------
PM MAIL WWW ICQ   Вверх
Leksey
Дата 23.4.2005, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помоему в твоей программе недостаточно фигурных скобок.Попробуй так:
Код

   if (!(stricmp(comand, "ДОБАВИТЬ")))    
    {    
        if (( (!stricmp(param1,"a")) && (!stricmp(param2,"b") ) || ( (!stricmp(param1, "b")) && (!stricmp(param2, "a" )))))
{
            if ( !stricmp(param, "a") ) a=a+b;    
            if ( !stricmp(param, "b") ) b=a+b;    
            if ( !stricmp(param, "c") ) c=a+b;
}
        if (( (!stricmp(param1,"b")) && (!stricmp(param2,"c") ) || ( (!stricmp(param1, "c")) && (!stricmp(param2, "b" )))))    
        {   
           if ( !stricmp(param, "a") ) a=c+b;    
            if ( !stricmp(param, "b") ) b=c+b;    
            if ( !stricmp(param, "c") ) c=c+b;    
         }
        if (( (!stricmp(param1,"a")) && (!stricmp(param2,"c") ) || ( (!stricmp(param1, "c")) && (!stricmp(param2, "a" )))))    
          {
            if ( !stricmp(param, "a") ) a=a+c;    
            if ( !stricmp(param, "b") ) b=a+c;    
            if ( !stricmp(param, "c") ) c=a+c;    
         }
    }

PM MAIL   Вверх
Code Magister
Дата 23.4.2005, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magister of Code
*


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

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



О, вроде работает! Спасибо Leksey smile
Если что снова напишу...
Добавлено @ 22:40
Тю, как я сам не додумался?! Просто целый день писал и голова не соображает.
--------------------
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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