![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.08.2011
Сообщений: 30
|
![]()
Всем привет.
Ребят у меня есть такая задача: Дана строка, содержащая слова, разделенные одним или несколькими разделительными символами (пробелами, табуляторами), в начале строки и в конце строки также могут находиться разделительные символы. Сформировать новую строку на основе исходной строки, из которой удалены слова, встречающиеся в исходной строке только один раз. Оставшиеся слова разделяются одним пробелом. В начале строки и в конце строки не должно быть разделительных символов. Натолкните на идею, как и какие инструменты СИ нужно использовать? Я уже и с массивами пробовал и с указателями и никак не могу понять, как в итоге сравнивать слова... Так в СИ запрещено записывать целое слово в один элемент массива, меня это вводит в ступор) С числами подобные операции получаются слету и без проблем, а вот со строками что то грустно в СИ. Помогите, пожалуйста. Заранее благодарю. Последний раз редактировалось zmey1; 16.11.2012 в 15:44. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Слово = указатель на первую букву слова;
Указатели на первые буквы слов можно свести хоть в массив, хоть куда. Сравнивать слова, при таком определении слов - легко. Вот компактный вариант на указателях; если это непонятно - напишите свой, развёрнутый: Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.08.2011
Сообщений: 30
|
![]()
Это мне понятно.
Я не пойму как запихнуть все слова из массива строки в массив указателей, чтобы в одном элементе массива указателей было слово и к нему можно было обратиться через первый символ, *name[1]+0 например. char *name[]={"fsdf","fgh"}; Вот на подобии такой операции, только меня интересует динамическое присваивание нового элемента с адресами на символы нового слова. На уровне инициализации мне не подходит. Последний раз редактировалось zmey1; 16.11.2012 в 16:32. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Можно.
Код:
Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.08.2011
Сообщений: 30
|
![]()
Мне Ваша идея очень как раз нравится.
Вот только на входе я имею строковый массив с кучей слов через пробел и только в конце массива стоит символ окончания строки. Как мне обращаться к словам по адресу первого символа, когда первым он считается в начале массива и последним в конце строки, а не в конце слова. Мне только нужно, как то разделить целый строчный массив на отдельные слова... И обращаться ко всем словам не 0,1,2,3,4,5, а 0,1,2,3; 0,1,2,3,4 итд... Как это можно сделать? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры | nuriyat | Помощь студентам | 1 | 21.01.2012 16:16 |
С++ строковые массивы,неверная работа функции | artpro | Помощь студентам | 0 | 06.01.2012 13:26 |
массивы и строковые данные | radiokarazinec | Общие вопросы Delphi | 13 | 23.02.2011 05:47 |
Строковые массивы | vanilla_bear | Помощь студентам | 2 | 25.12.2009 20:53 |
Pascal: массивы и строковые величины. Требуется помощь. | pANd4 | Помощь студентам | 7 | 17.04.2009 15:28 |