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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2010, 17:11   #1
ser_b
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию Прогамма должна выполнять сортировку имен в лексикографическом порядке методом Хоора и Шелла.

Прогамма выполняет сортировку имен в лексикографическом порядке методом Хоора и Шелла.
Собрал вроде обе, но Хоора не хочет работать. Хаю на преобразование, т.е. что-то не так сделал со string'ом и char'ом, потому что дебагер показывает странные значения при выполнении цикла быстрой сортировки. Прошу помочь в чем тут дело
код:
PHP код:
#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include <iomanip>
#include "locale.h"
#include <fstream>
#include <string>
using namespace std;
void Input(stringa);
void OnScreen(stringa);
void ToFile(stringa);
void shellSort(stringalong size);
void quickSort(stringalong N); 
int increment(long inc[], long size);
int pcount=0scount=0;
long N;
 
 
int _tmain(int argc_TCHARargv[])
{
        
stringa;
        
a=new string[10];
        
stringa1;
        
a1=new string[10];
        
setlocale(LC_ALL"Russian");
        
int pcount=0scount=0;
        
int c;
        do{
                
printf("Выберите нужный пункт меню\n1)Считать из файла фамилии и мена студентов\n2)Сортировка Xoopa\n3)Сортировка Шелла\n4)Выход\n");
                        
cin >> c;
                        
cout << endl;
                switch(
c){
                case 
1:
                        
Input(a);
                        break;
                case 
2:
                        
int j;
                        
cout<<"Сортировка:\n1)do"<<endl;
                        
cin>>j;
                        
cout<<"Вывод:\n1)На экран"<<endl;
                                if (
j==1){
                                
quickSort(a,10);
                                
OnScreen(a);
                                }
                        break;
                case 
3:
                        
cout<<"Сортировка:\n1)do"<<endl;
                        
cin>>j;
                                if (
j==1){
                                
shellSort(a,10);
                                
OnScreen(a);
                                }
                        break;
                case 
4:
                        return 
5;
                }
        }while(
c!=4);
}
void Input(stringa){
        
int j=0;
        
ifstream infile("input.txt");
                do{
                        
infile>>a[j];
                        
cout << a[j]<<endl;
                        
j++;
                }while(!
infile.eof());
}
void OnScreen(stringa){
        
                for(
int t=0t<10t++){
                        
cout << a[t]<<endl;
                }
cout<<"Количество пересылок "<<pcount<<endl;
cout<<"Количество сравнений "<<scount<<endl;
}
 
int increment(long inc[], long size) {
  
int p1p2p3s;
 
  
p1 p2 p3 1;
  
= -1;
  do {
    if (++
2) {
      
inc[s] = 8*p1 6*p2 1;
    } else {
      
inc[s] = 9*p1 9*p3 1;
      
p2 *= 2;
      
p3 *= 2;
    }
        
p1 *= 2;
  } while(
3*inc[s] < size);  
 
  return 
? --0;
}
void shellSort(stringa,long size){
  
long incijseq[40];
  
int s;
  
pcount=0
  
scount=0;
  
increment(seqsize);
  while (
>= 0) {
        
inc seq[s--];
    for (
incsizei++) {
      
string temp a[i];
      for (
i-inc; (>= 0) && (a[j]>temp); -= inc)
          {
a[j+inc] = a[j]; scount++; pcount++;}
          
pcount++;
      
a[j+inc] = temp;
    }
  }}
 
void quickSort(stringalong N) {
  
long i 0N;
  
string tempp;
  
aN>>]; 
  do {
    while ( 
a[i] < i++;
    while ( 
a[j] > j--;
        
scount++;
        if(
a[i] == " " || a[j]== " ")continue;
    if(
<= j) {
      
temp a[i]; a[i] = a[j]; a[j] = temppcount++;
      
i++; j--;
    }
  } while ( 
i<=);
  if ( 
quickSort(aj);
  if ( 
quickSort(a+iN-i);

ser_b вне форума Ответить с цитированием
Старый 27.05.2010, 21:26   #2
ser_b
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию

принято не принято, ап?)
требуется помосч, опытного человека
ser_b вне форума Ответить с цитированием
Старый 27.05.2010, 21:26   #3
ser_b
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию

принято не принято, ап?)
требуется помосч, опытного человека
ser_b вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка методом Шелла Nostalgia Помощь студентам 0 12.04.2010 14:13
Метод быстрой сортировки Хоора Pascal Бармалей Помощь студентам 8 18.11.2009 21:21
Помогите решить задачу в C++ на массивы + сортировка методом Шелла Exact Помощь студентам 2 18.06.2009 14:44
Помогите переделать файловую сортировку на сортировку динамич. списков Taisja Помощь студентам 2 15.06.2008 16:10
отсортировать таблицу сначала в алфавитном порядке фамилий продавцов, затем в порядке возростания получен Lora Microsoft Office Excel 1 31.05.2008 17:22