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
Вот первая:
Код
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. { Завершаем программу }
Вот вторая:
Код
(******************************)
(* Перестановки *)
(* Алгоритм случайной выборки *)
(******************************)
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.
Спасибо за помощь, а как можно этот текст скопировать в паскаль?
Цитата
Спасибо за помощь, а как можно этот текст скопировать в паскаль?
Можно просто открыть TP в оконном режиме, далее скопировать вышеуказанную программу в буфер (как это сделать ты наверное догадываешся), и в том окне (где TP) есть иконка типа символа буфера, так вот тебе её нужно нажать, и тогда текст скопируется в TP, но так вроде коряво выходит, есть еще куча способов, самый простой это скопировать в блокнот и сохранить как файл с расширением .pas, но так он у тебя сохраниться в win кодировке и поэтому некорректно будут отображаться русские символы в TP, есть другой вариант скопировать программу в WordPad дальше в меню Сохранить как необходимо выбрать пункт "как текстовой документ ms-dos" и затем переименовать из .txt -> .pas.
Вхожу в программу, ввожу число, нажимаю - Enter, а программа выходит в меню и не выдают результата! ???
Цитата
Перед END напиши READLN.
Или после завершения жми Alt+F5 и усе увидишь.....
Забыл сказать: в TP 7 приходилось писать readln дважды!
Цитата
Забыл сказать: в TP 7 приходилось писать readln дважды!
Почему ???? У меня TP 7 и одного раза хватает...
ТО Ivs
В ТР все переменные одного типа можно резервировать через запятую типа:
i,j,k,n,m : Integer;
;)
По-моему он это и так знает, а сделано было это для наглядности :P
Коллеги, а не подскажете алгоритм случайной выборки из массива?
Есть база, в ней 200 записей.
надо из нее выбрать 40 случайных неповторяющихся.
Процедура, случайным образом перемешивающая элементы массива (легко переделывается под Ваш вариант)
Код
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;
ПРоцедуры это конечто хорошо, но надо иногда и думать своей головой:
for i:=1 to 40 do a[i]:=b[random(200)];
Вот тебе формирование масива состоящего из 40 елементов, при помощи случайного выбора элементов из другого масива состоящего из 200 элементов... ;D
Про формирование нового массива ничего не говорилось.
;)А тебе нужно чтобы большими буквами было написанно слово ФОРМИРОВАНИЕ???
Случайный выбор 40 елементов чего ты сними делать то хочешь запаминать сам??
Делаешь массив а потом крути как хочешь, хошь печатай, хошь запаминай... все проше чем его процедура :P
Условие:
Из цифр двух натуральных чисел составить наибольшее возможное число, сохраняя первоначальную последовательность цифр.
Пример:
111
222
Ответ:
222111
97531
86420
Ответ:
9876543210
2, 3 задачи решение должно быть не файлом input.txt, а вводом с клавиатуры!
Никто не знает чтоли? ???
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.