Различные числа и случайный порядок |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Различные числа и случайный порядок |
maks |
Сообщение
#1
|
Гость |
1.
Условие: Дано натуральное число N (0<N<1000000). Сколько различных цифр встречается в его записи? Входные данные: Число N вводиться с клавиатуры 122334 Выходные данные: На экран выдаётся одно число, которое указывает количество различных цифр в числе 4 2. Условие: С клавиатуры вводиться число N (0<N<1000). Расположить числа от 0 до N-1 в случайном порядке. (В результате работы алгоритма любая перестановка чисел может встречаться одинаково часто) Входные данные: Число N, введённое с клавиатуры. 10 Выходные данные: Файл Output.txt с набором чисел от 0 до N-1, записанными через пробел 0 5 2 9 3 7 1 8 4 6 |
Ivs |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Вот первая:
Код Program Bandy_Round; Var i,j : Integer; { Счетчики в циклах } k : Integer; { Указатель на последний элемент } n : Integer; { Вводимое число } m : Integer; { Цифра числа N } r : Real; { Количество различных букв } a : Array [1..7] of Word; { Массив цифр числа N } Begin Write('Input N (1< N <1000000): '); { Ввод числа N } Readln(n); { --------------------------------------- } i:=1; { i указывает на начало массива a } While n <> 0 do { Заполнение массива a цифрами числа N } begin m:=n mod 10; { Остаток от деления } n:=n div 10; { Сокращаем число на 10 } a[i]:=m; { Присваеваем очередному элементу массива } Inc(i); { Увеличиваем i } end; k:=i-1; { В k указатель на последний элемент } for i:=1 to k do begin n:=0; for j:=1 to k do if a[i]=a[j] then Inc(n); { В n количество встреч цифры в массиве } r:=r+1/n; { В r эта цифра без других её вхождений } end; Write('Output: ',r:0:0); { Вывод суммарного количества разных цифр } ReadKey; { Ждем нажатия любой клавиши } End. { Завершаем программу } -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
Ivs |
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Вот вторая:
Код (******************************) (* Перестановки *) (* Алгоритм случайной выборки *) (******************************) Var i : Integer; { Счетчик в цикле } N : Integer; { Само число } Temp : Integer; { Вспомогательная переменная } k,j : Integer; { Случайные числа } A : Array [0..999] of Integer; { Массив чисел от 0 до N-1 } F : Text; { Файловая переменная } Begin Assign(F,'OUTPUT.TXT'); { Связываем файл. переменную с файлом } Rewrite(F); { Открываем для записи } Write('Input N (1<N<1000): '); { Ввод числа N } Readln(N); { ---------------------------------------- } for i:=0 to N-1 do A[i]:=i; { Заполняем массив A числами от 0 до N-1 } for i:=0 to N-1 do { Цикл случайных перестановок } begin { Можно увеличить число итераций } k:=Random(N-1); { В k случайное число от 0 до N-1 } j:=Random(N-1); { В j случайное число от 0 до N-1 } Temp:=A[k]; { Обмен значений двух переменных } A[k]:=A[j]; { ---------------------------------------- } A[j]:=Temp; { ---------------------------------------- } end; for i:=0 to N-1 do Write(F,A[i],' ');{ Вывод уже переставленного массива в файл } Close(F); { Закрываем файл } End. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
maks |
Сообщение
#4
|
Гость |
Спасибо за помощь, а как можно этот текст скопировать в паскаль?
|
Ivs |
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата Спасибо за помощь, а как можно этот текст скопировать в паскаль? Можно просто открыть TP в оконном режиме, далее скопировать вышеуказанную программу в буфер (как это сделать ты наверное догадываешся), и в том окне (где TP) есть иконка типа символа буфера, так вот тебе её нужно нажать, и тогда текст скопируется в TP, но так вроде коряво выходит, есть еще куча способов, самый простой это скопировать в блокнот и сохранить как файл с расширением .pas, но так он у тебя сохраниться в win кодировке и поэтому некорректно будут отображаться русские символы в TP, есть другой вариант скопировать программу в WordPad дальше в меню Сохранить как необходимо выбрать пункт "как текстовой документ ms-dos" и затем переименовать из .txt -> .pas. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
Maks |
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Репутация: 0 |
Вхожу в программу, ввожу число, нажимаю - Enter, а программа выходит в меню и не выдают результата! ???
|
AlaRic |
Сообщение
#7
|
... Группа: Пользователи Сообщений: 1 347 Пол: Мужской Репутация: 3 |
Перед END напиши READLN.
|
Ivs |
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата Перед END напиши READLN. Или после завершения жми Alt+F5 и усе увидишь..... -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
AlaRic |
Сообщение
#9
|
... Группа: Пользователи Сообщений: 1 347 Пол: Мужской Репутация: 3 |
Забыл сказать: в TP 7 приходилось писать readln дважды!
|
Ivs |
Сообщение
#10
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата Забыл сказать: в TP 7 приходилось писать readln дважды! Почему ???? У меня TP 7 и одного раза хватает... -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
reill |
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
ТО Ivs
В ТР все переменные одного типа можно резервировать через запятую типа: i,j,k,n,m : Integer; ;) |
GLuk |
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
По-моему он это и так знает, а сделано было это для наглядности :P
|
Сергей |
Сообщение
#13
|
Гость |
Коллеги, а не подскажете алгоритм случайной выборки из массива?
Есть база, в ней 200 записей. надо из нее выбрать 40 случайных неповторяющихся. |
ozzy |
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 42 Репутация: 0 |
Процедура, случайным образом перемешивающая элементы массива (легко переделывается под Ваш вариант)
Код var { Глобальные переменные - Фамилия, имя, класс } Name : string; SurName : string; Class : string; Const Dimension = 47; NumberOfTest = 15; Type DataRecord=Record Nomer,Kolvo:Integer; Answer:String; Category,Number:Integer; Stroki:Array [1..9] of String[70]; end; ErrorsArray = Array [1.. Dimension] of Integer; Var MyOIVT : DataRecord; VArray,MyArray,MyErrors : ErrorsArray; ... Procedure RandomArray (Var A : ErrorsArray;n1,n2:Integer); Label Metka1,Metka2,Metka3; var i,j,t : Integer; begin Randomize; {For i:=1 to n do A[i]:=0;} A[n1]:=Random((n2-n1+1))+n1; For j:=n1 to n2-1 do begin Metka2: t:=Random((n2-n1+1))+n1; i:=n1; Metka3: if i>j then goto Metka1; if t=a[i] then goto Metka2; i:=i+1; goto Metka3; Metka1: a[j+1]:=t; end; end; Сообщение отредактировано: volvo - |
reill |
Сообщение
#15
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
ПРоцедуры это конечто хорошо, но надо иногда и думать своей головой:
for i:=1 to 40 do a[i]:=b[random(200)]; Вот тебе формирование масива состоящего из 40 елементов, при помощи случайного выбора элементов из другого масива состоящего из 200 элементов... ;D |
AlaRic |
Сообщение
#16
|
... Группа: Пользователи Сообщений: 1 347 Пол: Мужской Репутация: 3 |
Про формирование нового массива ничего не говорилось.
|
reill |
Сообщение
#17
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
;)А тебе нужно чтобы большими буквами было написанно слово ФОРМИРОВАНИЕ???
Случайный выбор 40 елементов чего ты сними делать то хочешь запаминать сам?? Делаешь массив а потом крути как хочешь, хошь печатай, хошь запаминай... все проше чем его процедура :P |
Maks |
Сообщение
#18
|
Группа: Пользователи Сообщений: 3 Репутация: 0 |
Условие:
Из цифр двух натуральных чисел составить наибольшее возможное число, сохраняя первоначальную последовательность цифр. Пример: 111 222 Ответ: 222111 97531 86420 Ответ: 9876543210 2, 3 задачи решение должно быть не файлом input.txt, а вводом с клавиатуры! |
Maks |
Сообщение
#19
|
Группа: Пользователи Сообщений: 3 Репутация: 0 |
Никто не знает чтоли? ???
|
Текстовая версия | 17.09.2024 12:28 |