singlepost

Помогите доделать программу на Pascal << На главную или назад  

в общем я тут написал прогу, но надо не много переделать вот код:
program ll;
uses crt;
type mas1=array[1..30000] of integer;
mas2=array[1..1000] of integer;
p=^mas1;

var
x:p;
k:mas2;
i,n,m:integer;
begin
clrscr;
writeln('vvedite n');
readln(n);
writeln('vvedite m');
readln(m);
new(x);
for i:=1 to m do k[i]:=0;
randomize;
for i:=1 to n do x^[i]:=random(m)+1;
writeln('isxodnbIu slu4aino 3apolnenbIu massiv x');
for i:=1 to n do begin
delay(1000);
write(x^[i]:2);
end;
writeln;
k[x^[i]]:=0;
for i:=1 to n do k[x^[i]]:=k[x^[i]]+1;
writeln('koli4estvo sootvetstvyI0hix elementov v massive x');
for i:=1 to m do writeln(i,' = ',k[i],' htyk; ');
dispose(x);
readln;
end.

Например мы вводим: n=10 m=5;
рандомно заполняется массив х 1 до n числами из диапозона 1..m
Вот так например: 3 3 4 2 5 5 3 4 2 3 2
Далее на экран выводит:
1- 0 раз
2- 3 раза
3- 4 раза
4- 2 раза
5- 2 раза
А мне нужно переделать так, чтобы. если какого-либо числа вобще нету в массиве х не нужно его ввыводить на экран это во-первых, во-вторых должно выводить повторение каждого числа из диапозона 1 до m в порядке его появления, вот напримере этого же массива:
3- 4 раза
4- 2 раза
2- 3 раза
5- 2 раза
Вот что должно выводить на экран! Можете сказать, что мне мне нужно изменить в своей программе, чтобы так мне выводило?

33 ответов в теме “Помогите доделать программу на Pascal”

  1. 21
    Колян Вялков ответил:

    Все уже не надо сам доделал) Спасибо всем кто помог!!!

  2. 20
    Колян Вялков ответил:

    Вот только еще надо чтоб также выводило, если m ввести больше n
    Например: n=3
    m=10
    Массив: 10 8 7
    И должно выводить
    10-1
    8-1
    7-1

  3. 19
    Колян Вялков ответил:

    Владимир Красноглазый geek Гордеев
    в вашем варианте считает нормально, если n>m вводим
    мне нужно чтобы еще выводило нормально если m>n

  4. 18
    Владимир Гордеев ответил:

    Тьфу, там ошибка мелкая была. Вот вернее //nopaste.info/c62fda32a5.html

    > а что там есть динамическим массивом?
    Я имел ввиду динамическое выделение памяти. Перепутал.

  5. 17
    Владимир Гордеев ответил:

    > > Не охота ковыряться в неясном месиве символов.
    > Я что-то вас не понял вобще, что вы хотели этим сказать?

    Я тебя еле понял. Нет внятного условия. Нахрена тебе динамический массив?

    Под форматированным вариантом кода я имел ввиду нижеследующее.

    //nopaste.info/ad918960e0.html

  6. 16
    Андрей Бесфамильный ответил:

    а что там есть динамическим массивом?

  7. 15
    Андрей Бесфамильный ответил:

    Без дополнительного массива для хранения порядка появления чисел не обойтись. В этом случае: в дополнительном массиве типа mas1 индексы – порядок появления элемента, в нем хранишь само значение этих элементов.
    Необходима проверка на совпадение с уже введенными числами (не особо трудоемкая) + счетчик индексов. Потом при выводе просто этот массив юзаешь.

    Насчет рациональности: приносишь много вариантов, показываешь самый хреновый ("Можно сделать так"). Потом получше ("Но я тут еще исправил такое"). Потом еще лучше ("И вот тут оптимизировал"). И в конце – самый крутой ("И вот, на мой взгляд самый оптимальный вариант"). Если у вас ценят идеи и объем работы – покатит.

  8. 14
    Андрей Бесфамильный ответил:

    Елки, двумерный доп. массив, в котором хранится значение элемента и порядок появления (+ один integer типа счетчик), перед выводом обычная сортировка по порядку.

    Либо одномерный массив: по индексам – порядок появления введенного числа, по элементам – его значение. + доп. проверка (есть вероятность, длинная).

    Если это для универа (?) – сойдет.

  9. 13
    Колян Вялков ответил:

    Вобще для колледжа)

  10. 12
    Колян Вялков ответил:

    Массив одномерный) Можешь немножко подробнее расписать?

  11. 11
    Андрей Бесфамильный ответил:

    Придумай еще и третий вариант, чтобы там и по быстродействию, и по памяти было еще более нерационально, реализовываешь все 3 варианта, приносишь преподу. Показываешь по мере возрастания рациональности. К третьему варианту он проникнется.

  12. 10
    Колян Вялков ответил:

    k[x^[i]]:=0;
    for i:=1 to n do k[x^[i]]:=k[x^[i]]+1;
    writeln('koli4estvo sootvetstvyI0hix elementov v massive x');
    for i:=1 to m do
    begin
    if k[i]=0 then continue;
    writeln(i,' = ',k[i],' htyk; ');
    end;
    Вот спервым условием разобрался, а вот со 2-м как?

  13. 9
    Колян Вялков ответил:

    Что значит по мере возрастания рациональности можешь сказать, а то я что-то туплю)

  14. 8
    Колян Вялков ответил:

    Владимир Красноглазый geek Гордеев
    Форматированный вариант кода на стороннем сайте (пастебин например), в студию.

    Не охота ковыряться в неясном месиве символов.
    Я что-то вас не понял вобще, что вы хотели этим сказать?

  15. 7
    Колян Вялков ответил:

    Вот мне со вторым условием необходимо помочь, а то я незнаю вобще как это делать!!!

  16. 6
    Владимир Гордеев ответил:

    да пофиг на подсветку. Отступы хотя бы. А то похоже на мешанину хер-пойми чего с хер-пойми чем.

  17. 5
    Евгений кросовкин ответил:

    а мне один препод заявлял что хайлалйт это все от лукавого =))
    Ну я еще тогда понял что с ним не стоит связываться

  18. 4
    Владимир Гордеев ответил:

    Форматированный вариант кода на стороннем сайте (пастебин например), в студию.

    Не охота ковыряться в неясном месиве символов.

  19. 3
    Евгений Тюкавкин ответил:

    Есть магическое заклинание if … then, которое легко справляется с первым требованием. Со вторым чуть сложнее. Но если заранее известно, что все числа больше 0, то числа для подсчета и вывода можно брать прямо из массива и в процессе подсчета обнулять, чтобы несколько раз не пересчитывать одно и то же число.

  20. 2
    Александр Чигринец ответил:

    Какой фрагмент кода твоей программы выводит результаты знаешь?

  21. 1
    Колян Вялков ответил:

    k[x^[i]]:=0;
    for i:=1 to n do k[x^[i]]:=k[x^[i]]+1; { здесь накапливается количество}
    writeln('koli4estvo sootvetstvyI0hix elementov v massive x');
    for i:=1 to m do writeln(i,' = ',k[i],' htyk; ');{вот здесь резульат выводится}

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.