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

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

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

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

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

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

{

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

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

В строке по алфавитному порядку расставить символы! Очень нужно! - C++
Дана строка. Напечатать в алфавитном порядке все слова из заданной строки, имеющие длину n . Просьба написать попроще , чтобы было...

Массив из n символьных строк - C++
Здравствуйте, Уважаемые форумчане :) Есть такое вот задание: Задан массив из n символьных строк. Упорядочить строки по убыванию...

Задача на массив символьных строк. - C++
Возможно я не первый кто просит помочь в данной задачи, но все же повторюсь.: Дан текст, состоящий из n предложений. Предложение...

Как передать в функцию массив символьных строк? - C++
Допустим имею char* T={"aaaa", "bbbb", "ccc"}; как передать например по указателю.

Дан массив символьных строк. В каждой строке удалить путем сдвига все латинские буквы. - C++
Помогите пожалуйста решить задачку. :help: Нужен полный текст программы. Заранее благодарна! :)

Не правильно работает код (отсортировать по алфавиту массив строк) - C++
Вот задача: Отсортировать по алфавиту массив строк и вывести на экран, учитывать первый символ. Пример: Входные данные: 3...

15
DU
1485 / 1131 / 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;
}
0
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
11.03.2012, 22:41  [ТС] #3
на код родного С++ не похож ) мне нужно хотя бы образец этого задания на родном С++ ...

Добавлено через 50 секунд
DU, на код родного С++ не похож ) мне нужно хотя бы образец этого задания на родном С++ ...
0
panicwassano
594 / 562 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.03.2012, 22:45 #4
Виталий123 что значит родного? это и есть C++
0
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
12.03.2012, 10:31  [ТС] #5
panicwassano, родной эта типа через Консольное приложение Win32 ... (я узнал в книге А.Хортон.Visual Studio 2005-Базовый курс)
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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/c0c572d6292752e2d90be2e70222b946
3
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;
}
1
Виталий123
-96 / 5 / 2
Регистрация: 29.11.2011
Сообщений: 84
12.03.2012, 21:56  [ТС] #8
cactus09, спасибо большое !
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
12.03.2012, 23:25 #9
cactus09, Я вот просто не могу понять. А в чем проще? Использовано больше языковых конструкций, кода больше...
1
panicwassano
594 / 562 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
12.03.2012, 23:29 #10
код на STL настолько удобен для чтения
0
easybudda
Модератор
Эксперт CЭксперт С++
10000 / 5923 / 997
Регистрация: 25.07.2009
Сообщений: 11,170
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;
}
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.03.2012, 11:16 #12
easybudda, Ну там весь код с использованием 0x.
0
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
13.03.2012, 19:13 #13
Виталий123, Всегда пожалуста

ForEveR, Он просто проше в понимании.
0
DU
1485 / 1131 / 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;
  // Вроде все знают что эта строка выведет в консоль инт равный нулю. И никого не волнует
  // как она устроено до тех пор, пока не нужно будет сделать с печатью что-то хитрое.
  // То же самое и с функциями и кода: хотите знать как печатается массив - добро пожаловать
  // в код функции печати, не хотите - не забивайте голову мелочами, вы просто знаете что ее
  // вызов приведет к печати массива.
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
15.03.2012, 11:16 #15
cactus09, Не могу согласиться.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2012, 11:16
Привет! Вот еще темы с ответами:

Массив строк отсортировать в лексикографическом порядке (возможно ли использовать std::sort?) - C++
У меня есть такая задача: надо массив строк отсортировать в лексикографическом порядке. Так вот, можно ли использовать функцию std::sort...

Как отсортировать число по порядку возрастания цифр? - C++
kak mozno sdelat, ctobi dopustim cislo 1230521 sortirovalos i vivodilos na ekrane 0112235

Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию - C++
2) В массиве a ...a встречаются по одному разу все целые числа от 0 до n, кроме одного. За n действий найти пропущенное число с конечной...

Отсортировать двумерный массив так, чтобы максимальные и минимальные значения строк были упорядочены - C++
Привет всем нуждаюсь в помощи с задачей по С++. Она выглядит так: Дан двумерный массив. Разместить его строки так, чтобы при их просмотре...


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

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

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