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

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

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

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

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

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

Добавлено через 15 минут
И какие методы сортировки есть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 20:46     Сортировки?
Посмотрите здесь:

Сортировки - C++
Вообщем у меня было задание отсортировать по убыванию массивы (заданный рандомно, по убыванию, по возрастанию) Критерий: количество...

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

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

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

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

Сортировки - C++
Есть динамичный массив: #include <iostream> #include <ctime> using namespace std; int main() { ...

сортировки - C++
Можете объяснить что такое сортировка целого массива группировкой с последовательным упорядочиванием битов, и желательно дать алгоритм...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mister pOO
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 33
26.01.2013, 20:54     Сортировки? #2
Сортировок много, например сортировка пузырьком, сортировка шелла, быстрая сортировка. Различие между ними лишь в эффективности.
Hrobak
288 / 168 / 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;
}
Думаю на вашем уровне больше такой сортировки пузырьком требовать не будут
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 20:59  [ТС]     Сортировки? #4
И что это за команда strcmp?
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:03     Сортировки? #5
Сравнивает две строки. Но она необходима для строк, представленных через char*.
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;
}
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 21:13  [ТС]     Сортировки? #7
Цитата Сообщение от Hrobak Посмотреть сообщение
string *mas;
А string это тип?
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:15     Сортировки? #8
string - это шаблонный класс. Его часто рассматривают вместо С-шных char *. Я не могу быть уверен, рассмотрели ли вы его. Могу переделать для C-строк, если хотите.
BumerangSP
4285 / 1407 / 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;
}
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 21:20     Сортировки? #10
BumerangSP, вряд ли ТС вообще о STL слышал
BumerangSP
4285 / 1407 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.01.2013, 21:23     Сортировки? #11
Hrobak, что интересно, в задании написано "вектор строк". Или это, может, только трактовка такая.

Vahram1995, может, нужен одномерный массив, содержащий в каждом элементе char-массив?
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");
}
Но я передаю вам задание так как сказал преподователь.
Hrobak
288 / 168 / 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;
}
Первый вариант получше будет.
BumerangSP
4285 / 1407 / 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");
}
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
26.01.2013, 21:59  [ТС]     Сортировки? #15
А библиотеки cstdio и algorithm какую функцию выполняет?
И лучше использовать cstdio или stdio.h?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2013, 22:03     Сортировки?
Еще ссылки по теме:

сортировки - C++
помогите пожалуйста написать эти сортировки: пузырек, вставками, шелл, поиск(находишь элемент и возращаешь его индекс)

Си++, Сортировки - C++
Написать программу, осуществляющую блочную сортировку одномерного массива

Выбор сортировки - C++
Вообщем надо написать программу,которая при вводе определенного символа сортирует по возрастанию или убыванию,все это в консоли.вид...

Цикл сортировки. - C++
Доброго времени суток. Такая вот у меня проблема. Предположим у меня есть два массива: {1, 2, 2, 1, 3, 3, 2, 1, 0, 0} {1, 0, 1, 2, 0,...

Метод сортировки - C++
Доброго времени суток господа, имеется программа которая сортирует массив(состоящий из 0 и 1), так чтобы в начале были 0, а потом 1....


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

Или воспользуйтесь поиском по форуму:
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
26.01.2013, 22:03     Сортировки? #16
Здесь можно и не подключать cstdio, если scanf/printf не используете. algorithm для swap подключил. Если не хотите стандартный, возьмите из кода BumerangSP.
Yandex
Объявления
26.01.2013, 22:03     Сортировки?
Ответ Создать тему
Опции темы

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