Jump to content

Юзер вводит числа, их надо отсортировать


Recommended Posts

Юзер вводит числа (вещественные). Сколько штук он введет - неизвестно. их надо отсортировать. числа он вводит, разделяя пробелом. Сортировку как осуществить сам разберусь как нибудь, но как сделать, чтобы вводился массив из х элементов?????

Link to comment
Share on other sites

Смотря как поставлена задача.

Если задача на сортировку - тогда просто обьяви массив из 1000 или 10000 элементов.

Если же задача именно на работу с динамической памятью, со ссылками и списками - разговор совсем другой.

Link to comment
Share on other sites

то что он вводит это строка

вто в простом варианте

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 by ant_ig
Link to comment
Share on other sites

ant_ig

Ну, навскидку сразу несколько проблем:

1. Учитываются только одноразрядные числа (0-9)

2. Паскалевская строка может содержать не больше 255 символов

Link to comment
Share on other sites

 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

ant_ig

Ну, навскидку сразу несколько проблем:

1. Учитываются только одноразрядные числа (0-9)

2. Паскалевская строка может содержать не больше 255 символов

1. тут ты не прав

if s<>' ' then s1:=s1+s,<- тут накапливаем

2. как я понял это для лабы, когда я учился больше 255 и не требовалось

но вариант yuriks явно универсальней :no:

Edited by ant_ig
Link to comment
Share on other sites

Люди, оказалось не все так просото (для меня):

Юзер вводит числа нажимая энтэр после каждого. Их надо отсортировать по возрастанию и вывести только те, которые встречаются только один раз. Использовать можно только массивы, операторы условного перехода, циклы и все.

Link to comment
Share on other sites

Юзер вводит числа нажимая энтэр после каждого.
Это сделать несложно - read() в цикле и нет проблем. Как узнать что он ввел все что хотел, и введенные данные пора обрабатывать?
Их надо отсортировать по возрастанию и вывести только те, которые встречаются только один раз
Тоже, собственно, проблем нету. Сначал сортировка, потом проход по отсортированному массиву и вывод только тех, которые не повторяются (одинаковые числа стоят рядом, так что проблем найти их нету).
Использовать можно только массивы, операторы условного перехода, циклы и все.
Хм... :) А что, собственно ты еще собирался использовать? GOTO что-ли?
Link to comment
Share on other sites

Бумер:

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

А где можно нормально (понятно) почитать о сортировках вставкой, выбором и обменом. Чтоб понятно и с примерами. Есть такое? Ведь их же не учить надо, а понимать...

Link to comment
Share on other sites

Бумер:

Вообще главным руководством по алгоритмам считается трехтомник Дональда Кнута "Искусство программирования". Классикой считается также "Алгоритмы и структуры данных" Никлауса Вирта.

Ну и книжек и статей других авторов тоже хватает. Набери в Яндексе "сортировка данных", и можно читать до умопомрачения. Например, это или это.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...