• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль

Smile188

Новые
Регистрация
13 Окт 2016
Сообщения
15
Реакции
0
Баллы
0
Паскаль

фрагмент программы. Помогите исправить, что бы при вводе кода читались не только цифры, но и другие символы (что бы программа не вылетала)


var
a,x,n,c,i,b,k,j:integer;
s,s_new:array[1..100] of char;
p:array[1..100] of integer;
flag:boolean;


begin


for i:=1 to 100 do
begin
s:=chr(0);
s_new:=chr(0);
end;

flag:=true;
writeln('Введите число символов в строке (<=100)');
readln(n);
if n>100 then
writeln('НЕВЕРНО!Введите число символов в строке (<=100)')
else
writeln('Введите строку');
for i:=1 to n do
read(s);

repeat
writeln('Введите размер блока (>=2)');
readln(a);
if a<2 then writeln(' ОШИБКА!');
until (a<=n) and (a>1);
b:= n mod a ;
if b<>0 then
repeat
writeln('Повторите ввод размера блока (>=2)');
readln(a);
until n mod a=0;




writeln('Введите код');

for i:=1 to a do
begin
read(p);
if (p<=0) or (p>a) then
flag:=false;
end;
j:=2;
if flag=true then
for i:=1 to a do
while (flag=true) and (j<a) do
if p<>p[j] then
inc(j)
else
flag:=false;
 
Немножко причесал до ввода кода. На то, что надписи английские, не обращайте внимание: просто мне так удобнее.
Код:
var
 a,x,n,c,i,b,k,j:integer;
 s,s_new:String;
 Smb:Char;
 p:array[1..100] of integer;
 flag:boolean;


begin
 flag:=true;
 repeat
  writeln('Enter the number of symbols in string (<=100):');
  readln(n);
  if n>100 then writeln('Error!')
 until n<101;
 repeat
  writeln('Enter the string:');
  readln(s);
  if Length(s)<>n then writeln('Error!');
 until Length(s)=n;

 repeat
  writeln('Entel the block length "a" (1<a<n+1) and ((n mod a)=0)');
  readln(a);
  if (a<2) or (a>n) or ((n mod a)<>0) then writeln('Error!');
 until (a<=n) and (a>1) and ((n mod a)=0);


 writeln('Enter the code');
Теперь дальше.
Помогите исправить, что бы при вводе кода читались не только цифры, но и другие символы (что бы программа не вылетала)
Естественно, будет ругаться, раз вы определили массив p, как численный, а пытаетесь загнать в него "другие символы". Но чтобы отладить эту часть программы, желательно было бы получить разъяснение на словах о том, как формируется этот самый код. Из Вашей программы я этого, извините, понять не сумел.
 
Пожалуйста, хотя странно: единство в двух лицах? Еще исправил ошибку
Код:
until (a<=n) and (a>1) and ((n mod a)[COLOR=Red][B]=[/B][/COLOR]0);
И вопрос об алгоритме формирования кода остается в силе.
 
сама программа на шифровку и расшифровку, нужно что бы размер блока был кратен числу символов в строке и при вводе кода , можно было ввести любые символы, что бы программа не вылетала , а просто выдавала в конце (при запуске) ошибку, что она и делает , но только при вводе чисел
 
Так. Вместо внятного ответа на вопрос - пустой набор слов.
сама программа на шифровку и расшифровку
Спасибо, но это мало интересно.
нужно что бы размер блока был кратен числу символов в строке
Это понятно, тут вопросов нет.
и при вводе кода можно было ввести любые символы, что бы программа не вылетала , а просто выдавала в конце (при запуске) ошибку, что она и делает , но только при вводе чисел
А вот с этим попробуем разобраться. Правильно ли я понял задачу?
1. Код должен состоять ТОЛЬКО из цифр.
2. Если вводится символ, отличный от цифры, то сообщение об ошибке должно появиться не раньше окончания ввода всего кода.
3. Все цифры должны быть различными.

Отписками типа "на и подавись" прошу не утруждаться. Дайте точные ответы на поставленные вопросы.
 
Спасибо, большое за помощь. Я уже сама разобралась
 
Назад
Сверху