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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 13:25   #1
Hitmax
 
Регистрация: 13.01.2010
Сообщений: 3
По умолчанию Паскаль - просьба о вводе символа заново

Помогите исправить ошибки..
Здесь я пытался сделать так, чтобы при вводе не того символа программа не вылетала, а попросила ввести символ ещё раз

Program Maxim;
uses crt;
var a:array[1..3] of string;
b:array[1..3,1..3] of integer;
i,j:integer;
P,C: integer;
e,h,q:string;

begin
ClrScr;
for i:= 1 to 3 do
begin
repeat
write('Nazvanie predmeta: ');
readln(a[i]);
str (a[i],h,q)
if q<>e then Writeln('Nepravelniy vvod!);
until
for j:= 1 to 3 do
begin
repeat
write('Ocenca ',j,' : ');
readln(b[i,j]);
val (b[i,j],p,c)
if C<>0 then Writeln(''Nepravelniy vvod!);
until C = 0;
end;
end;
writeln;
writeln('Stydent || Stydent 1 || Stydent 2|| Stydent 3 || Sredniy bal');
for i:=1 to 3 do
writeln(a[i],' ',b[i,1],' ',b[i,2]
,' ',b[i,3],' ',
(b[i,1]+b[i,2]+b[i,3])/3:1:1);
writeln;
writeln('Sredniy bal: ',(b[1,1]+b[2,1]+b[3,1])/3:1:1,' ',
(b[1,2]+b[2,2]+b[3,2])/3:1:1,' ',
(b[1,3]+b[2,3]+b[3,3])/3:1:1);
readln;
end.


Здесь рабочий вариант этой программы:

Program Maxim;
uses crt;
var a:array[1..3] of string;
b:array[1..3,1..3] of integer;
i,j:integer;
begin
ClrScr;
for i:= 1 to 3 do
begin
write('Nazvanie predmeta: ');
readln(a[i]);
for j:= 1 to 3 do
begin
write('Stydent ',j,' : ');
readln(b[i,j]);
end;
end;
writeln;
writeln('Stydent || Stydent 1 || Stydent 2|| Stydent 3 || Sredniy bal');
for i:=1 to 3 do
writeln(a[i],' ',b[i,1],' ',b[i,2]
,' ',b[i,3],' ',
(b[i,1]+b[i,2]+b[i,3])/3:1:1);
writeln;
writeln('Sredniy bal: ',(b[1,1]+b[2,1]+b[3,1])/3:1:1,' ',
(b[1,2]+b[2,2]+b[3,2])/3:1:1,' ',
(b[1,3]+b[2,3]+b[3,3])/3:1:1);
readln;
end.

Помогите пожалуйста!!!!!!

Последний раз редактировалось Hitmax; 14.01.2010 в 13:39.
Hitmax вне форума Ответить с цитированием
Старый 14.01.2010, 14:12   #2
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

"е" это что за переменная?
для предмета какой ввод считается неправильным?
Alex_FF вне форума Ответить с цитированием
Старый 14.01.2010, 14:21   #3
Hitmax
 
Регистрация: 13.01.2010
Сообщений: 3
По умолчанию

ну если значение "q" не равно ("e"-String -тоесть букве или слову), то пишет неправильный ввод.

для предмета- цифровой или символьный, нужно чтобы при вводе придмето вводились только буквы, а если вводились символы или цифры то программа не вылетала, а написала"неверный ввод".
Так и для оценки, если вводишь буквы, то она тоже не должна вылетать...
Hitmax вне форума Ответить с цитированием
Старый 14.01.2010, 14:37   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Код:
Program Maxim;
uses crt;
var a:array[1..3] of string;
b:array[1..3,1..3] of integer;
i,j:integer;
F: Boolean;
begin
ClrScr;
for i:= 1 to 3 do
begin
F := False;
repeat
if F then WriteLn('Nevernij vvod. Poprobuite snova');
F := False;
write('Nazvanie predmeta: ');
readln(a[i]);
for J := 1 to Length(a[i]) do
  if not (Upcase(a[i][j]) in ['A'..'Z']) then F := True;
until not F;
for j:= 1 to 3 do
begin
F := False;
repeat
if F then WriteLn('Nevernij vvod. Poprobuite snova');
write('Stydent ',j,' : ');
{$I-}
readln(b[i,j]);
{$I+}
F := True;
until (IOResult = 0) and (b[i][j] >= 2) and (b[i][j] <= 5);
end;
end;
writeln;
writeln('Stydent || Stydent 1 || Stydent 2|| Stydent 3 || Sredniy bal');
for i:=1 to 3 do
writeln(a[i],' ',b[i,1],' ',b[i,2]
,' ',b[i,3],' ',
(b[i,1]+b[i,2]+b[i,3])/3:1:1);
writeln;
writeln('Sredniy bal: ',(b[1,1]+b[2,1]+b[3,1])/3:1:1,' ',
(b[1,2]+b[2,2]+b[3,2])/3:1:1,' ',
(b[1,3]+b[2,3]+b[3,3])/3:1:1);
readln;
end.
хотя в названии предметов могут быть еще и пробелы, поэтому лучше написать
if not (Upcase(a[i][j]) in ['A'..'Z', ' ']) then F := True;
но тогда нужно еще проверять, чтобы в слове кроме пробелов еще что-то было.

Последний раз редактировалось Alex_FF; 14.01.2010 в 14:41.
Alex_FF вне форума Ответить с цитированием
Старый 14.01.2010, 15:07   #5
Hitmax
 
Регистрация: 13.01.2010
Сообщений: 3
По умолчанию

Спасибо БОЛЬШОЕ!!! У меня всё работает!!!
Hitmax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический поиск в DBGrid при вводе символа в Edit Irina_87 БД в Delphi 12 12.12.2009 03:53
Перезагрузка программы (Запуск заново) Gapro Общие вопросы Delphi 7 18.10.2009 12:03
Каждый раз присваивает заново V@mpir Общие вопросы Delphi 4 10.06.2009 18:29
Как заставить клиентский сокет заново подключится к серверу Vadik(R) Работа с сетью в Delphi 6 01.11.2008 14:30
Для установки второго и последующих сайтов нужно заново покупать лицензию, Это реально? liberty HTML и CSS 10 14.10.2008 10:47