Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 5
Регистрация: 26.12.2013
Сообщений: 197
1

Упорядочить массив в порядке неубывания

22.04.2014, 21:30. Показов 2114. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с заданием((
Дан массив a: array [1..n] of integer. Упорядочить элементы массива а по неубыванию в соответствии со следующим критерием: элемент x считается «больше» элемента y, если первая цифра числа x больше первой цифры y.

Добавлено через 4 часа 37 минут


Добавлено через 3 часа 12 минут
помогииитеее((( неправильно сортирует
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
Uses crt;
const
  nmax=100;
var
  a: array[1..nmax] of integer;
  n,i,j: byte;
  t: integer;
begin
    clrscr;
  write('Vvedite razmernosti massiva ');
  readln(n);
  writeln('Vvedite chisla:');
  for i:=1 to n do
  begin
    readln (a[i]);
    end;
  writeln;
  for i:=2 to n do
    for j:=n downto i do
    if (a[j-1] div 10)>(a[j] div 10)then
    begin
      t:=a[j-1];
      a[j-1]:=a[j];
      a[j]:=t;
    end;
  writeln('Preobrazovanniy massiv:');
  for i:=1 to n do
    write(a[i]:3);
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2014, 21:30
Ответы с готовыми решениями:

Упорядочить массив в порядке неубывания
при вводе m>0 выдает ошибку 201(((((( uses crt; function d(n:integer):integer; var i:integer;...

Упорядочить все числа n от 1 до m в порядке неубывания значений d(n)
Помогите составить программу: Пусть для целого n>0 функция d(n) равна количеству делителей числа...

Упорядочить все числа n от 1 до m в порядке неубывания значений d(n)
Пусть для целого n>0 функция d(n) равна количеству делителей числа n. Дано m>0. Упорядочить все...

Упорядочите числа в порядке неубывания
Дано три числа, записанный в отдельных строках. Упорядочите их в порядке неубывания. Программа...

7
Модератор
9867 / 5235 / 3306
Регистрация: 17.08.2012
Сообщений: 16,005
22.04.2014, 23:47 2
Допустим, число 2345. Итак, какая цифра первая, 2 или 5? Если 5, то в 20 строке замените div на mod, и все дела. Если 2, то это уже более другая история.
0
3 / 3 / 5
Регистрация: 26.12.2013
Сообщений: 197
23.04.2014, 05:01  [ТС] 3
первая цифра - 2
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
23.04.2014, 06:15 4
mysteria-m, пример кода будет таков
Кликните здесь для просмотра всего текста
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
Uses crt;
const
 nmax=100;
var
 a: array[1..nmax] of integer;
 n,i,j: byte;
 t: integer;
 s1,s2:string[4];
begin
 clrscr; randomize;
 write('Vvedite razmernosti massiva ');
 readln(n);
 for i:=1 to n do
 begin
 a[i]:=random(1000);
 write(a[i]:4);
 end;
 writeln;
 for i:=1 to n-1 do
  for j:=i to n do
  begin
  str(a[i],s1); str(a[j],s2);
  if (s1)>(s2)then
  begin
   t:=a[i];
   a[i]:=a[j];
   a[j]:=t;
  end;
 end;
 writeln('Preobrazovanniy massiv:');
 for i:=1 to n do
  write(a[i]:4);
 readln;
end.
1
Модератор
9867 / 5235 / 3306
Регистрация: 17.08.2012
Сообщений: 16,005
23.04.2014, 06:52 5
Хм... Krasme, первая цифра ищется через строку... Предполагаю, что исходя из контекста обучения, это у mysteria-m вызовет некоторые бодания с преподавателем, который ждёт от него применения операторов div и mod. Да, и условие сравнения чисел у Вас не соответствует заданию. Нужно сравнивать только первую цифру чисел, а не всё число. К тому же, у Вас не предусмотрен случай с отрицательными числами. array-то of integer, а не of word, к примеру.
Исправление для Вашей программы:
Pascal
1
2
3
4
//...
  str(abs(a[i]),s1); str(abs(a[j]),s2);
  if s1[1]>s2[1]then
//...
Мой вариант кода. Строки для чисел не применяются. Правда, в нём применена функция для вычисления первой цифры числа и процедура для печати массива, думаю, если mysteria-m разберётся с программой, это ему будет только в плюс:
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
function fd(x: integer): integer;
begin
  x := abs(x);
  while x >= 10 do x := x div 10;
  fd := x
end;
 
const nmax = 100;
 
var a: array[1..nmax] of integer;
    n, i, j: byte;
    t, k: integer;
 
procedure prnt(s: string);
var i: integer;
begin
  writeln(s);
  for i := 1 to n do write(' ', a[i]:3);
  writeln
end;
 
begin
  write('Vvedite razmernosti massiva: ');
  readln(n);
  writeln('Vvedite chisla: ');
  for i := 1 to n do
    begin
      write(i:2, ': ');
      readln(a[i])
    end;
  prnt('Ishodniy massiv:');
  for i := 2 to n do for j := n downto i do if fd(a[j-1]) > fd(a[j])
    then begin
      t:=a[j-1];
      a[j-1]:=a[j];
      a[j]:=t
    end;
  prnt('Preobrazovanniy massiv:');
  readln;
end.
1
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
23.04.2014, 07:29 6
Cyborg Drone, я и сделала начальный вариант с сортировкой "только по первой цифре", но потом применила простую "строковую" сортировку.
в задании не сказано, что числа вводятся вручную, а одиночный рандом дает только положительные числа.
конечно, можно двойным рандомом отрицательные сгенерировать, но опять же нет акцента, что массив целых чисел должен содержать и отрицательные значения.
все по воле программиста-студента, главное, чтобы мог и оперировать алгоритмом, и преподу доказать, что работал самостоятельно

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
вызовет некоторые бодания с преподавателем, который ждёт от него применения операторов div и mod
а ждет ли? может, автор темы сам их использовал, создавая свой алгоритм.

Добавлено через 7 минут
но потом применила простую "строковую" сортировку.
чтобы не возникал вопрос типа "почему в сортировке не участвует вторая и т.д. цифра".
0
Cyborg Drone
23.04.2014, 07:58
  #7

Не по теме:

Ну и пусть с ними, нюансами. Теперь у ТС есть свобода выбора.

0
3 / 3 / 5
Регистрация: 26.12.2013
Сообщений: 197
23.04.2014, 11:57  [ТС] 8
спасибо огромное!! всем всем))
0
23.04.2014, 11:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2014, 11:57
Помогаю со студенческими работами здесь

Переставить строки матрицы в порядке неубывания
Помогите с заданием(((((( Дана действительная матрица размером M*N. Пусть для каждой строки...

Дано предложение.Напечатать все его слова в порядке неубывания их длин.
Дано предложение.Напечатать все его слова в порядке неубывания их длин. Спасибо заранее,помогите.

Даны три массива A[10], B[7], C[8]. Упорядочить массивы в порядке возрастания и сформировать массив D
Добрый день. Помогите пожалуста с лабораторной работой, Задание Даны три массива A, B, C....

Упорядочить массив, чтобы в начале располагались четные элементы в порядке возрастания
Упорядочить одномерный массив так, чтобы в начале располагались четные элементы в порядке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru