Помогите решить пару задачек на паскале.

enron
Сообщения: 4
Зарегистрирован: 27 мар 2008, 21:43

Вот первая:
Опишите функцию, которая выполняет деление с остатком двух больших натуральных чисел (в записи которых не больше 255 цифр).
Вторая:
Напишите программу, которая выводит на экран все размещения чисел 1,2,...,n, где n - заданное натуральное ненулевое число.
И третья:
Выведите на экран n - ю цифру числа 1234567891011121314151617181920...999 (записаны последовательно в порядке возрастания все натуральные положительные числа меньше 1000), где n - заданное натуральное число.

Иначе я сам не могу их решить :(
Помогите,плиз.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

№1

Код: Выделить всё

uses crt;
var x1,x2:integer;
    y:real;
BEGIN
 clrscr;
 write('Введте число №1:');
 readln(x1);
 write('Введите число №2:');
 readln(x2);
 y:=x1 div x2;
 writeln('Ответ:',y:10:2);
 readln;
END.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

№2

Код: Выделить всё

uses crt;
const k=1000;
var n,i:integer;
    m:array[1..k]of integer;
BEGIN
 clrscr;
 Write('Введите n:');
 readln(n);
 for i:=1 to k do
  m[i]:=i;
 for i:=1 to n do
  write(m[i]:5);
 readln;
END.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

№3

Код: Выделить всё

uses crt;
const k=1000;
var n,i:integer;
    m:array[1..k]of integer;
BEGIN
 clrscr;
 Write(' Введите n:');
 readln(n);
 for i:=1 to k do
  begin
   m[i]:=i;
   write(m[i]:5);
  end;
writeln('Ответ:',m[n]);
 readln;
END.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

оп-с... прямо не знаю, стоит об этом говорить или нет... ;-(( Vovchik, Вы уж на меня не обижайтесь, но Вы неверно решили задачи. (правда, я не понял условие задачи №2 - поэтому тут не буду 100% утверждать, что неверно, но №1 и №3
решены неверно!

задача №1 - ну, попробуйте разделить число хотя бы с 20 значащими цифрами... тип Integer (как и LongInt) тут не поможет (там, грубо говоря, менее 11 значащих цифр)
Для решения этой задачи нужно использовать т.н. "длинную" арифметику.

задача №3. вот есть ряд 1234567891011121314151617181920...999
отсчитайте n-ю цифру (пусть n ввели 11 - что получается - надо выдать 0 - 11-я цифра в этой длиной записи равна нулю! а что выдаст ваша программа?!
Я уже не говорю о том, что похоже вы путаете понятия "цифра" и "число"...

сорри, если обидел... "Платон мне друг, но истина дороже" (с) Сократ.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

Serge_Bliznykov, просто я наверно тне так понял задачи !!! поетому не так как надо решыл буду исправлять !!
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

вот решение задачи №3

Код: Выделить всё

{
Выведите на экран n - ю цифру числа 
1234567891011121314151617181920...999
  (записаны последовательно в порядке возрастания все натуральные
  положительные числа меньше 1000),
  где n - заданное натуральное число.
}
var 
  n,i,m,LenAll : integer;
  s : string;
begin
 Write(' Введите n: ');
 readln(n);

 LenAll := 0;
 i:=0;

 while LenAll<n do begin
   inc(i);
   Str(i:1, s);
   if (LenAll+Length(S))>=n then
   begin
     m := n - LenAll;
     WriteLn(n:1,'-я цифра = ',Copy(S,m,1));
   end;  
   LenAll := LenAll+Length(S);
 end;
 readln;
end.
enron
Сообщения: 4
Зарегистрирован: 27 мар 2008, 21:43

Вам спасибо Serge_Bliznykov. А то я смотрю что у меня не идут задачи.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

пожалуйста.
а растолкуйте мне, что означает в задаче №2 - "все размещения чисел 1,2,...,n" ?
Это Размещение — Википедия ?
если Вы сами понял условия задачи - то объясните.

по поводу задачи №1
смотри сюда -
Вот тут есть процедура деления длинных чисел через вычитание:
Длинная арифметика
а нашёл это я через поиск - на форуме sources.ru Деление больших чисел., ПОМОГИТЕ НАЙТИ ОШИБКУ
Pinkfloid88
Сообщения: 7
Зарегистрирован: 30 мар 2008, 12:20

Serge_Bliznykov, Здравствуйте, помогите пожалуйста решить задачу, а то нек кому больше обратиться. Очень буду благодарен, заранее спасибо. Задача: Работа с одномерными массивами. Построение алгоритмов развлетвляющейся и цеклической структуры. Дан массив С(N) натуральных чисел. Найдите сумму элементов, кратных данному числу k.
Ответить