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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
#1

Отсортировать массив символьных строк по алфавитному порядку? - C++

10.03.2012, 16:06. Просмотров 3084. Ответов 15
Метки нет (Все метки)

не могу написать эту задачу. каким образом можно эту задачу написать??

{

Отсортировать массив символьных строк по алфавитному порядку, отфильтровав предварительно все строки, содержащие цифры и специальные символы.

}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2012, 16:06     Отсортировать массив символьных строк по алфавитному порядку?
Посмотрите здесь:

C++ Дан массив символьных строк. В каждой строке удалить путем сдвига все латинские буквы.
В строке по алфавитному порядку расставить символы! Очень нужно! C++
C++ Массив из n символьных строк
Задача на массив символьных строк. C++
C++ Как отсортировать число по порядку возрастания цифр?
C++ Не правильно работает код (отсортировать по алфавиту массив строк)
C++ Массивы символьных строк
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
10.03.2012, 16:49     Отсортировать массив символьных строк по алфавитному порядку? #2
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream> 
#include <string>
#include <vector>
#include <algorithm>
 
typedef std::vector<std::string> StringArray;
 
// Заполнение массива строк.
void FillArray(StringArray& array)
{
  StringArray strings;
  strings.push_back("dsffsf");
  strings.push_back("sfasdfa");
  strings.push_back("324fsfd");
  strings.push_back("32422d");
  strings.push_back("@aadf");
  array.swap(strings);
}
 
// Печать массива строк
void PrintArray(const std::string& title, const StringArray& array)
{
  std::cout << title << std::endl;
  std::copy(array.begin(), array.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
 
// Проверка символа. Если он "плохой" возвращаем true.
bool IsSymbolBad(char symbol)
{
  return !isalpha(symbol);
}
 
// Проверка строки на наличие плохи символов.
bool HasBadSymbol(const std::string& str)
{
  // Поиск "плохого" символа в строке.
  std::string::const_iterator pos = std::find_if(str.begin(), str.end(), &IsSymbolBad);
 
  // Если "плохой" символ найден, возвращаем true.
  return pos != str.end();
}
 
// Обработка массива строк согласно заданию.
void ProcessArray(StringArray& array)
{
  // Удаление строк у которых есть "плохие" символы.
  StringArray::iterator newEnd = std::remove_if(array.begin(), array.end(), &HasBadSymbol);
  array.erase(newEnd, array.end());
 
  // Сортировка массива строк по алфавиту.
  std::sort(array.begin(), array.end());
}
 
int main()
{
  StringArray array;
  FillArray(array);
  PrintArray("Before processing:", array);
  ProcessArray(array);
  PrintArray("After processing:", array);
  return 0;
}
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
11.03.2012, 22:41  [ТС]     Отсортировать массив символьных строк по алфавитному порядку? #3
на код родного С++ не похож ) мне нужно хотя бы образец этого задания на родном С++ ...

Добавлено через 50 секунд
DU, на код родного С++ не похож ) мне нужно хотя бы образец этого задания на родном С++ ...
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.03.2012, 22:45     Отсортировать массив символьных строк по алфавитному порядку? #4
Виталий123 что значит родного? это и есть C++
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
12.03.2012, 10:31  [ТС]     Отсортировать массив символьных строк по алфавитному порядку? #5
panicwassano, родной эта типа через Консольное приложение Win32 ... (я узнал в книге А.Хортон.Visual Studio 2005-Базовый курс)
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
12.03.2012, 10:50     Отсортировать массив символьных строк по алфавитному порядку? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Виталий123, Это и есть консольное приложение. Стандарт С++.

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
   std::vector<std::string> vec = 
   {
      "hello",
      "and123",
      "what",
      "1223is23123",
      "@!?:.,"
   };
   vec.erase(std::remove_if(vec.begin(), vec.end(), [](const std::string& value)
   {
      return !std::all_of(value.begin(), value.end(), isalpha);
   }), vec.end());
   std::sort(vec.begin(), vec.end());
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
http://liveworkspace.org/code/c0c572...0be2e70222b946
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
12.03.2012, 20:38     Отсортировать массив символьных строк по алфавитному порядку? #7
Вот мой вариант, помойму чуть по проще .
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  char mass[9],tmp;
  for(int i=0;i<10;i++){
   cin>>mass[i];}
   
   for(int n=0;n<99;n++){
     for(int i=0;i<9;i++){
   if(mass[i]>mass[i+1]){
    tmp = mass[i+1];
    mass[i+1]=mass[i];
    mass[i]=tmp;}}}
    
  cout<<"-------"<<endl;
  for(int i=0;i<10;i++){
   cout<<mass[i]<<","<<endl;}
  
  
  system("PAUSE");  
  return 0;
}
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
12.03.2012, 21:56  [ТС]     Отсортировать массив символьных строк по алфавитному порядку? #8
cactus09, спасибо большое !
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
12.03.2012, 23:25     Отсортировать массив символьных строк по алфавитному порядку? #9
cactus09, Я вот просто не могу понять. А в чем проще? Использовано больше языковых конструкций, кода больше...
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
12.03.2012, 23:29     Отсортировать массив символьных строк по алфавитному порядку? #10
код на STL настолько удобен для чтения
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
13.03.2012, 00:24     Отсортировать массив символьных строк по алфавитному порядку? #11
Цитата Сообщение от ForEveR Посмотреть сообщение
Стандарт С++.
C++
1
2
3
4
5
6
7
8
   std::vector<std::string> vec = 
   {
      "hello",
      "and123",
      "what",
      "1223is23123",
      "@!?:.,"
   };
