Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2012, 12:46   #1
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Здравствуйте.
Если не ленно, подскажите как реализовать поиск подстроки в строках списка и как отсортировать список по алфавиту. Чем подробнее и дотошнее, тем лучше
У меня дана простейшая структура вида:
Код:
struct mlist{
 string A[20];
 int count;
}
Например, у меня есть список:

qwerty
ololosh
mouse
cat

Ввожу в поиск: 'e' => результат: qwerty, mouse
Ну, про алфавитный порядок, думаю, не нужно уточнять.

Заранее, спасибо.

Вообще чет не могу сообразить как работать со string переменными... Хотел было свою функцию поиска подстроки написать, но понял, что не помню как в string брать отдельные символы и всё такое... в интернете в основном написано про char, но переделывать уже 6 готовых функций так не хочется )
Да и полезно бы с этим string разобраться.

Поднял топик...

Последний раз редактировалось Stilet; 15.10.2012 в 15:48.
Alendorff вне форума Ответить с цитированием
Старый 08.10.2012, 14:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты умеешь работать с STL?
С классом list? он как раз для этого ниче так пригодится.
вот к примеру: http://www.programmersforum.ru/showthread.php?t=84515
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2012, 06:39   #3
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

list'ом не пользовались ни разу ещё... думаю, так не пойдет
Alendorff вне форума Ответить с цитированием
Старый 09.10.2012, 08:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда показывай как ты создаешь список.
Примеров создания списков на Си в сети и на форуме полно, так что не говори что не можешь искать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2012, 18:51   #5
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

да всё простенько, серенько...
Код:
#include <vcl.h>
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;


struct mlist{
 string A[20];
 int count;
};
/*------------------------------------*/
bool insert(struct mlist* l, string s){

(*l).A[(*l).count]=s;
(*l).count=(*l).count+1;

return true;
}
/*------------------------------------*/
bool delete_last (struct mlist* l){
(*l).count=(*l).count-1;
return true;
}
/*------------------------------------*/
bool delete_this_num(struct mlist* l, int num){
   if ((*l).count!=num){
   //num=num-1;
   string temp[20];
   //будем смещать вверх все строки
   for (int i=num; i<(*l).count; i++)
   {
   (*l).A[i]=(*l).A[i+1];
   }
   (*l).count=(*l).count-1;

   }
return true;
}
/*------------------------------------*/
bool add_here(struct mlist* l, string s, int num){
   (*l).count=(*l).count+1;
   string temp;

   if (num<(*l).count+1){
   temp=(*l).A[num];
   (*l).A[num]=s;
   for (int i=(*l).count-1; i>num+1; i--)
   {
   (*l).A[i]=(*l).A[i-1];
   }
   (*l).A[num+1]=temp;
   }
   else {
   bool b;
   b=insert(l,s);
   }
return true;
}
/*------------------------------------*/
bool browse(struct mlist* l, int num){
if (num<(*l).count) cout<<(*l).A[num]<<endl;
else return false;
return true;
}

int main()
{
mlist ls;
ls.count=0;
int a=0, num=0;
bool b;
std::string s;
while (ls.count<10 && a!=8){
 b=true;
 std::cout<<"Press 1 for insert string"<<std::endl;
 std::cout<<"Press 2 for browse list"<<std::endl;
 std::cout<<"Press 3 for delete last string from list"<<std::endl;
 std::cout<<"Press 4 to delete a row by number"<<std::endl;
 std::cout<<"Press 5 to add a line to the desired position"<<std::endl;
 std::cout<<"Press 6 to select the line to view."<<std::endl;
 std::cout<<"Press 6 to search the substring."<<std::endl;
 std:: cout<<"Press 8 for exit"<<std::endl;
 cin>>a;
 if (a==1) {
   std::cin>>s;
   b=insert(&ls, s);
   if (b!=true) return 1;
 }

 if (a==2) {
   for (int i=0; i<ls.count; i++)
   {
   std::cout<<ls.A[i]<<std::endl;
   }
 }
 if (a==3) {
 b=delete_last(&ls);
 if (b!=true) return 1;
 }
 if (a==4) {

 cin>>num;
 b=delete_this_num(&ls,num);
 if (b!=true) return 1;
 }
 if (a==5) {
 cout<<"Enter the string"<<endl;
 std::cin>>s; cout<<"Enter the desired position"<<endl;
 cin>>num;
 b=add_here(&ls,s,num);
 if (b!=true) return 1;
 }
 if (a==6) {
 cout<<"Enter the line number."<<endl;
 cin>>num;
 b=browse(&ls, num);
 if (b!=true) return 1;
 }
 if (a==7) {
 cout<<"What are you looking for?"<<endl;
 cin>>s;
 //b=search(&ls, s);
 if (b!=true) return 1;
 }
}//while

return 0;
}
Alendorff вне форума Ответить с цитированием
Старый 15.10.2012, 15:56   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
string A[20];
Это список??? Это массив. Причем конечный.
Вот списки:
http://www.programmersforum.ru/showthread.php?t=90595
http://www.programmersforum.ru/showt...279#post713279
http://www.programmersforum.ru/showthread.php?t=84515
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2012, 02:02   #7
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Ну я же структуру ещё в шапке топа описал... это я так обозвал просто "список", сорри, не хотел никого в заблуждение вводить. Но вопрос то не в том был, как список создать.
Alendorff вне форума Ответить с цитированием
Старый 16.10.2012, 08:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно понял.
Тогда вот пример поиска подстроки:
Код:
	string s="12345";
	int i=s.find("45");
в i будет -1 если подстрока не найдена.
Смекаешь куда это применить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2012, 13:55   #9
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Сделать функцию поиска в которой просматривать каждую строку массива и если она содержит подстроку, то можно вывести на экран... Наверное...
А вот с сортировкой как? Сортироваться, скорее всего, должно путём сравнения по символам соседних строк в массиве... Или нет? Как сравнивать? Как брать кусочек строки?
Alendorff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка списка значений по другому списку mmet Microsoft Office Excel 4 07.09.2012 08:27
Поиск по списку androidvsu Общие вопросы по Java, Java SE, Kotlin 4 14.06.2010 18:43
Поиск по списку gavrylyuk Microsoft Office Excel 6 25.03.2010 16:24
Удаление строк по списку файлов 550953 Microsoft Office Excel 7 01.09.2009 10:23
список/поиск по списку risen Microsoft Office Excel 5 21.07.2009 17:33