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

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

Войти
Регистрация
Восстановить пароль
 
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
#1

Строки - C++

21.10.2011, 01:18. Просмотров 260. Ответов 6
Метки нет (Все метки)

Программе подается строка, состоящая из слов отделенных различным количеством пробелов. Требуется вывести на экран ту же самую строку, но слова должны быть разделены одним пробелом.

Ребят, наведите на мысль, как можно это сделать? Просто записывать слова во второй массив и разделять каждое слово пробелом? или можно сделать все в одном массиве?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2011, 01:18     Строки
Посмотрите здесь:

Добавить в конец первой строки, последние n2-n1 слов второй строки C++
C++ Скопировать второе слово каждой строки в начало следующей строки
Описать функцию, что добавляет N символов строки S2 в конец строки S1 C++
Из символов введенной строки сформировать две строки - из цифр и букв C++
c++ Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1. C++
C++ Найти номер строки матрицы, наиболее отдаленный от первой строки
C++ Поменять первый элемент строки с максимальным элементом этой строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
21.10.2011, 01:37     Строки #2
Можно и так и так. Но первый способ проще.
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
21.10.2011, 01:52  [ТС]     Строки #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int _tmain(int argc, _TCHAR* argv[])
{   setlocale(0,"");
    
    char a[100], b[100];
    cout << "Введите строку: \n";
    gets(a);
    int i=0, j=0,k;
    int len=strlen(a);
    
    for (i = 0; i < len; i++)
        if(a[i]!=' ')       
            b[j++]=a[i];
        else b[j]=' ';
            k=j;
 
    for(int j = 0; j < k; j++)
        cout << b[j];
    cout << endl;
    
    return 0;
}
Что-то не хочет он пробелы ставить)
jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
21.10.2011, 02:17     Строки #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
27
28
int main()
{     
     setlocale(0,"");
     char a[100], b[100];
     cout << "Введите строку: \n";
     gets(a);
     int i=0, j=0,k;
     int len=strlen(a);
 
     for (i = 0; i < len; i++)
    if(a[i]!=' ')           
        b[j++]=a[i];
    else
    {
        b[j++]=' ';
        for(int y=i; y<len; ++y)
            if( a[y+1] == ' ' )
                ++i;            
            else
                break;
    }
     k=j;
     for(int j = 0; j < k; j++)
    cout << b[j];
     cout << endl;
     system("pause");
     return 0;
}
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
21.10.2011, 02:21     Строки #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
#include <iostream>
#include <string>
 
int main()
{
    setlocale( LC_ALL, "rus" );
 
    const int size = 100;
    char str[ size ] = { 0 };
    std::cout << "Введите строку: ";
    std::cin.getline( str, size, '\n' );
 
    char resultStr[ size ] = { 0 };
    int length = 0;
    for( char *tokenPtr = strtok( str, " " ); tokenPtr != NULL; tokenPtr = strtok( NULL, " " ) )
    {
        strcpy( resultStr + length, tokenPtr );
        length += strlen( tokenPtr );
        resultStr[ length ] = ' ';
        resultStr[ length + 1 ] = '\0';
        ++length;
    }
    resultStr[ length - 1 ] = '\0';
 
    std::cout << resultStr << std::endl;
    system( "pause" );
    return 0;
}
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.10.2011, 02:33     Строки #6
третий способ:
бить на части и сразу выводить без массива.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 02:41     Строки
Еще ссылки по теме:

Выявить строки, в которых макс. эл-т больше суммы остальных эл-ов строки C++
C++ Переставить строки матрицы по возрастанию максимальных элементов каждой строки
C++ Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3 C++
C++ Отбросить от строки последние N символов и вывести оставшуюся часть строки

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

Или воспользуйтесь поиском по форуму:
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
21.10.2011, 02:41  [ТС]     Строки #7
с функциями полезно смотреть, но все-таки пока мне по-душе простая, незатейливая программа)
всем спасибо за помощь)
Yandex
Объявления
21.10.2011, 02:41     Строки
Ответ Создать тему
Опции темы

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