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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 489
#1

Строки в с++ - C++

27.12.2011, 00:36. Просмотров 1678. Ответов 8
Метки нет (Все метки)

19. В строке удалить символ «двоеточие» ( : ) и подсчитать количество удаленных символов.
программа к сожалению вылетает
мб изобрёл велосипед но команд каких надо не нашёл(таких как в делфи)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{char *s,*s1,*s2; int i,k; 
cout<<"vvedite text end tchk";
cin>>s;
s1 = s1 + strcspn(s, ":");
k=1;
for (i=1;i<strlen(s);i++)
if (s[i]==':')
{ 
s2 = strchr(s, ':');// после                                    
s1 = s1 + strcspn(s2, ":");  //До : 
k++;
}
cout<<s1;
    return 0;
}
http://i30.***********/big/2011/1226/...3f54c59056.png
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2011, 00:36     Строки в с++
Посмотрите здесь:

Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки - Java
Помогите пожалуйста! 1)Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки. 2)Дана...

Ввести строки и через n символов первой строки вставить вторую строку, и так до конца строки - C++ Builder
Помогите исправить баг задача состоит в следующем :ввести строку и простроку тоесть две строки и надо через (n) символов первой строки...

Слить две строки, вставив символы одной строки между символами другой строки - Pascal
Строка a из n символов лексикографически меньше строки b из n символов, если существует такой индекс j, что aj &lt; bj, а для всех i &lt; j ai =...

Сравнить строки, первый несовпадающий элемент строки-приемника записать в регистр AL, строки-источника - в DL - Assembler
Помогите написать программу на ассемблерене совсем еще разобрался с этим задание: Ввести с клавиатуры две строки одноразрядных...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках. - Turbo Pascal
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши &quot;Ввод&quot;. Программа должна определить длину введенной...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй - Turbo Pascal
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...

Строки. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки. - Pascal
Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов. Если в конце строки точка отсутствует, то найти слово,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
27.12.2011, 00:45     Строки в с++ #2
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
#include <iostream>
#include <cstdlib>
#include <cstring>
 
int main()
{
    char buffer[80];
    std::cout << "Enter the string" << std::endl;
    std::cin >> buffer;
 
    bool flag = true;
    unsigned int iterations = 0, length = static_cast<unsigned int>(strlen(buffer));
    while (flag)
    {
        flag = false;
        for (unsigned int i = 0, end = length - iterations - 1; i < end; ++i)
            if (buffer[i] == ':')
            {
                std::swap(buffer[i], buffer[i + 1]);
                flag = true;
            }
        ++iterations;
    }
    buffer[length - iterations + 1] = NULL;
 
    std::cout << "Answer: " << buffer << std::endl;
 
    system("Pause");
    return 0;
}
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 489
27.12.2011, 00:47  [ТС]     Строки в с++ #3
Спасибо большое ) а можете комментарии добавить, всё таки охото не сдать просто задачу а понять)
А моя не правильная?)
Я так понял: 1.выталкивает все : в конец
2. считает выталкивания
3. из строки отнимает кол-во выталкиваний
так?
pavlovnik
41 / 22 / 4
Регистрация: 07.12.2011
Сообщений: 114
27.12.2011, 00:51     Строки в с++ #4
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
#include <iostream>
#include <string>
 using namespace std;
 
int main()
{   
    cout<<" privet drug. Pishi : "<<endl;
    char str[80];
    cin.getline(str,80);
    int kol=0;
    for(int a=0; a<5; a++)
    {
    for(int i=0; i<80; i++)
    {
 
        if( str[i] ==':')
        {
            str[i]=str[i+1];
         kol++;
        }
        }
    }
cout<<str<<endl<<kol;
int i;
cin>>i;
}

попробуй так попроще, правда если два двоеточия подряд то не получается...сейчас еще пошаманю немного, что получится...

вот несколько раз проверку чтобы сделать, подряд 4 двоеточия удалит
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
27.12.2011, 00:52     Строки в с++ #5
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
#include <iostream>
#include <cstdlib>
#include <cstring>
 
int main()
{
    // создаем и вводим строку;
    char buffer[80];
    std::cout << "Enter the string" << std::endl;
    std::cin >> buffer;
 
    bool flag = true;
    unsigned int iterations = 0, length = static_cast<unsigned int>(strlen(buffer));
    // алгоритм такой - все двоеточия всплывают в конец массива (строки) - т.е. обычная сортировка пузырьком;
    while (flag)
    {
        // цикл while крутится до тех пор, пока есть перестановки символов;
        flag = false;
        for (unsigned int i = 0, end = length - iterations - 1; i < end; ++i)
            // если двоеточие, то меняем местами со след. символом;
            if (buffer[i] == ':')
            {
                std::swap(buffer[i], buffer[i + 1]);
                // фиксируем что была перестановка, чтобы была след. итерация цикла;
                flag = true;
            }
        ++iterations;
    }
    // отсекаем двоеточия;
    buffer[length - iterations + 1] = NULL;
 
    std::cout << "Answer: " << buffer << std::endl;
 
    system("Pause");
    return 0;
}
Цитата Сообщение от paxan86 Посмотреть сообщение
А моя не правильная?)
если выдает ошибку, то конечно нет)
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 489
27.12.2011, 01:05  [ТС]     Строки в с++ #6
Спасибо вам=)
только не понял что pavlovnik у тебя делает программа)
sandye51 спасибо большое) вопросы : ) system("Pause"); зачем
= NULL; зачем
std:: зачем
#include <cstdlib>
#include <cstring> зачем
static_cast<unsigned int>(strlen(buffer)); (strlen знаю что делает))
если нет желания ответить то всё равно спасибо...=)

Добавлено через 2 минуты
последнее : не удалилось но не суть важно..=)
pavlovnik
41 / 22 / 4
Регистрация: 07.12.2011
Сообщений: 114
27.12.2011, 01:07     Строки в с++ #7
да я видимо не понял задание) у меня прога просто вводишь сроку с двоеточиями, эти двоеточия она удаляет и считает количество удаленных этих двоеточий, выпонсит строку обратно...но там оставляет проблелы вместо них,которые я что-то убрать ночью не смоог)



system("Pause"); останавливает твою программу, замирает окно, чтоыб не вылетало и не закрывалось, так сказать
можно сделать как int i; cin>>i; но это так студенческий способ,а систем пауз более еее,крутой)


std:: это можно после # include написать using namespace std и не писать это, а так это там какая та фигня, я не понмю теории)
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 489
27.12.2011, 01:25  [ТС]     Строки в с++ #8
спасибо)

Добавлено через 13 минут
как этот код вставить в программу а то не получается что то.. вроде из за = NULL;(только не знаю что он делает)


это после // отсекаем двоеточия;
buffer[length - iterations + 1] = NULL;
C++
1
2
3
4
5
        if (buffer[length] == ':')
        {
          buffer[length - 1] = NULL;
          iterations=iterations +1 ;
        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2011, 01:29     Строки в с++
Еще ссылки по теме:

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки - C++
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Строки. Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1 - Turbo Pascal
Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1.В строке S подсчитать кол-во вхождений строки S1.

БД с операциями: добавление новой строки, удаление строки, редактирование имеющейся строки - PascalABC.NET
Нужно создать базу данных в паскале, с операциями: добавление новой строки, удаление строки, редактирование имеющей строки. Желательно с...

Строки. Даны строки S и So. Найти количество вхождений строки So в строку S - Turbo Pascal
Помогите пожалуйста, как сделать эту задачу без этих вот строчек... B:=TRUE; и без команды INC... Вот условие задачи: Даны строки S и...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки, начиная...


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

Или воспользуйтесь поиском по форуму:
pavlovnik
41 / 22 / 4
Регистрация: 07.12.2011
Сообщений: 114
27.12.2011, 01:29     Строки в с++ #9
я так мельком поглядел, походе что этот NULL ставит конец строки, тоесть указывает что кончилась она, тоесть как указатель или что там, в ноль...ничего нету, конец строки...
Yandex
Объявления
27.12.2011, 01:29     Строки в с++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru