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

Обработка строки с использованием указателей - C++

Восстановить пароль Регистрация
 
Lahden
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 52
10.11.2013, 22:16     Обработка строки с использованием указателей #1
Проблема такая:
Есть программа для подсчета кол-ва вхождений символа в строку и удаления последовательности из 2х и более символов.
Первый раз просит ввести строку, я ввожу, потом цифру, я ввожу, все что надо он делает(считает кол-во вхождений и убирает последовательности), если длина введенной строки - нечетное число, программа завершается(тут все норм). Если длина строки - четное число, то после окончания действий он должен снова попросить ввести строку, потом цифру и дальше по плану(посчитать, удалить), но "Enter string, please -> " и "Enter digit, please -> " он выводит сразу в одной строке друг за другом, и если я ввожу, например, 1234, то он сразу пишет 0, не дожидаясь ввода цифры. Вопрос: Что я делаю не так?
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
#include "work_4.h"
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    char* pTmp;
    char tmp [80];
    int digit;
    do
    {
        cout << "Enter string, please -> ";
        cin.getline (tmp,80);
        pTmp = new char [strlen(tmp)+1];
        strcpy_s (pTmp, strlen(tmp)+1,tmp);
        cout << "Enter digit, please -> " << endl;
        cin >> digit;
        char d = '0'+digit;
        int res;
        res = amountSymbol(tmp, d);
        char* pS = pTmp;
        char* str = tmp;
        while (*str != '\0')
        {
            if (*str == d && *(str + 1) == d)
                while(*str == d && *str)
                    ++str;
            if ( *str == '\0')
                break;
            *pS = *str;
            ++pS;
            ++str;
        }
        *pS = '\0';
        cout << res << endl;
        cout << pTmp << endl;
        delete [] pTmp;
    }while(strlen(tmp)%2==0);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 22:16     Обработка строки с использованием указателей
Посмотрите здесь:

C++ Обработка одномерных массивов с использованием указателей
C++ Переделать с использованием указателей
C++ Обработка одномерных массивов с использованием указателей (Visual studio) C++
Обработка одномерных массивов с использованием указателей C++
С использованием функций и указателей отсортировать строки массива строк по убыванию C++
Создать специализацию для шаблона, которая принимает массив указателей на строки и количество этих указателей C++
Обработка строк с использованием указателей: вывести слова в два столбика, по четности их длины C++
C++ Обработка двумерных массивов с использованием указателей

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сонца
 Аватар для Сонца
23 / 23 / 6
Регистрация: 20.06.2013
Сообщений: 83
10.11.2013, 22:22     Обработка строки с использованием указателей #2
Цитата Сообщение от Lahden Посмотреть сообщение
но "Enter string, please -> " и "Enter digit, please -> " он выводит сразу в одной строке друг за другом, и если я ввожу, например, 1234, то он сразу пишет 0, не дожидаясь ввода цифры.
Впишите fflush(stdin); мне обычно помогает.
C++
1
2
3
fflush(stdin);
cout << "Enter string, please -> ";
cin.getline (tmp,80);
Yandex
Объявления
10.11.2013, 22:22     Обработка строки с использованием указателей
Ответ Создать тему
Опции темы

Текущее время: 13:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru