Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Peperovich
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
1

Переместить слова в начало строки

25.12.2011, 19:56. Просмотров 952. Ответов 2
Метки нет (Все метки)

Добрый день! Дана строка CString типа, перем m_f и m_last указывают диапазон слов, которые надо перенести в начало строки.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 char *tot;
 char *str,*str3,*str2;
 str2=" ";
 str3=" ";
 i=0;
 
  str=id1.GetBuffer();
  tot=strtok(str," ");
  
  while (tot!=NULL)
  {
    if (m_f<=i && m_last>=i) strcpy(str2,tot);
    else strcpy(str3,tot);
    tot=strtok(NULL," ");
    i++;
  }
strcat(str2,str3);
Почему то вызывает ошибку Нарушение прав доступа при записи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 19:56
Ответы с готовыми решениями:

Строки символов. (Переместить последнюю букву в начало слова)
Прошу помощи в решении задачи. Нужно написать код к данной задаче в Visual...

Переместить буквы в начало слова
Всем привет ;) Тут есть задание и я застрял. Помогите :) a) Текст состоит из...

Переместить первую букву слова в конец слова(Строки)
Здравствуйте уважаемые форумчане. Помогите пожалуйста. Напечатать все слова,...

Поместить в начало строки слова, содержащие только цифры, а затем – все остальные слова
Строка состоит из слов, разделенных ровно одним пробелом, пробелов перед первым...

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10...

2
zss
Модератор
Эксперт С++
7390 / 6787 / 4293
Регистрация: 18.12.2011
Сообщений: 17,931
Завершенные тесты: 1
25.12.2011, 20:48 2
Нарушение прав доступа связано с тем, что под str,str3,str2 не выделена память.
Можно написать так
char str[100],str3[100]=" ",str2[100]=" ";
Но мне кажется, вы решаете не ту задачу, в условии написано использовать объект Cstring из MFC
1
Peperovich
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
25.12.2011, 22:23  [ТС] 3
id1 - это и есть CString
Спасибо ошибку исправило это, осталось только логику мне поправить.

Добавлено через 11 минут
Кстати почему он предлоги пропускает из 1 буквы?

Добавлено через 42 минуты
Не пойму что случилось стал ругаться на строчку
str=id1.GetBuffer();

Добавлено через 39 минут
Все таки доделал. Может кому пригодится в будущем. Выкладываю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char *tot;
char str[100]="",str3[100]="",str2[100]="";
i=1;
//id1 CString берется из CEdit
strcat(str,id1); 
tot=strtok(str," ");
strcpy(str3,tot);strcat(str3," ");
    while (tot!=NULL)
  { 
      tot=strtok(NULL," ");i++;   
      if (m_f<=i && m_last>=i && tot!=NULL) {strcat(str2,tot);strcat(str2," ");}
      if ((m_f>i || m_last<i) && tot!=NULL) {strcat(str3,tot);strcat(str3," ");}             
  }
    strcat(str2,str3);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2011, 22:23

Отрицательные значения массива переместить в начало
Все отрицательные значения линейного вещественного массива переместить в его...

Переместить нулевые элементы в начало массива
#include &lt;iostream&gt; #include&lt;time.h&gt; #include&lt;random&gt; using namespace std;...

Переместить 3 числа из конца очереди в начало
Допустим есть двусторонняя очередь. Я ввёл какое-то количество чисел. Нужно...


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

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

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