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

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

Войти
Регистрация
Восстановить пароль
 
 
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
#1

Сортировки? - C++

26.01.2013, 20:46. Просмотров 526. Ответов 15
Метки нет (Все метки)

На экзамене нам дали такое задание
"Написать функцию сортировки вектора строк."
Подскажите как можно решить эту программу если мы прошли
"Линейные алгоритмы", "Циклы и ветвления", "Одномерные массивы и строки",
"Двумерные массивы и матрицы" и "Перечисляемый тип. Структуры"?

Добавлено через 15 минут
И какие методы сортировки есть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 20:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировки? (C++):

Пример быстрой сортировки массива строк и сортировки методом выбора - C++
Добрый вечер. Скиньте пожалуйста пример быстрой сортировки массива строк и сортировки массива строк методом выбора. Очень срочно надо,...

Составить блок – схемы для шейкер- сортировки и сортировки Шелла - C++
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить блок – схемы для шейкер-...

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

Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки - C++
Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора...

Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а - C++
Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее аргументом должен...

Изменить метод "быстрой сортировки" на метод "сортировки вставками" - C++
Как изменить метод "интеративной быстрой сортировки" на метод "сортировки вставками «с конца массива»"? Нужно изменить только метод...

15
mister pOO
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 33
26.01.2013, 20:54 #2
Сортировок много, например сортировка пузырьком, сортировка шелла, быстрая сортировка. Различие между ними лишь в эффективности.
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 20:59 #3
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
#include <iostream>
#include <string>
 
using namespace std;
 
void bubble_sort (string *mas, int size)
{
    for (int i=0;i<size;++i)
        for (int j=i+1;j<size;++j)
            if (mas[j]<mas[i])
            {
                string temp=mas[i];
                mas[i]=mas[j];
                mas[j]=temp;
            }
}
 
int main ()
{
    string *mas; int size;
    cout<<"Vvedite razmer"<<endl;
    cin>>size;
    mas=new string [size];
    cout<<"Vvedite stroki"<<endl;
    for (int i=0; i<size; ++i)
        cin>>mas[i];
    bubble_sort(mas,size);
    for (int i=0; i<size; ++i)
        cout<<mas[i]<<endl;
    return 0;
}
Думаю на вашем уровне больше такой сортировки пузырьком требовать не будут
1
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 20:59  [ТС] #4
И что это за команда strcmp?
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:03 #5
Сравнивает две строки. Но она необходима для строк, представленных через char*.
0
l_cho
3 / 3 / 0
Регистрация: 02.04.2012
Сообщений: 31
26.01.2013, 21:04 #6
сравнивает указанную строку с другой строкой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
int strcmp(const char *str1, const char *str2);
 
int main(void)
{
  char s[80];
 
  printf("Enter passw: ");
  gets(s);
 
  if(strcmp(s, "pass")) {
    printf("Enter passw\n");
    return 0;
  }
 
  return 1;
}
0
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 21:13  [ТС] #7
Цитата Сообщение от Hrobak Посмотреть сообщение
string *mas;
А string это тип?
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:15 #8
string - это шаблонный класс. Его часто рассматривают вместо С-шных char *. Я не могу быть уверен, рассмотрели ли вы его. Могу переделать для C-строк, если хотите.
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.01.2013, 21:18 #9
Наверно как-то так и выглядит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
int main()
{
   std::vector <std::string> d;
   d.push_back("one str");
   d.push_back("two ");
   d.push_back("four");
   d.push_back("three ");
   d.push_back("five str");  
   std::vector <std::string>:: iterator iter;
   std::sort(d.begin(), d.end());
   for (iter = d.begin(); iter<d.end(); ++iter)
       std::cout<<*iter<<std::endl; 
   return 0;
}
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:20 #10
BumerangSP, вряд ли ТС вообще о STL слышал
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.01.2013, 21:23 #11
Hrobak, что интересно, в задании написано "вектор строк". Или это, может, только трактовка такая.

