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

Не получается обнаружить ошибку(метод Шелла) - C++

Восстановить пароль Регистрация
 
sever1313
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 61
13.10.2010, 22:52     Не получается обнаружить ошибку(метод Шелла) #1
Проблема в том что я написала программу на паскале,а преподаватель попросил перевести на си,и теперь не могу понять где эта ошибка,выводит не тот результат,я даже по шагово проделывала,где то сбивается(.Будьте добры помогите разобраться.
Задача такая массив отсортировать методом шелла,с шагом h1=1,h2=2


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
 const int size=7;
int main()
{
    setlocale(LC_ALL, "rus");
    static char arr[] = {'И','В','А','Н','К','О','В','А'};
    int p=2;
    int h;
    int mas[]={0,2,1};
    int i,k,m,j;
    for(k=1;k<=p;k++)
    {
        h=mas[k];
 
        for(i=h+1;i<=size;i++)
        {
            t=arr[i];
            j=i-h;
              while((j<size)&&(t<arr[j]))
              {
                   arr[j+h]= arr[j];              
                   j=j-h;
 
                          } 
                arr[j+h]=t;
            }
            
        
    }
            
    for (m=0; m<size; m++)
     {
        cout <<"   "<< arr[m] ;
     }
     getch();
}
вот код с паскаля
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
h[1]:=2; h[2]:=1;
 for m := 1 to t do
begin
  k:=h[m];     
  for i := k+1 to n do
begin
  x := as[i];         
  j := i-k;
 while (x<as[j]) and (j<n) do 
begin                         
  as[j+k] := as[j];             
  j := j-k;
end;                           
    as[j+k] := x;
написала этот кусок потому что вот эту часть не получается правильно переписать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2010, 22:52     Не получается обнаружить ошибку(метод Шелла)
Посмотрите здесь:

Метод Шелла C++
C++ Метод Шелла
C++ Метод Шелла
Не могу обнаружить ошибку в учебной программе из книги (шаблоны классов) C++
C++ Метод Шелла
C++ метод сортировки Шелла
Помогите обнаружить ошибку в программе! C++
C++ Задача по структурам, обнаружить ошибку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.10.2010, 13:00     Не получается обнаружить ошибку(метод Шелла) #2
C
1
2
3
    for(k=1;k<=p;k++)
        {
                h=mas[k];
индексация с нуля

C
1
2
3
4
    int mas[] = { 2, 1};
 
    for (k = 0; k < p; k++) {
        h = mas[k];
Добавлено через 4 минуты
C
1
const int SIZE = 8;
C
1
t=arr[i];
а где t создаётся ?

Добавлено через 4 минуты
wiki. сортировка Шелла. примеры
sever1313
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 61
15.10.2010, 00:31  [ТС]     Не получается обнаружить ошибку(метод Шелла) #3
пропустила строчку int t
Исправила,но всё по прежнему не работает((

Добавлено через 6 часов 10 минут
всё нашла ошибку,спасибо.
Yandex
Объявления
15.10.2010, 00:31     Не получается обнаружить ошибку(метод Шелла)
Ответ Создать тему
Опции темы

Текущее время: 18:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru