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

Строки - C++

Восстановить пароль Регистрация
 
Noviq
Сообщений: n/a
03.01.2011, 01:37     Строки #1
Ввести с клавиатуры строку символов. Подсчитать в ней количество запятых. Если это количество больше 3, то одну из них заменить на точку;
иначе - удалить все запятые из строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
03.01.2011, 02:13     Строки #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
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
#include <clocale>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
    
    string str;
    char comma = ',';
    int qty = 0;
 
    getline(cin, str);
 
    for (int i = 0; i < str.length(); i++)
        if (str[i] == comma)
            qty++;
 
    if (qty > 3) {
        cout << "Какую запятую по счету менят: ";
        cin >> qty;
        for (int i = 0; i < str.length(); i++) {
            if (str[i] == comma) qty--;
            if (!qty) {
                str.replace(i, 1, ".");
                break;
            }
        }
 
    }
    else
        for (int i = 0; i < str.length(); i++)
            if (str[i] == comma)
                str.replace(i, 1, "");
    
    cout << str << endl;
    system("pause");
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.01.2011, 02:26     Строки #3
Noviq,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    typedef std::string T_str;
    T_str str;
    std::getline(std::cin, str);
    const char find=',';
    int cnt=std::count(str.begin(), str.end(), find);
    if(cnt > 3)
    {
        size_t idx=str.find(find);
        str.replace(idx, 1, ".");
     }
     else if(cnt >=0 && cnt <=3)
     {
        str.erase(std::remove(str.begin(), str.end(), find), str.end());
     }
     std::cout<<"Result\n"<<str<<'\n';
     return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
03.01.2011, 13:18     Строки #4
Цитата Сообщение от Noviq Посмотреть сообщение
Ввести с клавиатуры строку символов. Подсчитать в ней количество запятых. Если это количество больше 3, то одну из них заменить на точку;
иначе - удалить все запятые из строки
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
#include <stdio.h>
#include <string.h>
 
#define BUFSIZE 256
#define IS_FIND ','
#define TO_INSERT '.'
 
void _swap(char *a, char *b)
{
    char t = *a;
    *a = *b;
    *b = t;
}
 
int main(void)
{
    char str[BUFSIZE];
    int cnt = 0, i, _i, j;
    printf("\n\nInput srting ->");
    scanf("%[^\n]%*c", str);
 
    for(i = 0; i < strlen(str); ++i)
        if(str[i] == IS_FIND)
            ++cnt;
 
    if(cnt > 3)
    {
        int ind;
        for(i = strlen(str) - 1; i >= 0; --i)
            if(str[i] == IS_FIND)
                ind = i;
 
        str[ind] = TO_INSERT;
    }
 
    else
    {
        cnt = 0;
        for(i = 0; i < strlen(str); ++i)
        {
           if(str[i] == IS_FIND)
           {
               _i = i;
               for(j = i + 1; j < strlen(str); ++j)
               {
                   _swap(&str[_i], &str[j]);
                   ++_i;
               }
               ++cnt;
           }
        }
    }
 
    printf("\n\nResult string -> ");
    cnt /= 2;
    for(i = 0; i < strlen(str) - cnt; ++i)
        printf("%c", str[i]);
 
    return 0;
}
Yandex
Объявления
03.01.2011, 13:18     Строки
Ответ Создать тему
Опции темы

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