Это, если не ошибаюсь, стандарт C++x0 (C++11, или как там его ещё называют)
Цитата Сообщение от Виталий123 Посмотреть сообщение
Visual Studio 2005
точно не поддерживает.

Виталий123, лучше компилятор укажи, книжка про 2005 студию - это, конечно, хорошо, но мало...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>
 
int main(){
    const std::string EXCLUDE_SYMBOLS("0123456789@#$%");
    std::string str;
    std::multiset<std::string> set;
    
    while ( std::cout << "> " && std::getline(std::cin, str) && ! str.empty() )
        if ( str.find_first_of(EXCLUDE_SYMBOLS) == std::string::npos )
            set.insert(str);
        
    std::cout << "\nSorted:" << std::endl;
    std::copy(set.begin(), set.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    
    return 0;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
13.03.2012, 11:16     Отсортировать массив символьных строк по алфавитному порядку? #12
easybudda, Ну там весь код с использованием 0x.
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
13.03.2012, 19:13     Отсортировать массив символьных строк по алфавитному порядку? #13
Виталий123, Всегда пожалуста

ForEveR, Он просто проше в понимании.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.03.2012, 00:56     Отсортировать массив символьных строк по алфавитному порядку? #14
позащищаю немного свой код. он более понятен чем все предложенные варианты:
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
30
  StringArray array;
  FillArray(array);
  PrintArray("Before processing:", array);
  ProcessArray(array);
  PrintArray("After processing:", array);
 
  // Если вы хоть немного дружите с английским, то тут буквально написано:
  // Объявдяем массив.
  // Заполняем массив
  // Печатаем массив
  // Обрабатываем массив
  // Печатаем обработанный массив.
 
  // На этом уровне понятно что происходит. Не нужно в голове парсить все циклы и прочие
  // операторы и далее склеивать в мыслях суть программы.
 
  // Далее, если вам интересно как печатается массив, значит идет в функцию PrintArray
  // и смотрим реализазию. Если реализация непонятна, меняем на свою. Главное чтобы
  // функция продолжала печатать массив. Точно так же поступаем с остальными функциями.
  // Структура программы от этого не меняется, на самом высоком уровне по прежнему понятно
  // что происходит.
 
 
  // Вот например код:
  std::cout << 0 << std::endl;
  // Вроде все знают что эта строка выведет в консоль инт равный нулю. И никого не волнует
  // как она устроено до тех пор, пока не нужно будет сделать с печатью что-то хитрое.
  // То же самое и с функциями и кода: хотите знать как печатается массив - добро пожаловать
  // в код функции печати, не хотите - не забивайте голову мелочами, вы просто знаете что ее
  // вызов приведет к печати массива.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
15.03.2012, 11:16     Отсортировать массив символьных строк по алфавитному порядку? #15
cactus09, Не могу согласиться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2012, 00:00     Отсортировать массив символьных строк по алфавитному порядку?
Еще ссылки по теме:

C++ Массив строк отсортировать в лексикографическом порядке (возможно ли использовать std::sort?)
C++ С++ Построение символьных строк
Как передать в функцию массив символьных строк? C++
Сравнение символьных строк C++
Отсортировать двумерный массив так, чтобы максимальные и минимальные значения строк были упорядочены C++

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

Или воспользуйтесь поиском по форуму:
silofff
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 6
21.05.2012, 00:00     Отсортировать массив символьных строк по алфавитному порядку? #16
Цитата Сообщение от cactus09 Посмотреть сообщение
Вот мой вариант, помойму чуть по проще .
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  char mass[9],tmp;
  for(int i=0;i<10;i++){
   cin>>mass[i];}
   
   for(int n=0;n<99;n++){
     for(int i=0;i<9;i++){
   if(mass[i]>mass[i+1]){
    tmp = mass[i+1];
    mass[i+1]=mass[i];
    mass[i]=tmp;}}}
    
  cout<<"-------"<<endl;
  for(int i=0;i<10;i++){
   cout<<mass[i]<<","<<endl;}
  
  
  system("PAUSE");  
  return 0;
}
А тут не символы строк сортируются?
Yandex
Объявления
21.05.2012, 00:00     Отсортировать массив символьных строк по алфавитному порядку?
Ответ Создать тему
Опции темы

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