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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 22:45   #1
oriojke
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию Сортировка строк

Необходимо экспериментальным путем установить, сколько в массивах из 10000 (100000, 1000000) строк длины 20 должно быть инверсий, чтобы сортировка методом Шелла была эффективнее метода вставок.

Подскажите пожалуйста, как заполнить и отсортировать массив(точнее, как вообще сортируются строки)? Идей вообще никаких...
Функция сортировки вставками(для int и double):

Код:
void insert(T *a, int n){
  int k=1;
  while(k<n){
      for(int i=k; i>0 && a[i]<a[i-1]; i--){
          T x=a[i];
          a[i]=a[i-1];
          a[i-1]=x;
      }
      k++;
  }
}

Последний раз редактировалось oriojke; 02.06.2010 в 23:06.
oriojke вне форума Ответить с цитированием
Старый 02.06.2010, 22:50   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Строки сортируются точно также как и обычные числа. Только сравнить 2 строки обычным оператором < не всегда можно, надо использовать функцию
Код:
int strcmp ( const char * str1, const char * str2 );
Возвращает число меньше нуля, когда s1<s2, ноль возвращает когда строки равны, и положительное число когда s1 > s2/
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 02.06.2010, 23:00   #3
oriojke
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Ок, а заполнить как? И как под это дело объявить массив?
Что-то типа char **a и заполнять?
oriojke вне форума Ответить с цитированием
Старый 02.06.2010, 23:49   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
	char ** ms = new char * [10];
	char temp[100];
	for(int i = 0; i < 10; i++)
	{
		cin >> temp;
		ms[i] = new char[100];
		strcpy(ms[i], temp);
	}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 03.06.2010, 20:56   #5
oriojke
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Цитата:
error: 'strcpy' was not declared in this scope
=(
какую библиотеку надо подключить?

#4 - этот код создаст массив из 10 строк длины 100, я правильно понял?
oriojke вне форума Ответить с цитированием
Старый 03.06.2010, 21:02   #6
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
Сообщение от oriojke Посмотреть сообщение
какую библиотеку надо подключить?
C/C++ #include "string.h"
C++ #include <string>

Цитата:
Сообщение от oriojke Посмотреть сообщение
#4 - этот код создаст массив из 10 строк длины 100, я правильно понял?
Да, ты прав.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 03.06.2010, 21:10   #7
oriojke
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
C/C++ #include "string.h"
C++ #include <string>
странно, не помогло
oriojke вне форума Ответить с цитированием
Старый 03.06.2010, 21:14   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
#include <string.h>
кавычки то откуда?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.06.2010, 21:39   #9
oriojke
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Код:
#include <iostream>
#include <string>
using namespace std;
int main(){
    char ** ms = new char * [10];
    char temp[100];
    for(int i = 0; i < 10; i++){
		cin >> temp;
		ms[i] = new char[100];
		strcpy(ms[i], temp);
    }
    return 0;
}


>g++ -o strings strings.cpp
strings.cpp:error: 'strcpy' was not declared in this scope
oriojke вне форума Ответить с цитированием
Старый 04.06.2010, 13:03   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

C - #include <string.h>
C++ - #include <cstring>
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка строк HixoH Общие вопросы C/C++ 0 27.04.2010 15:40
Сортировка строк FormAlDeGid Microsoft Office Excel 1 18.11.2009 14:43
Сортировка строк Anarki Общие вопросы C/C++ 2 19.09.2009 20:06
Сортировка строк sheva75 Microsoft Office Excel 3 06.02.2008 05:00