IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Различные числа и случайный порядок
maks
сообщение 27.03.2003 9:40
Сообщение #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
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 18)
Ivs
сообщение 27.03.2003 12:21
Сообщение #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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ivs
сообщение 27.03.2003 12:53
Сообщение #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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maks
сообщение 5.04.2003 11:17
Сообщение #4


Гость






Спасибо за помощь, а как можно этот текст скопировать в паскаль?
 К началу страницы 
+ Ответить 
Ivs
сообщение 5.04.2003 12:18
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 209

Репутация: -  0  +


Цитата
Спасибо за помощь, а как можно этот текст скопировать в паскаль?

Можно просто открыть TP в оконном режиме, далее скопировать вышеуказанную программу в буфер (как это сделать ты наверное догадываешся), и в том окне (где TP) есть иконка типа символа буфера, так вот тебе её нужно нажать, и тогда текст скопируется в TP, но так вроде коряво выходит, есть еще куча способов, самый простой это скопировать в блокнот и сохранить как файл с расширением .pas, но так он у тебя сохраниться в win кодировке и поэтому некорректно будут отображаться русские символы в TP, есть другой вариант скопировать программу в WordPad дальше в меню Сохранить как необходимо выбрать пункт "как текстовой документ ms-dos" и затем переименовать из .txt -> .pas.


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Maks
сообщение 6.04.2003 12:00
Сообщение #6





Группа: Пользователи
Сообщений: 3

Репутация: -  0  +


Вхожу в программу, ввожу число, нажимаю - Enter, а программа выходит в меню и не выдают результата! ???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlaRic
сообщение 6.04.2003 12:16
Сообщение #7


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Перед END напиши READLN.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ivs
сообщение 6.04.2003 12:33
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 209

Репутация: -  0  +


Цитата
Перед END напиши READLN.

Или после завершения жми Alt+F5 и усе увидишь.....


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlaRic
сообщение 6.04.2003 12:54
Сообщение #9


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Забыл сказать: в TP 7 приходилось писать readln дважды!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ivs
сообщение 6.04.2003 19:27
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 209

Репутация: -  0  +


Цитата
Забыл сказать: в TP 7 приходилось писать readln дважды!

Почему ???? У меня TP 7 и одного раза хватает...


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 8.04.2003 5:04
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


ТО Ivs
В ТР все переменные одного типа можно резервировать через запятую типа:
i,j,k,n,m  : Integer;
;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 8.04.2003 5:25
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


По-моему он это и так знает, а сделано было это для наглядности  :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Сергей
сообщение 14.04.2003 15:24
Сообщение #13


Гость






Коллеги, а не подскажете алгоритм случайной выборки из массива?

Есть база, в ней 200 записей.
надо из нее выбрать 40 случайных неповторяющихся.
 К началу страницы 
+ Ответить 
ozzy
сообщение 15.04.2003 4:11
Сообщение #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 - 17.12.2004 11:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 15.04.2003 4:48
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


ПРоцедуры это конечто хорошо, но надо иногда и думать своей головой:
for i:=1 to 40 do a[i]:=b[random(200)];
Вот тебе формирование масива состоящего из 40 елементов, при помощи случайного выбора элементов из другого масива состоящего из 200 элементов... ;D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlaRic
сообщение 15.04.2003 10:11
Сообщение #16


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Про формирование нового массива ничего не говорилось.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 15.04.2003 16:52
Сообщение #17


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


;)А тебе нужно чтобы большими буквами было написанно слово ФОРМИРОВАНИЕ???
Случайный выбор 40 елементов чего ты сними делать то хочешь запаминать сам??
Делаешь массив а потом крути как хочешь, хошь печатай, хошь запаминай... все проше  чем его процедура :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Maks
сообщение 16.04.2003 14:13
Сообщение #18





Группа: Пользователи
Сообщений: 3

Репутация: -  0  +


Условие:
Из цифр двух натуральных чисел составить наибольшее возможное число, сохраняя первоначальную последовательность цифр.

Пример:
111
222
Ответ:
222111
97531
86420
Ответ:
9876543210

2, 3 задачи решение должно быть не файлом input.txt, а вводом с клавиатуры!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Maks
сообщение 24.04.2003 12:07
Сообщение #19





Группа: Пользователи
Сообщений: 3

Репутация: -  0  +


Никто не знает чтоли? ???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"