|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2012, 20:39 | #1 |
Регистрация: 14.11.2012
Сообщений: 6
|
Исследование методов сортировки включением.
Не могу понять, нужно написать код на С#. На C++ получается а на Sharp нет.
|
14.11.2012, 20:41 | #2 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Показывайте код... Здесь телепаты не водятся
|
14.11.2012, 21:01 | #3 |
Регистрация: 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# С++ не сохранился. |
14.11.2012, 21:11 | #4 |
Регистрация: 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. |
14.11.2012, 21:12 | #5 |
Регистрация: 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. |
14.11.2012, 21:23 | #6 | |
Форумчанин
Регистрация: 21.10.2010
Сообщений: 588
|
Цитата:
Разбирайтесь вот. Код:
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681 |
|
14.11.2012, 21:37 | #7 |
Регистрация: 14.11.2012
Сообщений: 6
|
А по поводу перевода из с++ в c#
|
14.11.2012, 21:42 | #8 |
Форумчанин
Регистрация: 21.10.2010
Сообщений: 588
|
Что вам нужно перевести из C++ в С#? Вы выложили неработающий код сортировки включениями на C#. Я его доработал. Опять же в C#.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
исследование Алгоритмов Сортировки | Camaro Chevelle | Помощь студентам | 5 | 06.11.2011 21:59 |
Разработать алгоритмы указанных в варианте методов сортировки | Lems11 | Помощь студентам | 1 | 21.12.2009 18:47 |
сравнительный анализ различных методов сортировки целочисленных массивов | Freak | Помощь студентам | 2 | 05.05.2008 12:37 |