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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
paxan86
51 / 46 / 1
Регистрация: 18.05.2011
Сообщений: 489
27.12.2011, 00:36     Строки в с++ #1
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     Строки в с++
Посмотрите здесь:

Добавить в конец первой строки, последние n2-n1 слов второй строки C++
C++ Скопировать второе слово каждой строки в начало следующей строки
C++ Найти номер строки матрицы, наиболее отдаленный от первой строки
C++ Вывести строки файла, после строки добавляя, сколько раз в ней встретилось слово
C++ Определить длину строки,удалить из строки все символы, которые равны заданному
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 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
программист С++
 Аватар для sandye51
677 / 579 / 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++ Если строки одинаковы, объединить две строки, исключив из второй первые десять символов
C++ Переместить вниз строки массива, в которых сумма элементов строки меньше ноля
C++ В динамической матрице целых чисел добавить строки после строки, содержащей простое число

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

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

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