Vahram1995, может, нужен одномерный массив, содержащий в каждом элементе char-массив?
0
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 21:35  [ТС] #12
Цитата Сообщение от Hrobak Посмотреть сообщение
string - это шаблонный класс. Его часто рассматривают вместо С-шных char *. Я не могу быть уверен, рассмотрели ли вы его. Могу переделать для C-строк, если хотите.
Был бы очень признателен за вашу помощь

Добавлено через 7 минут
Цитата Сообщение от BumerangSP Посмотреть сообщение
может, нужен одномерный массив, содержащий в каждом элементе char-массив?
Ну одногруппники так написали
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
struct text
{
     char str[128];
};
 
int main()
{
    const short int N = 5;
    text text1[N];
 
    for (int i = 0; i < N; i++)
    {
        cin >> text1[i].str;
    }
 
    text temp;
 
    for (int i = 0; i < N; i++) //сортировка пузырьком
    {
        for (int j = 0; j < N - i; j++)
        {
            if (strcmp(text1[j].str, text1[j+1].str) == 1) //
            {
                for (int m = 0; m < 10; m++)
                {
                    temp.str[m] = text1[j].str[m];
                }
                for (int m = 0; m < 10; m++)
                {
                    text1[j].str[m] = text1[j+1].str[m];
                }
                for (int m = 0; m < 10; m++)
                {
                    text1[j+1].str[m] = temp.str[m];
                }
            }
        }
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
        cout << text1[i].str << endl;
    }
 
    system("PAUSE");
}
Но я передаю вам задание так как сказал преподователь.
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:53 #13
Вы уж извините за дикую мешанину C и C++, но вот что получилось:
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
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
 
const int MAX=20;
using namespace std;
void bsort (char **mas, int n)
{
    for (int i=0;i<n;++i)
        for (int j=i+1;j<n;++j)
            if (strcmp(mas[j],mas[i])<0)
                swap(mas[i],mas[j]);
}
 
int main()
{
    int n;
    cin>>n;
    cin.ignore();
    char **mas;
    mas= new char *[n];
    for (int i=0;i<n;++i)
    {
        mas[i]=new char [MAX];
        cin.getline(mas[i],19);
        cin.clear();
    }
    bsort(mas,n);
    for (int i=0;i<n;++i)
        cout<<mas[i]<<endl;
    return 0;
}
Первый вариант получше будет.
1
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.01.2013, 21:57 #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
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    const short int N = 5;
    char str[N][128]={0};
    for (int i = 0; i < N; i++)
        cin >> str[i];    
    for (int i = 0; i < N; i++)
          for (int j = 0; j < N; j++)
            if (strcmp(str[i], str[j]) != 1)
                {
                  char buf[128];
                  strcpy(buf,str[i]);
                  strcpy(str[i],str[j]);
                  strcpy(str[j],buf);
                }             
    cout << endl;         
    for (int i = 0; i < N; i++)
       cout<<str[i]<<'\n';
    system("PAUSE");
}
1
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 21:59  [ТС] #15
А библиотеки cstdio и algorithm какую функцию выполняет?
И лучше использовать cstdio или stdio.h?
0
26.01.2013, 21:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2013, 21:59
Привет! Вот еще темы с ответами:

Сортировки С++ - C++
Всем доброго времени суток! Не могу понять в чем ошибка,прошу помочь. вот условие задачи: В текстовом файле содержатся записи о...

Сортировки - C++
Ребя сделайте пожалуйста одну из двух задачек, очень прошу( не сочтите за наглость, заранее огромное спасибо вам ! 1.В файле input.txt...

Сортировки - C++
Доброго времени суток друзья! Если вас сильно не затруднит, не могли бы вы мне сделать 2 задачки, до завтра сдать нужно ( Ну или одну,...

сортировки - C++
народ помогите нужны программки для 1)сортировки прямым выбором(по убыванию 5&gt;3&gt;1) 2)сортировка двоичной вставкой(по возрастанию 1&lt;3&lt;5)...


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

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

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