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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2015, 15:33   #1
lizka6011997
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 35
По умолчанию Метод Шелла - C++

Ошибка после сортировки методом Шелла.
По примеру сайта
Код HTML:
http://kvodo.ru/sortirovka-shella.html
Код:
#include "stdafx.h"
#include "math.h"
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
 
 
int main(int argc, char* argv[])
{   
    int j,i,d,count,n;
    double X;
    clock_t t1 = clock();
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    int size_array; // длинна массива
    cin >> size_array;
 
    double *sorted_array = new double [size_array]; // одномерный динамический массив
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 100;// заполняем массив случайными числами
        sorted_array[counter] = sin(sorted_array[counter]);
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n\n";
 
    //   Шелла
d=size_array;
d=d/2;  
while (d>0)
{
for (i=0; i<size_array-d; i++)
{
j=i;
while (j>=0 && sorted_array[j]>sorted_array[j+d])
{
count=sorted_array[j];
sorted_array[j]=sorted_array[j+d];
sorted_array[j+d]=count;
j--;
}
}
d=d/2;
}
            for (int counter = 0; counter < size_array; counter++)
                cout<<sorted_array[counter]<<" ";
    cout << "\n\n";
 clock_t t2 = clock();
cout << "Time:"<<(t2 - t1 + .0) / CLOCKS_PER_SEC << endl;
    system("pause");
    return 0;
}
Изображения
Тип файла: jpg Безымянный_1.jpg (36.6 Кб, 190 просмотров)
lizka6011997 вне форума Ответить с цитированием
Старый 05.09.2015, 15:51   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Не стал разбираться в Вашим алгоритмом. Просто перенаправлю на мою заготовку справочника. Всё проверено. Всё работает. Правда, копипастить не получится. Страница защищены от копирования. Придётся ручками поработать. Но это лучше, чем ничего. К тому-же, болящие мочки, лучше, чем болящая совесть.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 05.09.2015, 16:28   #3
lizka6011997
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 35
По умолчанию

Код:
    //   Шелла
int len = X;
double c;
long d=len;
do
{
	d=d/2;
	i=0;
	while ((j=i+d)<len)
	{
		if (sorted_array[i]>sorted_array[j])
		{
			c=sorted_array[i];
			sorted_array[i]=sorted_array[j];
			sorted_array[j];
		};
	}
	while (d>1);
есть ошибки?
просто в самом конце кода, возле фигурно скобки пишет: Требуется While
lizka6011997 вне форума Ответить с цитированием
Старый 05.09.2015, 16:34   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от lizka6011997 Посмотреть сообщение
есть ошибки?
просто в самом конце кода, возле фигурно скобки пишет: Требуется While
Включаем мозги и всё нормализовавается. Я уже разжевал, в рот положил. Проглотить за Вас?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
Метод Шелла <<оля>> Паскаль, Turbo Pascal, PascalABC.NET 1 14.11.2011 21:04
Метод Шелла gennadii Помощь студентам 4 15.06.2011 11:00
Задача Pascal (Сортировка метод Шелла) madmonk Помощь студентам 2 08.12.2009 17:37
Метод сортировки Шелла SVadiks Помощь студентам 2 03.11.2009 20:17