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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
4ance
1 / 1 / 0
Регистрация: 02.11.2010
Сообщений: 78
#1

Строка - обрезка, замена, перенос - C++

29.01.2011, 16:28. Просмотров 2444. Ответов 4
Метки нет (Все метки)

Дана символьная строка "Семенов Виктор Николаевич". Напечатайте ее в виде "В.Н. Семенов". Количество пробелов может быть произвольное.

Думаю ставить точки после обнаруженной заглавной буквы в строке (кроме первого символа - фамилии), но выкидывает ошибку, преобразованный массив в начале заполнен мусором, кроме того, надо потом переносить В. Н. на начало строки - с функциями <cstring> пока не дружу, поэтому хочу сделать с их помощью эту задачу. Промежуток { -33...-64 } - значения заглавных русских букв в моём компиляторе.

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
#include "stdafx.h"
#include <cstring>
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "russian" );
 
    char MassivStrokNachalniy[30] = "Семенов Виктор Николаевич";     //Задаём начальный символьный массив
 
    printf ("Исходная строка: %s\n", MassivStrokNachalniy );        //Вывод
 
    for ( int i = 1; i < 30; i++ )
    {
        if ( -33 > MassivStrokNachalniy[ i ] > -64 )
            MassivStrokNachalniy[ i + 1 ] = '.';
            
    }
 
    printf ("Полученная строка: %s\n", MassivStrokNachalniy );
 
    system ("pause");       //Задержать экран
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2011, 16:28     Строка - обрезка, замена, перенос
Посмотрите здесь:

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

Обрезка строки - C++
Добрый день! Есть такая конструкци: char buff; sprintf(buff,&quot;Hello\x00%s!&quot;,&quot;World&quot;); std::cout &lt;&lt; buff &lt;&lt; std::endl; // Hello ...

Строки, динамическая память, обрезка строк - C++
Доброго времени суток... Вот задача на дом 2. Показать на экран с m по n символов строки, введенной пользователем и записать данный...

Обрезка заданной строки в файле с обеих сторон - C++
Добрый день. Нужно обрезать текстовый файл, при этом известен текст слева и справа от нужного, но не сам нужный. string input; string...

Динамический двумерный массив строк и операции со строками (поиск, обрезка, слияние) - C++
Создать динамический двумерный массив на 10 ячеек (для десяти строк). Заполнить его строчками текста, принятыми с клавиатуры. ...

Дана строка. Подсчитать сколько раз первая строка входит во вторую - C++
Дана строка. Подсчитать сколько раз первая строка входит во вторую. Например: вводим &quot;при&quot; (строка должна вводиться с клавиатуры, как на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
29.01.2011, 16:32     Строка - обрезка, замена, перенос #2
Цитата Сообщение от 4ance Посмотреть сообщение
if ( -33 > MassivStrokNachalniy[ i ] > -64 )
так нельзя писать
4ance
1 / 1 / 0
Регистрация: 02.11.2010
Сообщений: 78
29.01.2011, 17:40  [ТС]     Строка - обрезка, замена, перенос #3
Цитата Сообщение от sandye51 Посмотреть сообщение
так нельзя писать
Заменю на
C++
1
( MassivStrokNachalniy[ i ] > -64 ) && ( MassivStrokNachalniy[ i ] < -33 )
Теперь В.ктор Н.колаевич выдаёт - как и задумывал.

Добавлено через 29 минут
Далеко от использования функций стринг)))
C++
1
2
3
4
5
6
7
8
9
10
11
int count = -1;
for ( int i = 1; i < 30; i++ )
    {
        if ( ( MassivStrokNachalniy[ i ] > -64 ) && ( MassivStrokNachalniy[ i ] < -33 ) )
        {           
            MassivStrokNachalniy[ i + 1 ] = '.';
            MassivStrokPoluchenniy[ ++count ] = MassivStrokNachalniy[ i ];
            MassivStrokPoluchenniy[ ++count ] = MassivStrokNachalniy[ ++i ];
        }
            
    }
Осталось только фамилию перенести на нужное место.

Добавлено через 35 минут
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
#include "stdafx.h"
#include <cstring>
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "russian" );
 
    char MassivStrokNachalniy[30] = "Семенов Виктор Николаевич";     //Задаём начальный символьный массив
    char MassivStrokPoluchenniy[30] = "                          "; //Полученный символьный массив
    char * Razdelitel;
 
    printf ("Исходная строка: %s\n", MassivStrokNachalniy );        //Вывод
    
    int count = -1;
    for ( int i = 1; i < 30; i++ )
    {
        if ( ( MassivStrokNachalniy[ i ] > -64 ) && ( MassivStrokNachalniy[ i ] < -33 ) )
        {           
            MassivStrokNachalniy[ i + 1 ] = '.';
            MassivStrokPoluchenniy[ ++count ] = MassivStrokNachalniy[ i ];
            MassivStrokPoluchenniy[ ++count ] = MassivStrokNachalniy[ ++i ];
        }
            
    }
 
    Razdelitel = strtok( MassivStrokNachalniy , " "); // Берёт Первое слово из строки
 
    strcat( MassivStrokPoluchenniy, Razdelitel );    // Складывает полученный массив с выдранным словом из первой строки (должен)
 
    printf ("Полученная строка: %s\n", MassivStrokPoluchenniy );
 
    system ("pause");       //Задержать экран
    return 0;
}
Функция strcat присоединяет к полученному массиву первое слово из начального массива. Беда в том, что он присоединяет слово к концу результирующего массиива, тк я хочу, чтобы он его вставлял в первое пустое место полученного массива
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
29.01.2011, 18:21     Строка - обрезка, замена, перенос #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<sstream>
using namespace std;
 
int main(){
    string a, b, c;
    getline(cin, a);
    stringstream ss(a);
    ss>>a>>b>>c;
    cout<<b[0]<<". "<<c[0]<<". "<<a;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2011, 18:37     Строка - обрезка, замена, перенос
Еще ссылки по теме:

Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы? - C++
Есть две строки. MSK=&quot;Москва&quot; и from, считанная из текстовика, через getline Для проверки вывожу эти обе строки, на первый взгляд...

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры. - C++
Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка...

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н - C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо...

Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 - C++
Есть код... string s, s0; char c; cout &lt;&lt; &quot;Введите строку s, s0 и символ c: &quot;; getline(cin, s); ...

Преобразование строка-число-строка - C++
Здравствуйте, можете объяснить или показать на примере, как можно из строки извлечь числа, чтобы потом можно было с ними работать и каких...

Строка string и строка char - C++
Ребят помогиме. В общем задание такое дана строка типа string и строка char которая содержит символ к. В общем если в строке типа String ...


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

Или воспользуйтесь поиском по форуму:
4ance
1 / 1 / 0
Регистрация: 02.11.2010
Сообщений: 78
29.01.2011, 18:37  [ТС]     Строка - обрезка, замена, перенос #5
Цитата Сообщение от igorrr37 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<sstream>
using namespace std;
 
int main(){
    string a, b, c;
    getline(cin, a);
    stringstream ss(a);
    ss>>a>>b>>c;
    cout<<b[0]<<". "<<c[0]<<". "<<a;
}
Супер)
И всё таки, почему мой strcat пытается первый байт строки s1 приклеить к последнему байту строки s2?
Yandex
Объявления
29.01.2011, 18:37     Строка - обрезка, замена, перенос
Ответ Создать тему
Опции темы

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