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

Перевод из строки в число - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ atal error C1010: unexpected end of file while looking for precompiled header directive. http://www.cyberforum.ru/cpp-beginners/thread60945.html
Как убрать эту ошибку?
C++ Заменить все малые латинские буквы символом «$» Необходимо составить и отладить указанную функцию. В главной программе, если в задании не предложено другое, следует описать два массива указанного в задании типа Sl и S2. Элементы первого массива... http://www.cyberforum.ru/cpp-beginners/thread60936.html
Вывести на экран слова начинающиеся с той же буквы, что и первое слово предложения. Напечатать строку после изъятия этих слов. C++
Помогите, пожалуйста с программой: Вывести на экран слова начинающиеся с той же буквы, что и первое слово введенного предложения. Напечатать строку после изъятия этих слов. Заранее благодарю.
Определить количество и сумму цифр числа C++
Доброго времени суток. Дано натуральное число N. Определить количество и сумму цифр этого числа. Спасибо.
C++ Сформировать одномерный массив http://www.cyberforum.ru/cpp-beginners/thread60883.html
Из строки типа "Привет 123й, я 548й, нам нада передать 17му что его балан равен 100". Вывести все числа(не цифры, а числа). Сформировать одномерный массив. Отсортировать его по убыванию,...
C++ Определить номер цифры в числе Дано натуральное число. Определить номер некоторой заданной цифры в нем, считая от конца числа. Если такой цифры нет, ответом должно быть число 0. Если таких цифр несколько, должен быть определен... подробнее

Показать сообщение отдельно
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199

Перевод из строки в число - C++

03.11.2009, 19:56. Просмотров 7348. Ответов 12
Метки (Все метки)

Снова я =) Работаю над калькулятором. С функцией ввода разобрался.
Значит есть строка ввода. рабочая. заполняет массив buf . Потом запускаеться функция scan_buf , она должна считать число ( пока делаю простой вариант, чтобы работал ^^ ) до знака действия т.е. пишешь в строке 51+9 жмякаешь ентер (в массиве buf : 51+9) запускаеться эта функция , в массив stack помещяться 51 . И теперь это 51 которое в массиве как символы нужно переделать в число i . Типа (ну напр.) double . В нете искал . Пробовал - не особо помогло :***( точней из того , что пробовал ничего не сработало. Помогите преобразовать stack в double число i . Работаю в Visual Studio 2008. *pz - указатель на знак ( мат. операцию +-\* ) описание строки ввода Строка ввода в калькуляторе (я немного усовершенствовал ).
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
 
char input_str(char (*buf), char (*opef));
void gotoxy(int xpos, int ypos);
double scan_buf(char *buf, char *oper, int p, char *stack);
 
char stack[80];
char buf[80];
char oper[]="+-*/.";
char alf[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *pz;
 
int _tmain(int argc, _TCHAR* argv[])
{
        int p;
        int z;
        double a;
        p=16;
        buf[79]='#';
        z=input_str(buf,oper,p);
        a=scan_buf(buf,oper,p,stack);
        printf("HELLO");
        printf("\n %s", buf);
        printf("\n %s", stack);
        printf("\n\n %d", a);
        getch();
        return 0;
}
 
char input_str(char (*buf), char (*oper), int p)
{
    char ch;
    int znak;
    znak=0;
    i=0;
    while(*buf!='#')
    {
    ch=getch();
    if (ch==8) 
        { 
            gotoxy(--i,0); 
            putch(NULL);
            *--buf=NULL; 
            gotoxy(i,0); 
            continue;
        }
    if (ch==13) 
        {
            break;
        }
    if (ch=='e') 
        {
            putch(ch);
            *buf++='$';
            i++;
            continue;
        }
    if(strchr(alf,ch) || (ch=='.'))
        {
            if ((strchr(alf,ch)-alf)>=p) continue;
            *buf++=ch;
            putch(ch);
            i++;
            continue;
        }
    if (strchr(oper,ch)) 
        { 
            putch(ch); 
            pz=buf;
            *buf++=ch;
            i++;
            if (ch=='+') znak=1;
            if (ch=='-') znak=2;
            if (ch=='*') znak=3;
            if (ch=='/') znak=4;
            continue;
        }
    }
    return znak;
}
 
double scan_buf(char *buf, char *oper, int p, char *stack)
{
    double i;
    i=0;
    while ((*buf!=0)&&(*buf!=*pz))
    {
        *stack++=*buf++;
    }
    //Как преобразовать ??????
    return i;
}
 
 
void gotoxy(int xpos, int ypos)
{
  COORD scrn;    
 
  HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
 
  scrn.X = xpos; scrn.Y = ypos;
 
  SetConsoleCursorPosition(hOuput,scrn);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru