Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2013, 13:33   #11
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

так вот я и прошу помощи....неправильно работает это значит не выводит правильный результат
fkty вне форума Ответить с цитированием
Старый 25.12.2013, 14:06   #12
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
неправильно работает это значит не выводит правильный результат
как вы определили что это неправильный результат?
rrrFer вне форума Ответить с цитированием
Старый 25.12.2013, 14:10   #13
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

ввела допустим 0101 выводит: ERROR! result=0
fkty вне форума Ответить с цитированием
Старый 25.12.2013, 16:06   #14
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

отладчиком пользовались?
пройдите по программе по шагам и посмотрите почему он это выводит. Тогда появится уже конкретный вопрос.
rrrFer вне форума Ответить с цитированием
Старый 25.12.2013, 16:14   #15
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Додавили вы мою жалость. Я решил собрать эту недоподелку.

Цитата:
rrrfer@linux-2oyq:~/project/pif_pl> g++ main.cpp -o main
main.cpp:84:13: warning: multi-character character constant [-Wmultichar]
main.cpp:124:11: warning: multi-character character constant [-Wmultichar]
main.cpp:148:11: warning: multi-character character constant [-Wmultichar]
main.cpp:165:11: error: ‘::main’ must return ‘int’
main.cpp: In function ‘int main()’:
main.cpp:174:8: error: ‘getch’ was not declared in this scope
main.cpp:175:2: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
Окей, conio я сам убрал (на getch внимания не обращать можно). Но остальные ошибки вы читали? - тут же написано что и в какой строчке.
Если бы вы запостили в своем вопросе вот такой вывод - вам бы, может быть, и пояснили в чем дело. А так-то вам тут никто ничего не должен. Вы наивно выкидываете сюда говнокод с комментарием "не работает".

А если пройти по программе отладчиком...то можно найти и остальные ошибки. "ERROR! result=0 " выводится из за первых трех варнингов.
rrrFer вне форума Ответить с цитированием
Старый 25.12.2013, 16:33   #16
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

не знаю как у вас,а у меня нет таких ошибок,ошибки чисто логические...
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
char ch;
float n,n1,result;
int k;
 
void q0();
void q1();
void q2();
void q3();
void q4();
void q5();
void error();
 
int is_digit(char c)
{
  return '0'<=c && c <='9';
}
 
int digit (char c)
{ return (c-'0');
}
 
int is_letter(char c)
{
  return 'A'<=c && c <='F';
}
 
int letter (char c)
{
return c-'A'+10;
}
 
void error()
{
    printf("Error!\n");
    return;
}
 
void q0()
{
    if ((is_digit(ch)) || (is_letter(ch)))
    {
        n=digit(ch);
        ch=getchar();
        q1();
    }
    else
        if (ch== '.')
        {
            ch=getchar();
            q2();
        }
        else
        {
            error();
            return;
        }
}
 
void q1()
{
    if (is_digit(ch))
    {
        n=n*16+digit(ch);
        ch=getchar();
        q1();
    }
    else
        if  (is_letter(ch))
        {
            n=n*16+letter(ch);
            ch=getchar();
            q1();
        }
        else
            if (ch=='.')
            {
                ch=getchar();
                q3();
            }
            else
                if (ch=='\n')
                {
                    result=n;
                    q5();
                }
                else
                {
                    error();
                    return;
                }
 
}
 
void q2()
{
    if ((is_digit(ch)) || (is_letter(ch)))
    {
        k/=16;
        n+=n*k;
        ch=getchar();
        q4();
    }
    else
    {
        error();
        return;
    }
 
}
 
void q3()
{
    if ((is_digit(ch)) || (is_letter(ch)))
    {
        k/=16;
        n1+=n*k;
        ch=getchar();
        q3();
    }
    else
        if (ch=='\n')
        {
            n+=n1;
            result=n;
            q5();
        }
        else
        {
            error();
            return;
        }
 
}
 
void q4()
{
    if ((is_digit(ch)) || (is_letter(ch)))
    {
        k/=16;
        n+=n*k;
        ch=getchar();
        q4();
    }
    else
        if (ch=='\n')
        {
            result=n;
            q5();
        }
        else
        {
            error();
            return;
        }
}
 
void q5()
{
    return;
}
 
void main()
{
    k=1;
    result=0;
    n1=0;
    n=0;
    ch=getchar();
    q0();
    printf("result=%f",result);
    getch();
    return;
}
fkty вне форума Ответить с цитированием
Старый 25.12.2013, 19:12   #17
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
не знаю как у вас,а у меня нет таких ошибок,ошибки чисто логические...
Взял ваш последний код, поправил эти ошибки:
Цитата:
g++ main.cpp -o main
main.cpp:3:19: fatal error: conio.h: Нет такого файла или каталога
compilation terminated.
rrrfer@linux-2oyq:~/project/pif_pl> g++ main.cpp -o main
main.cpp:165:11: error: ‘::main’ must return ‘int’
main.cpp: In function ‘int main()’:
main.cpp:174:11: error: ‘getch’ was not declared in this scope
main.cpp:175:5: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
Запустил, работает:
Цитата:
rrrfer@linux-2oyq:~/project/pif_pl> ./main
1010
result=4112.000000
правильно работает или нет - не знаю. Вы не написали какой результат должен быть.
rrrFer вне форума Ответить с цитированием
Старый 25.12.2013, 20:55   #18
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

например при вводе 0101 результат 257,при F. результат 15,при .EEE результат 0.93310546875,при A01.BC результат 2561.734375
fkty вне форума Ответить с цитированием
Старый 17.01.2015, 18:49   #19
Tatyanaa
Новичок
Джуниор
 
Регистрация: 30.10.2014
Сообщений: 1
Вопрос

Здравствуйте, решаю сейчас такую же задачу. Увидела тут эту тему. Хотела спросить получилась ли у вас эта задача, хотя может глупо уже столько времени прошло, но вдруг. У меня по другому действия чуть чуть расписаны. Я отдельно накапливаю целую и дробную часть, затем складываю. Но, целую часть правильно считает, а дробную нет,только первую после точки.
Tatyanaa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конечный автомат Rыся Помощь студентам 1 11.01.2013 10:56
Конечный автомат. Регулярная грамматика RocBoy-D Помощь студентам 1 26.10.2012 23:03
недетерминированный конечный автомат CodeNOT Общие вопросы C/C++ 0 21.02.2012 15:48
Конечный автомат maxon56 Помощь студентам 0 19.12.2011 19:32
Конечный автомат на Delphi Arkuz Общие вопросы Delphi 4 02.10.2008 23:50