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

Задать строку без нулевого символа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите найти ошибку: Создать строку символов произвольной длины, заданную диапазоном http://www.cyberforum.ru/cpp-beginners/thread1233890.html
/*Задание: Создать строку символов произвольной длины. Ввести с клавиатуры начало и конец диапазона в строке. Записать строку без диапазона(т.е. часть справа и часть слева)*/ #include <iostream> #include <stdio.h> using namespace std; int main() { int z=0, t=0; char x, y;
C++ Релиз консольной программы с SNMP запросами - найти ошибку в коде Привет всем! Я написал программку, которая опрашивает некоторые устройства используя запросы по протоколу SNMP. Программа отлично работает при Start without debugging, но её релизная версия спотыкается в самом начале, а именно при первом запросе. Прошу тыкнуть, где я мог что-то сделать неправильно? Релизную версию получаю запуском Build->Batch build->... Код программы: #include... http://www.cyberforum.ru/cpp-beginners/thread1233883.html
C++ Поиск популярного триплета. Конструктивная критика
Добрый день. Недавно помогал решать задачу про триплеты, и захотелось услышать критики по своему коду :D. все-таки только учусь, и она я считаю будет полезной. в первую очередь, хотелось бы услышать: конструктивную критику по коду, советы по улучшению быстродействия алгоритма, может вообще другой алгоритм ;D, ну а потом остальное. принципи тут все простое.. но .. вот что-то захотелось))) ...
Вместо включения используйте закрытое наследование C++
Здравствуйте. Изучаю С++ по книге Прата С. "Язык программирования С++. Лекции и упражнения". Столкнулся с проблемой. Есть задание: Выполните еще раз упражнение 1, но вместо включения используйте закрытое наследование. Здесь также могут пригодиться несколько объявлений typedef. Подумайте, как можно применить следующие операторы: PairArray::operator=(PairArray(Arraylnt() , Arraylnt())); ...
C++ Обеспечить работу приложения с БД Firebird на других ПК http://www.cyberforum.ru/cpp-beginners/thread1233780.html
Добрый день. Есть программа с бд на firebird, как скомпилировать программу так, что бы на компьютере где нет firebird она запускалась и работала?
C++ Изучение С++ с нуля Всем привет. Вчера зарегистрировался на форуме. Хочу изучить C++, но нет никаких знаний в этом направлении. Какие книги можно почитать абсолютному начинающему, который вообще не в курсе что такое программирование??? Как изучить C++ основательно, чтоб без пробелов? может начать с математики. короче у вас большой опыт. помогите... особыми умственными способностями, мягко говоря, не обладаю.... подробнее

Показать сообщение отдельно
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
25.07.2014, 16:17  [ТС]
Цитата Сообщение от NoMasters Посмотреть сообщение
GetHelp, как там может что-либо добавляться, если весь массив заполнен?
не знаю, но у меня че то не выходит, хотите вот код...

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
bool GetSolve(char* Expression, double* result) //Математический интерпретатор
{
    if (!Expression) return false; //Если строка пустая - выход
    //тут еще надо добавить удаление пробелов...
    Stack<char> operations; //Стек для операций
    Stack<double> numbers; //Стек для чисел
    const char set_operations[7] = {'(',')','+','-','*','/','^'}; //Операции
    const char set_numbers[11] = {'0','1','2','3','4','5','6','7','8','9','.'}; //Числа
    int len = strlen(Expression); //Длина строки
 
    //Заполняем оба стека
    for (int i = 0; i < len; i++) //Цикл по строке
    {
        if (strchr(set_operations, Expression[i])) //Если символ - операция
        {
            char c = Expression[i];
            operations.Push(&c); //Добавляем в стек
            continue; //Выходим из итерации
        }
        if (strchr(set_numbers, Expression[i])) //Если символ - цифра
        {
            int index = i; //Счетчик, начинающийся с текущей позиции основного цикла
            Stack<char> tmp; //Временный стек для числа
            while (strchr(set_numbers, Expression[index++])) //Цикл по строке начинаю с текущей позиции основного цикла
            {
                char c = Expression[index-1]; //Текущий символ
                tmp.Push(&c); //Добавляем в стек
            }
            char* tmp_s = new char[tmp.GetSize()]; //Временный массив для значений из стека
            if (tmp.GetArray(tmp_s)) //Получаем значения из стека в массив
            {
                tmp_s = StrWithNull(tmp_s, tmp.GetSize());
                double tmp_d = atof(tmp_s); //Переводим строку в число
                numbers.Push(&tmp_d); //Добавляем число в стек
            }
        }
        else return false; //Если символ не операция и не число - выход
    }
    return true;
}
тут еще правда только заполнение стеков, самой интерпретации нет пока... цикл while на 24 строке, допустим Expression = "1+1", вот когда идет соответственно второй раз по этому циклу (вторая единичка), он проходит и потом снова идет... почему он идет? я могу предположить только нулевой символ...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru