Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

"Редактирование" массива используя Turbo Pascal

66K
17 января 2011 года
BROTHERFATHER
1 / / 17.01.2011
Ребята, тут такая у меня проблемка возникла. Надо написать проверку, т.е. когда пытаешься ввести буквы, он тебе пишет что-то типа "Нельзя вводить буквы. Повторите ввод" и в другом месте "Нельзя вводить цифры. Повторите ввод". Просто что-то я уже замучился.
Нужно сделать проверку для
writeln ('Введите количество деталей');
а также для Writeln ('Название: ');
readln (Massiv.imya);
Writeln ('Стоимость: ');
readln (Massiv.st); для них двоих.
Код:
program Praktika;
uses crt;
type rec=record
imya:string[15];
st:real;
end;
var Massiv,t:Array[1..100] of rec;
    i,n:integer;
    flag:boolean;
begin
clrscr;
 textcolor(yellow);
 textbackground(DarkGray);
 window(25,8,66,18);
 clrscr;
repeat
writeln ('Введите количество деталей');
readln(n);
if (n=0) or (n<0) then begin
writeln ('Ошибка ввода! Введите положительное число.');
end;
until n>0;
For i:=1 to n do
Begin
writeln('---------------------------');
writeln('-',i,'(Деталь)');
writeln('---------------------------');
Writeln ('Название: ');
readln (Massiv.imya);
Writeln ('Стоимость: ');
readln (Massiv.st);
end;
writeln;
clrscr;
write('Сортировка по стоимости');
repeat
flag:=true;
for i:=1 to n-1 do
if Massiv.st>Massiv[i+1].st then
begin
t[1].st:=Massiv.st;
Massiv.st:=Massiv[i+1].st;
Massiv[i+1].st:=t[1].st;
t[1].imya:=Massiv.imya;
Massiv.imya:=Massiv[i+1].imya;
Massiv[i+1].imya:=t[1].imya;
flag:=false;
end;
until flag=true;
writeln;
writeln('----------------------');
for i:=1 to n do
begin
writeln('| ',i,'.',Massiv.imya:10,' | ',Massiv.st:5,' |');
writeln('----------------------');
end;
writeln;
writeln ('Сортировка по алфавиту');
repeat
flag:=true;
for i:=1 to n-1 do
if Massiv.imya>Massiv[i+1].imya then
begin
t[1].imya:=Massiv.imya;
Massiv.imya:=Massiv[i+1].imya;
Massiv[i+1].imya:=t[1].imya;
t[1].st:=Massiv.st;
Massiv.st:=Massiv[i+1].st;
Massiv[i+1].st:=t[1].st;
flag:=false;
end;
until flag=true;
writeln('----------------------');
for i:=1 to n do
begin
writeln('| ',i,'.',Massiv.imya:10,' | ',Massiv.st:5,' |');
writeln('----------------------');
end;
readln;
end.


А еще нужно сделать окно с выводом на экран с след. текстом:
"Автор программы: "
"Государственного образовательного учреждения"
'Колледжа Электроники и Бизнеса'
"*** Государственного Университета"
"Проверила: "
"Для перехода в другое окно нажмите - Enter..."

Помоги, кто может. Заранее спасибо.
8.9K
21 января 2011 года
Apach47
130 / / 14.06.2010
Тут вообщем идея такова: определяешь переменную, которую заполняет юзверь с клавиатуры, затем проверяешь все символы в этой переменной по таблице ASCII. Если все символы переменной лежат в нужном тебе диапазоне - продолжаешь выполнение программы, если нет - уничтожаешь содержание переменной и просишь пользователя повторить ввод. Как изобразить это на паскале подсказать не могу, забыл его уже))

В С++ к примеру, любой char-символ имеет свой цифровой код от 0 до 255. Там бы я проверял как-то так:
Код:
string str;
bool flag;
do{
  cout << "Please input the string: ";
  cin >> str;
  for( int i =0; i < str.size() -1; i++)
    flag = false;
    for( int k = N; k < M; k++)
      if( str == k )
      { flag = true; break; }
    if( flag == false ) break;
} while( !flag );


N - с номера какого ASCII символа начинать перебор
M - на номере какого ASCII символа закончить перебор

P.S.: за безошибочность не ручаюсь))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог