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

Сортировка слиянием - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализация классов вектор и строка http://www.cyberforum.ru/cpp-beginners/thread579046.html
Для лабораторной работы нужно было написать свою реализацию классов вектор и строка. Выкладываю что получилось, может, кому пригодится. Кому не лень, пожалуйста, просмотрите код, скажите, что не так сделано, какие есть ошибки, чего не хватает и т.д. #include <iostream> #include <stdexcept> #include <utility> using std::rel_ops::operator!=; using std::rel_ops::operator>; using...
C++ Пользуясь только операцией умножения, получить а5 и а13 за пять операций. Здравствуйте! Помогите с программированием пожалуйста! Нужно написать программу на языке С++. Дано вещественное число а. Пользуясь только операцией умножения, получить а5 и а13 за пять операций. Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread579024.html
C++ Определить класс «Массив целых чисел»
Определить класс «Массив целых чисел». Определить операции пересечения двух массивов; сортировки массива (максимальная оценка «хорошо>>)
Не создаётся проект на платформе Visual 2008 C++
Пытаюсь создать пустой проект (Win32). Он у меня создаётся. Дальше добавляю элемент (*.срр). И при компоновки он на меня ругается. Высвечивается окно: "1>------ Построение начато: проект: 111, Конфигурация: Debug Win32 ------ 1>Компоновка... 1>MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup...
C++ Считывание из файла с расширением .txt http://www.cyberforum.ru/cpp-beginners/thread579014.html
Помогите пожалуйста, решить задачу: нужно считать из файла значения и записать их в переменные, созданного мной класса, все эти переменные типа int так выглядит текстовый файл: x1=10 x2=20 y1=10 y2=20 color=10 x1=10
C++ Написать максимально подробные комментарии к данной программе #include "stdafx.h" const int N=10000; double calculateIntegral(double x); double Function(double x); double equationFunction(double x); double findRoot(double a, double b, double epsilon); using namespace std; подробнее

Показать сообщение отдельно
shishkin
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 12
18.05.2012, 23:50     Сортировка слиянием
Добрый вечер. C си начал совсем недавно работать, до этого был паскаль, делфи. Есть рабочий код на паскале, прошу помочь разобраться в чем ошибка, в переделанном мною коде под си.
Код Паскаль:
Pascal
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
53
54
55
56
57
58
59
60
program SortSlian;
uses crt;
type mas=array[1..1000] of integer;
procedure Sliv(var a:mas;p,q : integer);                
{процедура сливающая массивы, p-начало, q-конец}            
var r,i,j,k : integer;
    b:mas;
begin
 r:=(p+q) div 2;{делим массив}                      
 i:=p;{начало левой половины}                       
 j:=r+1;{начало правой половины}                    
 for k:=p to q do{смотрим от начала до конца}               
 if (i<=r) and ((j>q) or (a[i]<a[j])) then              
 {переставляем элементы из половин в новый массив, упорядочивая пары}
  begin
   b[k]:=a[i];
   i:=i+1;
  end
 else
  begin
   b[k]:=a[j];
   j:=j+1;
  end ;
 for k:=p to q do
 a[k]:=b[k];
end;
{рекурсивная процедура сортировки, проверяет если осталось
больше одного элемента, повторяет слияние в левой или правой частях массива}
procedure Sort(var a:mas;p,q : integer); {p,q - индексы начала и конца сортируемой части массива}
begin
 if p<q then {массив из одного элемента тривиально упорядочен}
 begin
  Sort(a,p,(p+q) div 2);{сортируем левую половину}
  Sort(a,(p+q) div 2 + 1,q);{правую половину}
  Sliv(a,p,q);{сливаем две половины}
 end;
end;
var a:mas;
    n,i:integer;
begin
 clrscr;
 randomize;
 write('Размер массива n=');
 readln(n); {Определение размера массива A - N) и его заполнение}
 writeln('Исходный массив:');
 for i:=1 to n do
  begin
   a[i]:=random(50);
   write(a[i],' ');
  end;
 writeln;
 writeln;
 {запуск сортирующей процедуры, сортируем от первого до последнего элемента}
 Sort(a,1,N);
 {Вывод отсортированного массива A}
 writeln('Результат сортировки:');
 for i:=1 to n do
 write(a[i],' ');
 readln
end.
Код на СИ:
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
// Lab01.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
 
 int Sliv(int A[1000], int nach, int kon) 
 {
     int r,i,j,k;
     int B[1000];
     r=(nach+kon)/2;
     i=nach;
     j=r+1;
     for(k=nach;k<=kon;k++)
     if (i<=r) if ((j>kon) || (A[i]<A[j]))
     {
         B[k]=A[i];
         i++;
     }
     else 
     {
         B[k]=A[j];
         j++;
     }
 for (k=nach;i<=kon;i++) 
     A[k]=B[k];
 return 0;
 }
int Sort(int A[1000], int nach, int kon)
{
 if (nach<kon)
{ 
  Sort(A,nach,(nach+kon)/2);
  Sort(A,(nach+kon)/2 + 1,kon);
  Sliv(A,nach,kon);
 }
return 0;
}
int main() {
int kol,i;
int vec[100];
std::cout<< "\n Vvedite kolichestvo elementov: ";
std::cin>>kol;
std::cout<< "\n Vvedite massiv: ";
for(i=0;i<=kol-1;i++)
std::cin>>vec[i];
Sort(vec,0,kol-1);
for(i=0;i<=kol-1;i++)
std::cout<<vec[i];
return 0;
}
Сортировка работает неправильно.

Добавлено через 2 часа 57 минут
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru