Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 14.11.2012, 19:39   #1
Maks.Loki
 
Регистрация: 14.11.2012
Сообщений: 6
Радость Исследование методов сортировки включением.

Не могу понять, нужно написать код на С#. На C++ получается а на Sharp нет.
Maks.Loki вне форума Ответить с цитированием
Старый 14.11.2012, 19:41   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Показывайте код... Здесь телепаты не водятся
_-Re@l-_ вне форума Ответить с цитированием
Старый 14.11.2012, 20:01   #3
Maks.Loki
 
Регистрация: 14.11.2012
Сообщений: 6
По умолчанию

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sortzad1
{
class Sorting
{
public static void Sort(double[] array)
{
for (int i = 1; i < array.Length; i++)
{
double x = array[i]; int j = i; while (x < array[j - 1])
{ array[j] = array[j - 1]; j--; } array[j] = x;
}
}
}

class Program
{
static void Main()
{
Random n = new Random();
Console.WriteLine("Количество элементов: 18");
double[] array=new double[18];
for (int i = 0; i < 18; i++) { array[i] = n.Next(-10, 10); }
for (int i = 0; i < 18; i++) Console.Write(" " + array[i]);
Console.WriteLine();
Sorting.Sort(new double[18]);
for (int j = 0; j < 18; j++) Console.Write(" " +array[j]);
}
}

}



Может ошибка где-то?
Это C# С++ не сохранился.
Maks.Loki вне форума Ответить с цитированием
Старый 14.11.2012, 20:11   #4
Maks.Loki
 
Регистрация: 14.11.2012
Сообщений: 6
По умолчанию

вот еще код нашел:


uses crt;
type mass=array [1..2000]of integer;
var a:mass;
pr,perem,sravn,sr,m,n,b,i,v,w,z:int eger;
peremsr,sravnsr:real;
punkt:byte;
procedure insertion;
var
x,i, k : Integer;
begin
pr:=0; {peremeshenia}
sr:=0; {sravnenia}
for i := 2 to n do { Вставляем в уже отсортированную часть элементы с 2 до n }

begin
k := i; {присваиваем переменной к текущий ключ}
x := a[i]; {присваиваем переменной х значение ключа}
inc(sr); {увеличиваем счётчик сравнений}
inc(pr); {увеличиваем счётчик перемещений}
{ Передвигаем на 1 позицию направо элементы,
большие вставляемого элемента (он записан в x) }
{ Условие k > 1 гарантирует, что мы не выйдем за
границу массива, если вставляется элемент,
меньший всех предыдущих.}

while (A[k - 1] > x) and (k > 1) do

begin
a[k] := a[k - 1];
k := k - 1;
inc(sr); {увеличиваем счётчик сравнений}
inc(pr); {увеличиваем счётчик перемещений}
end;
{ Вставляем элемент в нужную позицию }
a[k] := x;
inc(pr); {увеличиваем счётчик перемещений}
end;
end;

procedure print ; { процедура печати массива в строку}
var i:Integer ;
begin
for i:=1 to n do
write(a[i],' ');
Writeln ;
end ;

procedure vozrastanie; { Заполнение массива числами по возрастанию }

var
i : Integer;
begin
perem:=0;
sravn:=0;
for z := 1 to m do
begin
for i := 1 to n do
a[i] := i;
print;
writeln;
insertion;
print;
perem:=perem+pr; {подсчёт перемещений за м кол-во сортировок}
sravn:=sravn+sr; {подсчёт сравнений за м кол-во сортировок}
end;
peremsr:=perem/m; {среднее знач перемещ. за м сортировок}
sravnsr:=sravn/m; {среднее знач сравнений за м сортировок}

end;


procedure ubivanie; { Заполнение массива числами по убыванию }
var
i : Integer;
begin
perem:=0;
sravn:=0;
for z := 1 to m do
begin
for i := 1 to n do
a[i] := n - i;
print;
writeln;
insertion;
print;
perem:=perem+pr;
sravn:=sravn+sr;
end;
peremsr:=perem/m;
sravnsr:=sravn/m;


end;


procedure nul; { Заполнение массива равными числами (0) }
var
i : Integer;
begin
perem:=0;
sravn:=0;
for z := 1 to m do
begin
for i := 1 to n do
a[i] := 0;
print;
writeln;
insertion;
print;
perem:=perem+pr;
sravn:=sravn+sr;
end;
peremsr:=perem/m;
sravnsr:=sravn/m;


end;

procedure sluchainie; { }
begin
randomize;
perem:=0;
sravn:=0;
for z := 1 to m do
begin
for i := 1 to n do
a[i]:=random(500);
print;
writeln;
insertion;
print;
perem:=perem+pr;
sravn:=sravn+sr;
end;
peremsr:=perem/m;
sravnsr:=sravn/m;

end;

procedure ruchnoi; { }
var
i : Integer;
begin
perem:=0;
sravn:=0;
for z := 1 to m do
begin
for i := 1 to n do
begin
writeln('Vvedite chlen massiva ', i);
readln(a[i]);
end
end;
print;
writeln;
insertion;
print;
perem:=perem+pr;
sravn:=sravn+sr;
peremsr:=perem/m;
sravnsr:=sravn/m;

end;
begin
clrscr;
writeln('Vvedite kolichestvo elementov');
readln(n);
writeln('Vvedite kolichestvo sortirovok');
readln(m);

writeln('viberite deistvie: ');

writeln('1. Sgenerirovat massiv sluchainimi chislami');

writeln('2. Sgenerirovat massiv nulaimi');

writeln('3. Sgenerirovat massiv po ubivaniu');

writeln('4. Sgenerirovat massiv po vozrastaniu');

WriteLn('5. Vvod v ruchnuu');

ReadLn(punkt);

case punkt of
1:sluchainie; {выбор метода генерации массива}
2:nul;
3:ubivanie;
4:vozrastanie;
5:ruchnoi;
end;
writeln;

writeln('Srednee kol-vo peremeshenii dla ',m,' sortiro-vok=',peremsr:2:1,#13#10,'srednee kol-vo sravnenii=',sravnsr:2:1);

readln;
end.
Maks.Loki вне форума Ответить с цитированием
Старый 14.11.2012, 20:12   #5
Maks.Loki
 
Регистрация: 14.11.2012
Сообщений: 6
По умолчанию

А вот код программы №2 к этой же теме:


program Sravn_Teor_i_Pract_issledovanii;
uses
crt;
type
srednii_znacheniya=array[1..100] of record
sravn_p,perest_p,sravn_t,perest_t:r eal;
chislo_elem:integer;
otlichie_znach_sr,otlichie_znach_pe r:real;
end;
massiv=array[1..1000] of integer;
var
s:srednii_znacheniya;
j,h3:integer;

{Для разного числа исследованений определяет среднее число сравнений, пе-рестановок и записывает их в запись с тремя полями}
procedure vvod_znach_pract_teor(var chislo_tochek:integer);
var i,chislo_elem_mas:integer;
begin
writeln('skolko tochek budet na grafike?');
readln(chislo_tochek);
for i:=1 to chislo_tochek do
begin
writeln('Vvedite chislo elementov massiva dlia poluchenia ',i,'-oi tochki');
readln(chislo_elem_mas);
writeln('Vvedite srednee chislo sravnenii , poluchennih prakt. sposobom!');
readln(s[i].sravn_p);
writeln('Vvedite srednee chislo sravnenii, poluchennih teoriticheskim sposobom!');
readln(s[i].sravn_t);
writeln('Vvedite srednee chislo peremeshenii, poluchennih prakt. sposobom!');
readln(s[i].perest_p);
writeln('Vvedite srednee chislo peremeshenii, poluchennih teoriticheskim sposobom!');
readln(s[i].perest_t);
s[i].chislo_elem:=chislo_elem_mas;
end;
end;

{Сравнение исследований как практического, так и теоретического}
procedure sravnenie_p_t_analizov(chislo_toche k:integer);
var i:integer;
begin
for i:=1 to chislo_tochek do
begin
s[i].otlichie_znach_sr:=(s[i].sravn_p-s[i].sravn_t)*100/s[i].sravn_p;
s[i].otlichie_znach_per:=(s[i].perest_p-s[i].perest_t)*100/s[i].perest_p;
end;
end;

begin
vvod_znach_pract_teor (h3);
sravnenie_p_t_analizov(h3);
writeln;
writeln('==================');
for j:=1 to h3 do
begin
writeln('Dla chisla elementov massiva = ',s[j].chislo_elem);
writeln('Otlichie prakticheskogo srednego chisla sravnenii ot teoriticheskogo sostovlaet = ',s[j]. otlichie_znach_sr:3:1, '%');
writeln('Otlichie prakticheskogo srednego chisla peremeshenii ot teoritich-eskogo sostovlaet = ',s[j].otlichie_znach_per:3:1, '%');
writeln('==================');
end;
readln;
end.
Maks.Loki вне форума Ответить с цитированием
Старый 14.11.2012, 20:23   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
нужно написать код на С#. На C++ получается а на Sharp нет.
Очень странно, если учесть что у вас не совсем верный алгоритм включением.
Разбирайтесь вот.
Код:
 public static void Sort( double[] array)
        {
            for (int i = 1; i < array.Length; i++)
            {
                double x = array[i]; 
                int j = i-1; 
                while ( (j >= 0) && (x < array[j]))
                { 
                    array[j+1] = array[j];
                    j--; 
                } 
                array[j+1] = x;
            }
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 14.11.2012, 20:37   #7
Maks.Loki
 
Регистрация: 14.11.2012
Сообщений: 6
По умолчанию

А по поводу перевода из с++ в c#
Maks.Loki вне форума Ответить с цитированием
Старый 14.11.2012, 20:42   #8
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Что вам нужно перевести из C++ в С#? Вы выложили неработающий код сортировки включениями на C#. Я его доработал. Опять же в C#.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исследование Алгоритмов Сортировки Camaro Chevelle Помощь студентам 5 06.11.2011 20:59
Разработать алгоритмы указанных в варианте методов сортировки Lems11 Помощь студентам 1 21.12.2009 18:47
сравнительный анализ различных методов сортировки целочисленных массивов Freak Помощь студентам 2 05.05.2008 11:37


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840