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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
_ben_
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 4
#1

[C++] Объявление строк - C++

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

Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая длиной k символов (если на k-ю позицию попадает слово, то его следует отне-сти ко второй строке).
Помогите плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 16:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос [C++] Объявление строк (C++):

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

Пустое объявление. - C++
Вот на эту строку компилятор ругается "Пустое объявление". В чём может быть причина ? for (int 1=0; i<=15; i=i++) ...

Предварительное объявление - C++
Добрый вечер, Есть файл file.h и file.cpp, в file.cpp я делаю подключение #include <boost/signal.hpp>, не подключаю в хэдер file.h...

Объявление структуры - C++
Я объявляю структуру так: typedef struct { BYTE aaa; BYTE bbb; short ccc; int ddd; }ABC; Нашёл один пример, где...

Объявление typedef - C++
Доброго времени суток! Подскажите, что означает структура: typedef int Boolean; Это объявление пользовательского типа?

объявление переменных - C++
вообщем есть задание которое не раз тут обсуждалось решалось и тд. суть не в этом. столкнулся с маленькой проблемой при оформлении каждого...

4
Сыроежка
Заблокирован
30.11.2011, 16:28 #2
Цитата Сообщение от _ben_ Посмотреть сообщение
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая длиной k символов (если на k-ю позицию попадает слово, то его следует отне-сти ко второй строке).
Помогите плиз
Я подумал, как же лучше сделать вашу задачу, и, похоже, нашел оптимальное решение. Используйте функцию strtok. Она будет последовательно вам находить слова в исходной строке. Если длина найденного слова плюс позиция строки, в которую это слово надо записать, больше или равно k, то процесс формирования второй строки на этом заканчивается.
При этом для первой строки надо будет постоянно перемещать исходную строку на найденное слово, которое было скопировано во вторую строку.

То есть вам надо будет использовать функции strtok, strcpy и strcat . Функция strlen вам не нужна, так как длину сова можно рассчитать, взяв разность указателей.
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,812
30.11.2011, 16:49 #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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
    
#define FIELD_WIDTH 10
#define STR_LEN 256
#define STR_MASK "%255[^\n]%*c"
    
int main(void){
    char str[STR_LEN];
    
    while ( printf("String: ") && scanf(STR_MASK, str) == 1 ){
        if ( strlen(str) < FIELD_WIDTH )
            printf("2short!\n");
        else {
            char * p;
            for ( p = str + FIELD_WIDTH; p > str && ! isspace(*p); --p )
                ;
            if ( p == str )
                printf("Mission imposible!\n");
            else {
                *p = '\n';
                printf("Result:\n%s\n", str);
            }
        }
    }
    
    return 0;
}
0
_ben_
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 4
30.11.2011, 18:22  [ТС] #4
Ой, забыл указать, в С++ надо(
0
Сыроежка
Заблокирован
01.12.2011, 19:30 #5
Цитата Сообщение от _ben_ Посмотреть сообщение
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая длиной k символов (если на k-ю позицию попадает слово, то его следует отне-сти ко второй строке).
Помогите плиз написать в C++

Добавлено через 2 часа 5 минут
Помогите кто пожалуйста
Несколько некорректная формулировка задачи. Если первая строка имеет длину k символов, то позиции в ней нумеуются от 0 до k-1. А учитывая то, что строка должна завершаться нулевым символом, то для данных отведены позиции лишь от 0 до k-2. Поэтому правильно формулировать задачу так: если на k-1 позицию попадет слово, то есть не пробел, то его отнести ко второй строке.

Пусть есть исходная строка s и две строки s1 и s2. Тогда алгоритм простой. Я его набрасал с учетом того, что вам нельзя пользоваться стандартными строковыми функциями за исключением std::strlen

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
unsigned int len = std::strlen( s );
 
unsigned int len1 = k - 1;
if ( s[k-1] != ' ' )
{
   unsigned int i = k;
   for ( ; i != 0; i-- )
   {
      if ( s[i-1] == ' ' ) break;
   }
   len1 = i;
}
 
if ( len1 == 0 )
{
   std::cout << "The string can not be splitted\n";
}
else
{
   unsigned int i = 0;
   for ( ; i < len1; i++ ) s1[i] = s[i];
   s1[i] = '\0';
   for ( ; i < len; i++ ) s2[i-len1] = s[i];
   s2[i] = '\0';
   std::cout << "s1 = " << s1 << std::endl;
   std::cout << "s2 = " << s2 << std::endl;
}
Можете его взять за основу для написания вашей программы.
0
01.12.2011, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 19:30
Привет! Вот еще темы с ответами:

Объявление в структуре - C++
ругается на объявление батона struct StructurClientData { Button^ button; unsigned int data_ip4; DWORD...

Объявление переменных - C++
Пишу на VS2012. Перерыл кучу сайтов, но нигде не нашел, как объявить переменную в asm вставке? Добавлено через 53 минуты uuppp

Объявление переменной - C++
Два вопроса: 1) Чем отличается запись: int a = 10; От: int a(10); 2) Что обозначает данная запись: int *a = new int (3); ...

Объявление конструктора - C++
Изучаю книгу Джосьютиса по STL и столкнулся с немного непонятным объявлением конструктора. Помогите разобраться, правильно ли я его...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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