Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 18:16   #1
Leonid1
 
Регистрация: 24.09.2011
Сообщений: 5
По умолчанию Задача

Собственно вот задание:
Последовательность латинских букв:
1: a
2: baa
3: cbaabaa
4: dcbaabaacbaabaa
пользователь задает число N.
Определить символ который стоит на N месте последовательности после 26 шага.
Код:
program qqq;
var ch:array[1..26] of longint; c:array[1..27] of char;
c1,cc:char; n:longint; i,e,q,q1:integer;
 procedure nnn(n1:longint; q:integer; var q1:integer);
 var r:boolean;
 begin
 r:=false;
 while r<>true do begin
                  if n1>ch[q-1]+27-q then r:=true
                  else q:=q-1;
                  end;
 n1:=n1-(ch[q-1]+27-q);
 q:=q-1;
 q1:=q;
 if n1<>1 then nnn(n1,q,q1);
 end;
begin
ch[1]:=1; e:=1;
for c1:='a' to 'z' do begin
                      c[e]:=c1;
                      e:=e+1;
                      end;
for i:=2 to 26 do ch[i]:=ch[i]+1+ch[i-1]*2;
readln(n); q:=26;
nnn(n,q,q1);
writeln(c[q1]);
end.
Выбивает exitcode 201. Помогите решить
Leonid1 вне форума Ответить с цитированием
Старый 24.09.2011, 18:40   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

Это задание из ЕГЭ по информатике за курс 11 класс. решили сразу подготовиться? хм, мудро поступаете...
Код:
var s:string
Read(N);//вводим число N
s:='A';
for i:=2+64 to 26+64 do//от кода буквы B до Z
begin
   s:=Chr(i)+s+s;//формируем нашу длиннющую строку
end;
s:=Copy(s,N,1);//из нашей длиннющей строки берём тот самый символ с номером N
WriteLn(s);//ответ
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 24.09.2011 в 18:48.
NetSpace вне форума Ответить с цитированием
Старый 24.09.2011, 18:43   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

exitcode 201— это выход за пределы массива. Ищите где.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.09.2011, 19:07   #4
Leonid1
 
Регистрация: 24.09.2011
Сообщений: 5
По умолчанию

NetSpace, у нас в стране есть ЗНО, и по информатике оно не сдается. Помоему длина строки на 26 шаге будет свыше 63млн символов, поэтому просто сформировать строку не получиться.
Alex11223 что-то ничего не получается
Leonid1 вне форума Ответить с цитированием
Старый 24.09.2011, 19:17   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

ну, тогда сделайте запись в файл и потом читайте отуда N-й символ. так можно по условию задачи?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 24.09.2011, 19:26   #6
Leonid1
 
Регистрация: 24.09.2011
Сообщений: 5
По умолчанию

К сожалению такой вариант решения у меня не примут. Также есть задача на нахождение N! 0<N<999. Просто посчитать не получиться, в longint не вписывается. Дали 8 подобных задач на 2 недели. Времени осталось до понедельника, а 2 задачи еще не решены.
Leonid1 вне форума Ответить с цитированием
Старый 24.09.2011, 19:38   #7
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

так если строка шибко большая получается, нельзя её разбить на несколько подстрок? а целочисленный тип EXTENDET или Int64 не пробовали использовать? он, кажись длинне, чем LongInt и Integer. Ещё есть LongWord и CARDINAL
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 24.09.2011 в 19:40.
NetSpace вне форума Ответить с цитированием
Старый 24.09.2011, 19:52   #8
Leonid1
 
Регистрация: 24.09.2011
Сообщений: 5
По умолчанию

Насчёт extended попробую, но почему то мне кажеться 999! поболее будет. Да и суть задания не в том чтобы найти число, а найти самую правую ненулевую цифру. Может разбить всю строку и можно, вот только препод сказал найти какую-нибудь зависимость
Leonid1 вне форума Ответить с цитированием
Старый 24.09.2011, 20:25   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по поводу исходной задачи. Зря поиском по форуму не пользуетесь:

http://www.programmersforum.ru/showthread.php?t=33490
http://www.programmersforum.ru/showthread.php?t=47966
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2011, 20:35   #10
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

1!=1(тут пишу правое ненулевое число)
2!=2(2)
3!=6(6)
4!=24(4)
5!=120(2)
6!=720(2)
7!=5040(4)
8!=40320(2)
9!=362880(8)
10!=3628800(8)
11!=39916800(8)
12!=479001600(6)
13!=6227020800(8)
14!=87178291200(2)
15!=1307674368000(8)
16!=20922789888000(8)
17!=355687428096000(6)
18!=6402373705728000(8)
19!=121645100408832000(2)
20!=2432902008176640000(4)
это просто для раздумья. а чтоб найти самую правую цифру - это надо вам отбрасывать, скажем у числа 5040, тысячи и сотни и брать оставшиеся десятки и единицы - число 40 и умножать его на 8 - следующее число. получите 320. потом снова отбрасываете сотни и берёте оставшееся 20. у вас будут простые небольшие числа. да, так проще будет..а если поднапряжётесь, то ещё и нули справа отбросить можно - тогда у Вас в процессе будут числа получаться не больше 10.000. вообще кайф!
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 24.09.2011 в 20:40.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51
задача на С++ Кристина_ Общие вопросы C/C++ 3 22.02.2011 22:07
Задача на С# Рома_Я Помощь студентам 1 24.10.2009 17:06