Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199

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

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

Author24 — интернет-сервис помощи студентам
Это часть будущего калькулятора. Она отвечает за заполнение буфера - массива 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,692
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru