![]() klvking |
|
Статус: Участник Группы: Участники Зарегистрирован: 15.04.2011(UTC) |
При чтении сертификата из контейнера Рутокен-Магистра появляется ошибка «Неправильный параметр набора ключей» в последней строчке кода: Цитата: CspParameters csp = new CspParameters(); Если вытаскивать сертификат с eToken’а, то все нормально. Отличие в сертификатах: на Магистре просроченный сертификат, на eToken’е действующий. Отредактировано пользователем 15 апреля 2011 г. 20:42:52(UTC) |
![]() |
|
![]() Челпанов А. |
|
Статус: Активный участник Группы: Участники Зарегистрирован: 24.12.2007(UTC) Поблагодарили: 2 раз в 2 постах |
Извините за задержку с ответом, был в отпуске. |
С уважением, Александр. |
|
![]() |
WWW |
![]() klvking |
|
Статус: Участник Группы: Участники
Зарегистрирован: 15.04.2011(UTC) |
Пробовал следующее: Цитата: CspParameters csp = new CspParameters(); Видимо причина не в этом. Попробовал на этом же ключе (Рутокен-Магистра) сгенерить тестовые ключи (http://www.cryptopro.ru/certsrv/) и записать сертификат — вышеуказанным кодом сертификат из контейнера считывается… Вроде все отличия… |
![]() |
|
![]() Челпанов А. |
|
Статус: Активный участник Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Поблагодарили: 2 раз в 2 постах |
CSP сертификат да же не разбирает, .Net Framework разбирает, но не проверяет. Проблема не в содержимом сертификатов. |
С уважением, Александр. |
|
![]() |
WWW |
![]() klvking |
|
Статус: Участник Группы: Участники Зарегистрирован: 15.04.2011(UTC) |
в CryptoPro.Sharpei.CPUtils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) |
![]() |
|
![]() Челпанов А. |
|
Статус: Активный участник Группы: Участники Зарегистрирован: 24.12.2007(UTC) Поблагодарили: 2 раз в 2 постах |
1. Эксперименты с Магистра и etoken проводите на одном компьютере? |
С уважением, Александр. |
|
![]() |
WWW |
![]() klvking |
|
Статус: Участник Группы: Участники
Зарегистрирован: 15.04.2011(UTC) |
1. тестировал ПО на 2-х ПК. Попробовать установить 3.6? Просто на АРМах, на которых надо будет использовать ПО, стоит Крипто Про 3.0 (лицензия), поэтому хотелось бы в рамках 3.0 добить… |
![]() |
|
![]() Челпанов А. |
|
Статус: Активный участник Группы: Участники Зарегистрирован: 24.12.2007(UTC) Поблагодарили: 2 раз в 2 постах |
Цитата: 1. тестировал ПО на 2-х ПК. Скорее всего проблема именно в различиях установки CSP или Sharpei. |
С уважением, Александр. |
|
![]() |
WWW |
![]() klvking |
|
Статус: Участник Группы: Участники
Зарегистрирован: 15.04.2011(UTC) |
osinfo.xml отправил. Цитата: CryptoPro.Sharpei.Start.dll not loaded. Error code:126 (0x7e):Не найден указанный модуль |
![]() |
|
![]() Челпанов А. |
|
Статус: Активный участник Группы: Участники Зарегистрирован: 24.12.2007(UTC) Поблагодарили: 2 раз в 2 постах |
Цитата: CryptoPro.Sharpei.Start.dll not loaded. Error code:126 (0x7e):Не найден указанный модуль Это не ошибка, если есть одна из строчек Цитата: module name=»CryptoPro.Sharpei.Start20.dll» |
С уважением, Александр. |
|
![]() |
WWW |
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Из нашей статьи вы узнаете:
После установки драйверов и во время использования цифровой подписи потенциально могут возникнуть ошибки. Причины часто кроются в программных ошибках, неправильных действиях пользователя. На практике большинство проблем можно решить самостоятельно, без обращения за помощью в удостоверяющий центр или к специалистам по обслуживанию компьютерной техники. Рассмотрим основные ошибки, с которыми приходится сталкиваться пользователям и которые реально решить своими силами.
Ошибка: Сертификат ненадежен/Не удалось проверить статус отзыва
Ошибку можно заметить на вкладке «Сертификаты» непосредственно в панели управления Рутокен. Проблема возникает во время установки ЭЦП и связана с неполной настройкой. Речь про отсутствие специального корневого доверенного сертификата, который выдает удостоверяющий центр.
Первым шагом к устранению ошибки остается обновление комплекта драйверов. Если проблема не исчезла или последние у вас имеют актуальную версию, выполните действия по следующему алгоритму:
- выберите ваш сертификат в панели управления;
- нажмите кнопку «Свойства»;
- выберите вкладку «Путь сертификации».
Если в открывшемся дереве вы видите лишь ваш личный сертификат, то надо установить еще один, который был выдан в удостоверяющем центре, и сделать доверенным.
Ошибка: Rutoken перестает определяться (Windows 10)
Потенциально могут возникать периодические ошибки из-за недоступности сертификатов, невозможности запустить панель управления. Одновременно светодиод на токене горит, а сам Рутокен имеется в Диспетчере устройств. Подобная ситуация может быть связана со спецификой работы материнской платы компьютера, когда при переходе из энергосберегающего режима в штатный не происходит «пробуждения» токена. Выходом здесь станет его отключение либо повторное подключение Рутокена (для этого достаточно достать USB-токен из разъема и подключить опять).
В случае если ошибка не исчезла, обратитесь за консультацией в удостоверяющий центр, где вы оформили ЭЦП и приобрели Рутокен.
Ошибка: Рутокен плагин недоступен
Если у вас появляется ошибка «Плагин недоступен» при входе в личный кабинет сервиса Честный Знак, то это значит, что на компьютере не установлены криптографический плагин Рутокен Плагин или КриптоПро ЭЦП Browser plug-in.
Чтобы исправить данную ошибку вы можете воспользоваться нашей инструкцией по установке плагина RuToken.
Ошибка: Панель управления не видит Рутокен ЭЦП 2.0
Для решения проблемы выполните следующие действия:
- подключите токен к другому USB-разъему или компьютеру для оценки работоспособности;
- определите наличие устройства через «Диспетчер устройств» в разделе «Контроллеры USB»;
- проконтролируйте наличие доступа к веткам реестра
- HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptographyCalais и
- HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptographyCalaisReaders у текущего пользователя и Local Service (если необходимо, то добавьте), также убедитесь, что Служба «Смарт-карта» запущена от имени NT AUTHORITYLocalService («Пуск» — «Панель управления» — «Администрирование» — «Службы»).;
- проверьте количество считывателей в настройках панели управления (должно быть значение 1);
- переустановите комплект драйверов для исключения сбоя программного обеспечения.
Если ничего не помогло и ошибка осталась, обращайтесь в удостоверяющий центр «Астрал». Мы предлагаем услуги по генерации ЭЦП любых типов на выгодных условиях, а также комплексное техническое сопровождение. Для решения проблем мы готовы проконсультировать по телефону либо найти выход с помощью удаленного подключения к вашему компьютеру. Получить дополнительную информацию можно по телефону либо оставив заявку на сайте. Мы оперативно ответим и предоставим консультацию.
Я читаю файл PDF, используя iTextSharp.text.pdf.
Но, как вы можете видеть в приведенном ниже коде, когда я пытаюсь прочитать первую страницу PDF-файла, он дает мне сообщение об ошибке: «Индекс находился вне границ массива.»
Но когда я читаю вторую или третью страницу, он не выдает сообщения об ошибке.
Ниже приведен код, который я использую для чтения файла PDF.
StringBuilder pdfContent = new StringBuilder();
PdfReader pdfReader = new PdfReader(pdfFilePath);
int pageCount = pdfReader.NumberOfPages;
for (int i = 1; i <= pageCount; i++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string text = PdfTextExtractor.GetTextFromPage(pdfReader, i, strategy);
if (!string.IsNullOrWhiteSpace(text))
{
pdfContent.Append(Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text))));
}
if (parser != null)
{
parser.ProcessContent(i, imageRenderListener);
}
}
pdfReader.Close();
return pdfContent.ToString();
Может кто-нибудь мне помочь
Ошибка лежит в этих двух строчках(полный код представлен ниже)
exptab[i]:= (45 * exptab[i-1]) mod 257;
logtab[exptab[i]]:= i;
Я так понимаю, что pascalabc представляет как exptab[i] будет равен 256 и заранее выдает ошибку.Онлайн компиляторы ошибку не видят и программа работает правильно. Сами условия изменить не смогу, так как программа кодирует определенный шифр с определенными условиями. Объясните что может быть не так, потому что я не смогу показать работу программы без запуска pascalabc(если окажется, что это проблема компилятора, то попробую договориться с преподавателем).
program SAFERK64;
VAR a1, a2, a3, a4, a5, a6, a7, a8, b1, b2, b3, b4, b5, b6, b7, b8, r: byte;
k: ARRAY[1..21,1..8] OF byte; k1: ARRAY[1..8] OF byte;
logtab, exptab: ARRAY[0..255] OF integer; i, j, flag: integer;
PROCEDURE mat1(VAR a1, a2, b1, b2: byte);
BEGIN b2:= a1 + a2; b1:= b2 + a1; END;
PROCEDURE invmat1(VAR a1, a2, b1, b2: byte);
BEGIN b1:= a1 - a2; b2:= -b1 + a2; END;
BEGIN
logtab[1]:= 0; exptab[0]:= 1;
FOR i:= 1 TO 255 DO
BEGIN
exptab[i]:= (45 * exptab[i-1]) mod 257;
logtab[exptab[i]]:= i;
END;
exptab[128]:= 0; logtab[0]:= 128; exptab[0]:= 1;
flag:= 0; writeln;
writeln('Введите число раундов r (max 10)'); readln(r);
writeln; writeln('Введите исходный текст из 8 байт с пробелами между ними');
REPEAT
BEGIN
writeln('(Значение байта от 0 до 255)');
readln(a1, a2, a3, a4, a5, a6, a7, a8);
writeln('Введите ключ из 8 байт');
readln(k[1,1],k[1,2],k[1,3],k[1,4],k[1,5],k[1,6],k[1,7],k[1,8]);
k1 [1]:= k[1,1]; k1[2]:= k[1,2]; k1[3]:= k[1,3]; k1[4]:= k[1,4];
k1 [5]:= k[1,5]; k1[6]:= k[1,6]; k1[7]:= k[1,7]; k1[8]:= k[1,8];
writeln('ИСХОДНЫЙ ТЕКСТ ', a1:8,a2:4,a3:4,a4:4,a5:4,a6:4,a7:4,a8:4);
writeln('КЛЮЧ ', k[1,1]:8,k[1,2]:4,k[1,3]:4,k[1,4]:4,
k[ 1,5]:4,k[ 1,6]:4,k[ 1,7] :4,k[ 1,8] :4);
FOR i:= 2 TO 2*r + 1 DO
FOR j:= 1 TO 8 DO
BEGIN
k1[j]:= (k1[j] shl 3) + (k1[j] shr 5);
k[i,j]:= k1[j] + exptab[exptab[9*i+j]];
END;
FOR i:= 1 TO r DO
BEGIN
a1:= a1 xor k[2*i-1,1]; a2:= a2 + k[2*i-1,2];
a3:= a3 + k[2*i-1,3]; a4:= a4 xor k[2*i-1,4];
a5:= a5 xor k[2*i-1,5]; a6:= a6 + k[2*i-1,6];
a7:= a7 + k[2*i-1,7]; a8:= a8 xor k[2*i-1,8];
b1:= exptab[a1]; b2:= logtab[a2]; b3:= logtab[a3]; b4:= exptab[a4];
b5:=exptab[a5]; b6:= logtab[a6]; b7:= logtab[a7]; b8:= exptab[a8];
b1:= b1 + k[2*i,1]; b2:= b2 xor k[2*i,2];
b3:= b3 xor k[2*i,3]; b4:= b4 + k[2*i,4];
b5:= b5 + k[2*i,5]; b6:= b6 xor k[2*i,6];
b7:= b7 xor k[2*i,7]; b8:= b8 + k[2*i,8];
mat1(b1, b2, a1, a2); mat1(b3, b4, a3, a4);
mat1(b5, b6, a5, a6); mat1(b7, b8, a7, a8);
mat1(a1, a3, b1, b2); mat1(a5, a7, b3, b4);
mat1(a2, a4, b5, b6); mat1(a6, a8, b7, b8);
mat1(b1, b3, a1, a2); mat1(b5, b7, a3, a4);
mat1(b2, b4, a5, a6); mat1(b6, b8, a7, a8);
writeln('После раунда',i:2,a1:8,a2:4,a3:4,a4:4,a5:4,a6:4,a7:4,a8:4);
END;
a1:= a1 xor k[2*r+1,1]; a2:= a2 + k[2*r+1,2];
a3:= a3 + k[2*r+1,3]; a4:= a4 xor k[2*r+1,4];
a5:= a5 xor k[2*r+1,5]; a6:= a6 + k[2*r+1,6];
a7:= a7 + k[2*r+1,7]; a8:= a8 xor k[2*r+1,8];
writeln('КРИПТОГРАММА',a1:8,a2:4,a3:4,a4:4,a5:4,a6:4,a7:4,a8:4); writeln;
writeln('Напечатайте 0 чтобы продолжить и -1 чтобы завершить'); read(flag);
END
UNTIL flag < 0;
END.
Страницы 1
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
#1 2019-12-13 11:58:28
- Father
- Посетитель
- Неактивен
Получение RSA ошибка Неверные границы массива. 0x800706c6
При попытке формирования RSA ключа через сайт ЕГАИС выходит такая ошибка
Ошибка в методе createCertificateRequest() error Неверные границы массива. 0x800706c6
Пробовали на разных пк, обновлял драйвер до версии Панель управления Рутокен 4.8.0.1. В настройках задана Поддержка криптопровайдера Microsoft Base Smart Card Crypto Provider на Рутокен ЭЦП 2.0. Пробовал менять и ставить заново.
#2 Ответ от Николай Киблицкий 2019-12-13 12:24:11
- Николай Киблицкий
- Техническая поддержка
- Неактивен
Re: Получение RSA ошибка Неверные границы массива. 0x800706c6
Здравствуйте.
Можем ли мы подключиться к ПК удаленно? Если это возможно запустите TeamViewer QS и сообщите данные для подключения письмом на hotline@rutoken.ru или по телефону +7 (495) 925-77-90.
#3 Ответ от Father 2019-12-13 12:27:44
- Father
- Посетитель
- Неактивен
Re: Получение RSA ошибка Неверные границы массива. 0x800706c6
Попробую организовать удаленку
#4 Ответ от Father 2019-12-17 08:59:23
- Father
- Посетитель
- Неактивен
Re: Получение RSA ошибка Неверные границы массива. 0x800706c6
Получилось сформировать на другом пк с установленной версией ПУ рутокена 4.8.0.0 (которая заявлена у вас на сайте не для егаис). Не знаю, что помогло, фактор другого пк, или версия рутокена
#5 Ответ от Vintik 2019-12-17 13:05:49
- Vintik
- Посетитель
- Неактивен
Re: Получение RSA ошибка Неверные границы массива. 0x800706c6
Однозначно другой ПК. Версия для ЕГАИС спокойно работает и не для него и обратно, но версия для ЕГАИС я так понимаю в основном полезна для работы с УТМ, предполагаю там может какие то задержи и т.п. чтоб ключ не помирал от кривого ПО УТМ и постоянного глупого обращения к нему.
#6 Ответ от Ксения Шаврова 2019-12-17 13:29:23
- Ксения Шаврова
- Администратор
- Неактивен
Re: Получение RSA ошибка Неверные границы массива. 0x800706c6
Father пишет:
Получилось сформировать на другом пк с установленной версией ПУ рутокена 4.8.0.0 (которая заявлена у вас на сайте не для егаис). Не знаю, что помогло, фактор другого пк, или версия рутокена
Добрый день, раньше версии сильно отличались и мы решили их разделить.
Сейчас версия драйверов «для ЕГАИС» от обычных драйверов Рутокен почти не отличается. Но разделение в версиях Драйверов Рутокен мы оставили.
Единственное, в версии для ЕГАИС при установке в настройках всегда принудительно выставляется криптопровайдер Microsoft Base Smart Card Cryptoprovider, который используется для выписывания RSA.
Скорее всего, особенности конкретного компьютера могли повлиять. Более точно определить удалось бы только после подключения.
Страницы 1
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
Причины и способы устранения ошибки — индекс находится вне границ массива
Достаточно часто бухгалтерские, кадровые службы организаций могут сталкиваться с ситуациями, когда при выполнении необходимых для работы действий программа выдает сообщение о том, что индекс находится за границами массива 1С.
Закажите настройку БД 1С в IT RUSH!
- Стоимость работ программиста 1С – 2000 руб/час;
- Абонемент на 50 часов/месяц, 1900 руб/час;
- Абонемент на 100 часов/месяц, 1800 руб/час;
Что значат, почему возникают такие ошибки?
Получение системного сообщения о том, что индекс элемента находится за границами массива или system indexoutofrangeexception, обозначает возникновение следующей ситуации:
Во время программирования были упущены некоторые моменты для проверки на количество коллекций в 1С. За все время использования продукта коллекции могут закончиться для выполнения важных этапов создания документов или отчетов. При этом 1С Предприятие будет делать попытки поиска, уведомит пользователя о выявленной проблеме таким оповещением.
Основными причинами подобных неполадок становятся такие процессы:
- отсутствие в таблице поля, к которому отправляется запрос;
- недостаточное количество свободных полей;
- неправильное изменение настроек, конфигурации всей программы;
- неполный или некорректный перенос информации с одной версии программного обеспечения на другую.
Попытки внести правки в конфигурацию СУБД самостоятельно могут привести к потере данных и рабочего состояния всех компонентов программы. Проверить все эти моменты, сделать необходимые настройки сможет программист нашей компании.
Обратитесь к специалистам
Исправить ошибку в программе 1С, когда индекс находился вне границ массива, своими силами бывает достаточно сложно, так как не все рядовые пользователи знают и понимают язык 1С.
Наши постоянные клиенты по 1С:
Можно найти решение проблемы на различных форумах в интернете, но применить советы, указанные в сообщениях, не всегда возможно без профподготовки и грозит потерей всех данных.
Обращаться IT RUSH — это практичное и выгодное решение:
- сотрудники разбираются во всех особенностях, тонкостях SQL server;
- оперативное реагирование на сообщения о возникновении проблем в использовании 1С через мессенджеры или по телефону в любое время;
- программисты досконально знают базы данных 1С, ответственно и правильно выставляют необходимые настройки и вносят изменения в них;
- мы гарантируем быстрое и точное обслуживание 1С с подробным объяснением и консультациями по всем непонятным или сложным моментам.
Стоимость работ специалиста IT-Rush программиста 1С по устранению ошибки «индекс находится за границами массива 1С»- от 1800 руб./час.
Нам доверяют:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите порядок матрицы");
int N = Int32.Parse(Console.ReadLine());
int M = Int32.Parse(Console.ReadLine());
Console.WriteLine();
int[,] a = new int[N, M];
int[] b = new int[N];
int max;
Random rnd = new Random();
max = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
a[i, j] = rnd.Next(0, 10);
Console.Write(a[i, j] + "t");
}
Console.WriteLine();
}
Console.WriteLine();
for (int i = 0; i < N; i++)
{
for (int j = 0; i < M; j++)
{
if (a[i, j] > max)
{
max = a[i, j];
}
}
b[i] = max;
Console.Write(b[i] + "t");
}
Console.WriteLine();
}
}
Ошибка происходит в строке if (a[i, j] > max)
PascalABC.NET как исправить ошибку?
uses Arrays;
var
a: array of integer;
N: integer;
i1,i2:integer;
begin
N := 50;
a := CreateRandomIntegerArray(50);
for var i:=1 to N do begin
if a[i]>0 then
i1+=1;
if a[i]<0 then
i2+=1;
end;
write(i1);
write(i2);
end.
задан 6 дек 2017 в 6:19
Динамические массивы нумеруются с нуля. Цикл for var i:=1 to N do begin
должен выглядеть хотя бы так for var i:=0 to N-1 do begin
А вообще стоит оперировать такими функциями работы с массивами, как length
, High
и т.п.
ответ дан 6 дек 2017 в 6:27
Viktor TomilovViktor Tomilov
8,0374 золотых знака24 серебряных знака62 бронзовых знака
LR16 0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
||||
1 |
||||
Ошибка времени выполнения: Индекс находится вне границ массива28.03.2015, 21:34. Показов 23963. Ответов 16 Метки нет (Все метки)
Здравствуйте!
0 |
1646 / 1075 / 1081 Регистрация: 03.07.2013 Сообщений: 4,507 |
|
28.03.2015, 22:45 |
2 |
Проинициализируйте переменную «n» перед первым использованием. 1 |
0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
|
28.03.2015, 22:50 [ТС] |
3 |
Это как проинициализировать ?? 0 |
APALoff 1646 / 1075 / 1081 Регистрация: 03.07.2013 Сообщений: 4,507 |
||||
28.03.2015, 23:00 |
4 |
|||
писал перед циклом n:=0 — не помогло И не поможет, инициализировать надо тоже с умом. Можно поставить единицу, но у Вас скорее всего всплывет потом еще одна ошибка в строке 16. Добавлено через 2 минуты text[n] := s // ЭТУ строку подсвечивает а надо
Добавлено через 1 минуту 1 |
Модератор 9625 / 4937 / 3261 Регистрация: 17.08.2012 Сообщений: 15,429 |
|
28.03.2015, 23:06 |
5 |
РешениеИзначальная длина массива (а строка — это массив) text при инициализации — 0 символов. Вы пытаетесь присвоить прочитанный символ сразу за границы строки. Кроме того, f объявлен как textfile, то есть, является файлом с последовательным доступом, Вы же пытаетесь с ним работать не пойми как, с одной стороны, как с файлом с последовательным доступом (readln), с другой стороны — пытаетесь записывать что-то после конца файла (write), что возможно только для файлов с произвольным доступом, но с каким-то нелепым условием записи до конца файла (второе while). Естественно, после конца файла с последовательным доступом ничего записать Вам не удастся, во-первых, потому что он открыт для чтения, и, во-вторых, вообще не удастся, потому что открыть его для добавления информации (append) можно не во всех диалектах паскаля, в-третьих, ничего не запишется, так как конец файла уже достигнут в первом цикле while. В общем, не программа, а сплошная ошибка. 2 |
0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
|
28.03.2015, 23:08 [ТС] |
6 |
OK, счас попробую 0 |
1646 / 1075 / 1081 Регистрация: 03.07.2013 Сообщений: 4,507 |
|
28.03.2015, 23:10 |
7 |
LR16, выше Cyborg Drone дополнил то, что я проглядел (textfile). Добавлено через 1 минуту 1 |
0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
|
28.03.2015, 23:13 [ТС] |
8 |
с другой стороны — пытаетесь записывать что-то после конца файла (write) Может я написал не правильно, но имелся ввиду вывод на экран.. 0 |
Модератор 9625 / 4937 / 3261 Регистрация: 17.08.2012 Сообщений: 15,429 |
|
28.03.2015, 23:14 |
9 |
А что вообще Ваша программа должна делать? Так, навскидку, мне кажется, она с Цезарем воюет, но воюет неправильно. 1 |
APALoff 1646 / 1075 / 1081 Регистрация: 03.07.2013 Сообщений: 4,507 |
||||
28.03.2015, 23:15 |
10 |
|||
Может я написал не правильно, но имелся ввиду вывод на экран.. Если это вывод на экран, то не правильно — у Вас цикл привязан к файлу.
Добавлено через 40 секунд 1 |
0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
|
28.03.2015, 23:16 [ТС] |
11 |
Спасибо.. 0 |
APALoff 1646 / 1075 / 1081 Регистрация: 03.07.2013 Сообщений: 4,507 |
||||
28.03.2015, 23:16 |
12 |
|||
1 |
LR16 0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
||||
28.03.2015, 23:25 [ТС] |
13 |
|||
А нет, не пойдёт. Сначала надо сделать кодирование. Да я понял, усложнил себе задачу просто.. Добавлено через 7 минут
каша получается, а не код. Да, че-то тупанул с самого начала.
Опять где-то накосячил, только один символ выводит. P.S. там забыл вернуть номер символа опять в символ CHR, спасибо.. 0 |
1646 / 1075 / 1081 Регистрация: 03.07.2013 Сообщений: 4,507 |
|
28.03.2015, 23:30 |
14 |
Решение
for i:=1 to n-1 Тут уже можно изменить на просто n, без «-1» Добавлено через 1 минуту
Вы же пытаетесь с ним работать не пойми как, с одной стороны, как с файлом с последовательным доступом (readln), Думаю надо READ, без LN Добавлено через 1 минуту 1 |
0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
|
28.03.2015, 23:32 [ТС] |
15 |
Думаю надо READ, без LN Ого, сработало, большое Спасибо !) 0 |
Cyborg Drone Модератор 9625 / 4937 / 3261 Регистрация: 17.08.2012 Сообщений: 15,429 |
||||
28.03.2015, 23:41 |
16 |
|||
РешениеНу не знаю… Во-первых, как правило, шифр Цезаря строится на ограниченном и закольцованном множестве символов, у Вас же — на всех символах. Как Вы думаете, каков будет результат преобразования для трёх последних символов кодовой таблицы? Правильно, весьма ошибочный. Скорее всего, программа вылетит с оговоркой, что нельзя привести какой-нибудь word или integer к типу char. Тем не менее, если из Вашей программы повытряхнуть всё лишнее, то будет так:
1 |
LR16 0 / 0 / 2 Регистрация: 15.03.2015 Сообщений: 20 |
||||
29.03.2015, 00:42 [ТС] |
17 |
|||
Ну не знаю БОЛЬШОЕ СПАСИБО ВАМ )
=============== 0 |
program p1;
type
massive = array of integer;
function PolMos(a: massive; n: byte): char;
var
c, i: byte;
begin
c := 0;
for i := low(a) to high(a) div 2 do
if a[i] <> a[high(a) - i + 1] then c := 1;
if c = 0 then writeln(chr(13), 'Массив является палиндромом')
else writeln(chr(13), 'Массив не является палиндромом');
end;
function massiv(n: byte): char;
var
i: byte;
a: massive;
begin
setlength(a, n);
randomize;
for i := low(a) to high(a) do
begin
a[i] := random(n);
write(a[i]:4);
end;
PolMos(a, n);
end;
var
n: byte;
begin
write('Введите размер массива: '); read(n);
write('Массив: '); massiv(n);
end.
-
Вопрос заданболее года назад
-
781 просмотр
Индекс находился вне границ массива
Русским по белому же написано.
Представим, что у нас массив a[] размером 2
Тогда
low(a)=0
high(a)=1
На первой же итерации:
i=0
high(a) — i + 1 = 2
2 находится за пределами границ массива.
А ещё из твоей функции никакое значение не возвращается.
И в PascalABC можно точки останова расставлять и смотреть, какие значения переменных у тебя там получились перед ошибкой.
Пригласить эксперта
-
Показать ещё
Загружается…
Сбер
•
Ростов-на-Дону
от 170 000 ₽
24 июн. 2023, в 23:21
5000 руб./за проект
24 июн. 2023, в 21:49
1000 руб./за проект
24 июн. 2023, в 18:21
30000 руб./за проект
Минуточку внимания
БЛОГ НА HUSL
- Деловая переписка на английском языке: фразы и советы
- Принцип цикады и почему он важен для веб-дизайнеров
- В популярных антивирусах для ПК обнаружили лазейки в защите
Ошибка времени выполнения: Индекс находился вне границ массива
Автор вопроса: Ярослав
PascalABC.NET как исправить ошибку?
uses Arrays;
var
a: array of integer;
N: integer;
i1,i2:integer;
begin
N := 50;
a := CreateRandomIntegerArray(50);
for var i:=1 to N do begin
if a[i]>0 then
i1+=1;
if a[i]<0 then
i2+=1;
end;
write(i1);
write(i2);
end.
Источник
Ответы (1 шт):
Автор решения: Viktor Tomilov
Динамические массивы нумеруются с нуля. Цикл for var i:=1 to N do begin
должен выглядеть хотя бы так for var i:=0 to N-1 do begin
А вообще стоит оперировать такими функциями работы с массивами, как length
, High
и т.п.
→ Ссылка
licensed under cc by-sa 3.0 with attribution.
Попытка вывести массив не поэлементно, а целиком
const Sz = 100; var a: array [1..Sz] of integer; i: integer; begin read(a); // неверно: массив необходимо вводить поэлементно end.
Использование записи a[i] вне цикла
const Sz = 10; var a: array [1..Sz] of integer; i: integer; begin var N := Sz; for i:=1 to N do a[i] := Random(100); a[i] := 666; // Ошибка: переменной i нельзя пользоваться вне цикла for end.
Выход за границы диапазона изменения индекса
const Sz = 10; var a: array [1..Sz] of integer; begin var N := Sz; for var i:=1 to N+1 do a[i] := Random(100); // При i=N+1 происходит ошибка: индекс вне границ массива end.
Затирание элементов при сдвиге
const Sz = 100; var a: array [1..Sz] of integer; begin var N := 10; for var i:=1 to N do a[i] := Random(100); for var i:=1 to N do write(a[i],' '); writeln; for var i:=1 to N-1 do // ошибка: алгоритм сдвига вправо надо начинать с конца a[i+1] := a[i]; for var i:=1 to N do write(a[i],' '); end.
Ссылки
- Программы для начинающих
- Сайт PascalABC.NET: Программы и алгоритмы для начинающих