Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199

Строка ввода в калькуляторе

01.11.2009, 22:39. Показов 1023. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это часть будущего калькулятора. Она отвечает за заполнение буфера - массива BUF , предварительно исключая "мусор" . Основание системы счислени p. пока стоит 16 по умолчаню. Но потом будет вводиться пользователем. Вобщем буфер заполняеться норм. Но есть проблема. При стирании ( ну т.е. хотел написать 123 , а написал 12345 и бакспейсом стёр 5ку и 4ку) удаляеться из буфера на 1 элемент меньше чем , нужно . ( В итоге получаеться 1234 , вместо 123 .) , но если нужно заменить например 1234 на 12304 То всё норм . помогите исправить.
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
#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);
 
char buf[80];
char oper[]="+-*/.";
char alf[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int p=16;
 
int _tmain(int argc, _TCHAR* argv[])
{
    buf[79]='#';
    input_str(buf,oper);
    printf("HELLO");
    printf("%s", buf);
    getch();
    return 0;
}
 
char input_str(char (*buf), char (*oper))
{
    char ch;
    int i;
    i=0;
    while(*buf!='#')
    {
    ch=getch();
    if (ch==8) 
        { 
            gotoxy(--i,0); 
            putch(NULL);
            *buf--=NULL; 
            gotoxy(i,0); 
            continue;
        }
    if (ch==13) return '\0';
    if(strchr(alf,ch) || (ch=='.'))
        {
            if ((strchr(alf,ch)-alf)>=p) continue;
            *buf++=ch;
            putch(ch);
            i++;
            continue;
        }
    if (strchr(oper,ch)) 
        { 
            putch(ch); 
            *buf++=ch;
            i++;
            continue;
        }
    }
}
 
 
 
void gotoxy(int xpos, int ypos)
{
  COORD scrn;    
 
  HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
 
  scrn.X = xpos; scrn.Y = ypos;
 
  SetConsoleCursorPosition(hOuput,scrn);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2009, 22:39
Ответы с готовыми решениями:

Цикл ввода данных в калькуляторе
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;conio.h&gt; using namespace std; float number() { int res = 0; for...

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

Проверка корректности ввода в калькуляторе
Задание простое. Сделать калькулятор (+,-,*,\). Надо, чтобы в одной строке вводилась операция, при этом, если есть лишние символы, выводить...

2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
02.11.2009, 03:03
А потому, что нужно сперва указатель buf деинкриминировать, а потом присваивать ему значение 0
То есть так писать в строке 40:
C++
1
 *--buf =NULL;
Молодец, что подробно всё описал.
1
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
02.11.2009, 20:41  [ТС]
Спасибо большое))))я только начал С++ изучать))) и пытался написать --*buf но поскольку невышло решил сделать *buf-- ... теперь буду знать =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2009, 20:41
Помогаю со студенческими работами здесь

Запрет ввода двух запятых в калькуляторе
Здравствуйте. Подскажите, как сделать запрет ввода двух запятых в калькуляторе, а также чтобы первым символом в текстбоксе также не была...

В консольном арифметическом калькуляторе вместо консольного ввода-вывода реализовать работу с файлом
В консольном арифметическом калькуляторе вместо консольного ввода-вывода реализовать работу с файлом. Входной файл содержит вычисляемый...

Ошибка ввода\вывода 104, файле не открыт для ввода (строка 0)
Всё работает, но пишет: &quot;ошибка ввода\вывода 104, файле не открыт для ввода (строка 0). Program pyat; uses crt; var...

Как исправить ошибку "Входная строка имела неверный формат" в калькуляторе?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Строка ввода
Как сделать, чтоб строка ввода была &quot;видна&quot;, а то у меня белый фон, и сама строка - белая. Вот скрипт этой строки : echo...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru