Бумер Posted October 24, 2006 Report Share Posted October 24, 2006 Юзер вводит числа (вещественные). Сколько штук он введет - неизвестно. их надо отсортировать. числа он вводит, разделяя пробелом. Сортировку как осуществить сам разберусь как нибудь, но как сделать, чтобы вводился массив из х элементов????? Link to comment Share on other sites More sharing options...
Shurr Posted October 24, 2006 Report Share Posted October 24, 2006 Смотря как поставлена задача. Если задача на сортировку - тогда просто обьяви массив из 1000 или 10000 элементов. Если же задача именно на работу с динамической памятью, со ссылками и списками - разговор совсем другой. Link to comment Share on other sites More sharing options...
ant_ig Posted October 24, 2006 Report Share Posted October 24, 2006 (edited) то что он вводит это строка вто в простом варианте vars,s1:string;mas=array [1...10000] of intger;k:integer;beigns1:='';k:=1;for i:=1 to length(s) do beginif s[i]<>' ' then s1:=s1+s[i] else begin mas[k]:=strtoint(s1); s1:=''; k:=k+1; end; end;end. s-строка что ввел юзер s1-накапливаем числа Edited October 24, 2006 by ant_ig Link to comment Share on other sites More sharing options...
Shurr Posted October 24, 2006 Report Share Posted October 24, 2006 ant_ig Ну, навскидку сразу несколько проблем: 1. Учитываются только одноразрядные числа (0-9) 2. Паскалевская строка может содержать не больше 255 символов Link to comment Share on other sites More sharing options...
yuriks Posted October 24, 2006 Report Share Posted October 24, 2006 uses crt;var ch : char; a : array[1..10000] of integer; s : string; code : integer; k : integer;begin s := ''; k := 1; repeat ch := readkey; write(ch); if (ch <> ' ') and (ch <> #13) then s := s + ch else begin val(s,a[k],code); inc(k); s := ''; end; until ch = #13; writeln;end. Link to comment Share on other sites More sharing options...
ant_ig Posted October 25, 2006 Report Share Posted October 25, 2006 (edited) ant_ig Ну, навскидку сразу несколько проблем: 1. Учитываются только одноразрядные числа (0-9) 2. Паскалевская строка может содержать не больше 255 символов 1. тут ты не прав if s<>' ' then s1:=s1+s,<- тут накапливаем 2. как я понял это для лабы, когда я учился больше 255 и не требовалось но вариант yuriks явно универсальней Edited October 25, 2006 by ant_ig Link to comment Share on other sites More sharing options...
Shurr Posted October 25, 2006 Report Share Posted October 25, 2006 ant_ig Действительно прощелкал Link to comment Share on other sites More sharing options...
Бумер Posted October 25, 2006 Author Report Share Posted October 25, 2006 Люди, оказалось не все так просото (для меня): Юзер вводит числа нажимая энтэр после каждого. Их надо отсортировать по возрастанию и вывести только те, которые встречаются только один раз. Использовать можно только массивы, операторы условного перехода, циклы и все. Link to comment Share on other sites More sharing options...
Shurr Posted October 25, 2006 Report Share Posted October 25, 2006 Юзер вводит числа нажимая энтэр после каждого.Это сделать несложно - read() в цикле и нет проблем. Как узнать что он ввел все что хотел, и введенные данные пора обрабатывать?Их надо отсортировать по возрастанию и вывести только те, которые встречаются только один разТоже, собственно, проблем нету. Сначал сортировка, потом проход по отсортированному массиву и вывод только тех, которые не повторяются (одинаковые числа стоят рядом, так что проблем найти их нету).Использовать можно только массивы, операторы условного перехода, циклы и все.Хм... :) А что, собственно ты еще собирался использовать? GOTO что-ли? Link to comment Share on other sites More sharing options...
Тролль Posted October 25, 2006 Report Share Posted October 25, 2006 Бумер: vari,j,n: Integer; t: Integer;A: array[0..100] of Integer;beginn:=0; A[0]:=0;repeatinc(n); ReadLn (A[n]);until A[n]=0;n:=n-1;for i:=1 to n dofor j:=1 to n-i do if A[j]>A[j+1] then begint:=A[j]; A[j]:=A[j+1]; A[j+1]:=t; end; for i:=1 to n doif (A[i-1]<>A[i]) and (A[i]<>A[i+1]) then WriteLn(A[i]);end. Пример - для целых чисел, для вещественных надо изменить объявления t и A. Ввод чисел заканчивается вводом нуля. Кстати, где ты возьмешь "оператор условного перехода" в Паскале? Разве что самому сконструировать :) IF ... THEN GOTO ... Link to comment Share on other sites More sharing options...
Бумер Posted October 28, 2006 Author Report Share Posted October 28, 2006 А где можно нормально (понятно) почитать о сортировках вставкой, выбором и обменом. Чтоб понятно и с примерами. Есть такое? Ведь их же не учить надо, а понимать... Link to comment Share on other sites More sharing options...
Тролль Posted October 28, 2006 Report Share Posted October 28, 2006 Бумер: Вообще главным руководством по алгоритмам считается трехтомник Дональда Кнута "Искусство программирования". Классикой считается также "Алгоритмы и структуры данных" Никлауса Вирта. Ну и книжек и статей других авторов тоже хватает. Набери в Яндексе "сортировка данных", и можно читать до умопомрачения. Например, это или это. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now