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

Преобразовать последовательность заменив в ней все восклицательные знаки точками - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
scenik
3 / 3 / 1
Регистрация: 03.12.2011
Сообщений: 55
04.12.2013, 23:57     Преобразовать последовательность заменив в ней все восклицательные знаки точками #1
2. Даны натуральное число n, символы s1, s2, …, sn. Преобразовать последовательность s1, s2, …, sn заменив в ней: все восклицательные знаки точками.

Написал программу такого вида:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
void main() 
{
    char s[] = {"Hello, World! Good bye, World!!!"};
    for (int i = 0; s[i]; i++) 
    {
        if(s[i] == '!')
            s[i] = '.';
    }
    cout<< s;
    }
Преподаватель говорит что должно быть n символов, т. е. n вводится с клавиатуры, а после него уже вводится строка символов. Написал такого типа (примитивно, но все же):
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
void main() 
{
    int n;
    cout<<"n=";
    cin>>n;
    char s[1000];
    cout<<"Vvedite stroky iz "<<n<<" simvolov: ";
    cin>>s;
    for (int i = 0; s[i]; i++) 
    {
        if(s[i] == '!')
            s[i] = '.';
    }
    cout<< s <<"\n";
    }

Как сделать так, что бы вводилось только определенное количество символов (указанное в n), а не объявлять массив в 1000 символов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 23:57     Преобразовать последовательность заменив в ней все восклицательные знаки точками
Посмотрите здесь:

C++ Дана строка. Преобразовать ее, заменив точками все двоеточия
C++ Преобразовать строку, заменив точками все двоеточия, встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки...
Преобразовать последовательность, заменив запятыми все двоеточия C++
В строке заменить восклицательные знаки точками C++
C++ Строки. Преобразовать строку, заменив в ней все восклицательные знаки точками
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
senderlender
5 / 5 / 1
Регистрация: 03.12.2013
Сообщений: 50
05.12.2013, 00:45     Преобразовать последовательность заменив в ней все восклицательные знаки точками #2
Сделай динамический массив:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
void main() 
{
    int n;
    cout<<"n=";
    cin>>n;
    char *s = new char [n];
    cout<<"Vvedite stroky iz "<<n<<" simvolov: ";
    cin>>s;
    for (int i = 0; s[i]; i++) 
    {
        if(s[i] == '!')
            s[i] = '.';
    }
    cout<< s <<"\n";
    delete []s;
    }
scenik
3 / 3 / 1
Регистрация: 03.12.2011
Сообщений: 55
05.12.2013, 01:32  [ТС]     Преобразовать последовательность заменив в ней все восклицательные знаки точками #3
Благодарю, тыкнуть спасибку не могу, скорее всего из-за даты Вашей регистрации, но в ближайшем будущем обязательно поставлю.
axicose
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 25
05.12.2013, 01:43     Преобразовать последовательность заменив в ней все восклицательные знаки точками #4
можно сделать динамически растущий вектор, т.е ты сам заполняешь с консоли элементы, а вектор выделит размер который тебе нужен. имхо, так лучше, походу. заюзай std::vector, если возможно.
Yandex
Объявления
05.12.2013, 01:43     Преобразовать последовательность заменив в ней все восклицательные знаки точками
Ответ Создать тему
Опции темы

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