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

Строки - C++

Восстановить пароль Регистрация
 
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
21.10.2011, 01:18     Строки #1
Программе подается строка, состоящая из слов отделенных различным количеством пробелов. Требуется вывести на экран ту же самую строку, но слова должны быть разделены одним пробелом.

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

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки. C++
C++ Вывести строки файла, после строки добавляя, сколько раз в ней встретилось слово
Строки. Вывести на печать то слово этой строки, которое по алфавиту предшествует всем другим C++
C++ Вывести на экран все строки данного массива одну за другой в виде целой строки
C++ .Упорядочить строки матрицы по убыванию значений произведений наименьшего и наибольшего элементов каждой строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
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
 Аватар для 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,131
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
 Аватар для OstapBender
581 / 519 / 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++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы больше суммы (i-1)-й строки
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки

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

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

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