Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Gabdra
1 / 1 / 2
Регистрация: 23.12.2013
Сообщений: 112
#1

Защита от неправильного ввода при заполнении массива

26.12.2013, 19:13. Просмотров 373. Ответов 1
Метки нет (Все метки)

Хочу чтобы, когда я ввел буквы вышло 'Ошибка', я сделал это через val, без проверки всё работает, 9 цифр ввожу, а вот щас после val приходится вводить 10 цифр и 1 цифра не засчитывается,потому что массив 3 на 3.
Что нужно сделать?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
program z7;
const n=3;
var a:array[1..n,1..n] of integer;
    p,t1,i,j,k,ko:integer; t:string;
    b,ev,od:array[1..2*n] of integer;
begin
     writeln('Введите массив:');
     
readln(t);
     val(t,t1,p);
     if p>0 then writeln('Ошибка') else begin
     
k:=0;
     for i:=1 to n do
         for j:=1 to n do
         begin
              read(a[i,j]);
              if  a[i,j]<0 then begin k:=k+1; b[k]:=a[i,j]; end;
         end;
     writeln('Массив A:');
     for i :=1 to n do
     begin
          for j :=1 to n do
              write ( a [ i , j ]:4);
          writeln ;
     end ;
     writeln;
     writeln('Массив отрицательных элементов массива А:');
     for i:=1 to k do
         write(b[i]:4);
     k:=0;
     ko:=0;
     for i:=1 to n do
         for j:=1 to n do
         begin
             if odd(a[i,j]) then begin k:=k+1; od[k]:=a[i,j]; end;
             if not odd(a[i,j])  then begin ko:=ko+1; ev[ko]:=a[i,j]; end;
         end;
     writeln;
     writeln('Массив нечетных элементов массива A:');
     for i:=1 to k do
         write(od[i]:4);
     writeln;
     writeln('Массив четных элементов массива A:');
     for i:=1 to ko do
         write(ev[i]:4);
end;end.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 19:13
Ответы с готовыми решениями:

При вводе неправильного значения для N вывести сообщение об ошибке
Дано натуральное число N.Найти p=1*2*...*N.При вводе неправильного значения для...

Защита от ввода неверного типа данных
Помогите пожалуйста написать код, чтобы программа выполнялась только при вводе...

Обработка двумерного массива. Защита от неправильного ввода
Заполнить двумерный массив размерности n*m с клавиатуры только числами кратными...

Защита от неправильного ввода
Приветствую, делаю контрольную работу по программированию, основное задание...

Использование функций и защита от неправильного ввода
Написать функцию для вычитания из первой дроби второй. Результат должен быть...

1
Cyborg Drone
Модератор
5273 / 3140 / 2440
Регистрация: 17.08.2012
Сообщений: 10,112
26.12.2013, 20:40 #2
Вы куда проверку-то влепили, и, главное, для чего? Она должна проверять каждый элемент массива. Было бы куда яснее, если бы Вы отформатировали код. Вот, подправил, кое-что добавил для красоты и понятности, сделал нормальную проверку ввода. И, блин, код Ваш отформатировал наконец!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
program z7;
 
const n = 3;
 
var a: array [1..n,1..n] of integer;
    p, t1, i, j, k, ko: integer;
    t: string;
    b, ev, od: array [1..2*n] of integer;
 
begin
  writeln('Введите массив:');
  k := 0;
  for i := 1 to n do
    for j := 1 to n do
      begin
        repeat
          write('a[', i, ', ', j, '] = ');
          readln(t);
          val(t, t1, p);
          if p > 0 then writeln('Ошибка, повторите ввод.')
        until p = 0;
        a[i, j] := t1;
        if a[i, j] < 0 then
          begin
            k := k + 1;
            b[k] := a[i, j]
          end;
      end;
  writeln('Массив A:');
  for i := 1 to n do
    begin
      for j :=1 to n do write (a[i, j]:4);
      writeln
    end;
  writeln;
  writeln('Массив отрицательных элементов массива А:');
  if k > 0
    then for i := 1 to k do write(b[i]:4)
    else write('Отрицательных элементов нет.');
  k := 0;
  ko := 0;
  for i := 1 to n do
    for j := 1 to n do
      begin
        if odd(a[i,j])
          then
            begin
              k := k + 1;
              od[k] := a[i, j]
            end
          else
            begin
              ko := ko + 1;
              ev[ko] := a[i, j]
            end
      end;
  writeln;
  writeln('Массив нечетных элементов массива A:');
  if k > 0
    then for i := 1 to k do write(od[i]:4)
    else write('Нечетных элементов нет.');
  writeln;
  writeln('Массив четных элементов массива A:');
  if ko > 0
    then for i := 1 to ko do write(ev[i]:4)
    else write('Четных элементов нет.');
  readln
end.
Всего Вам доброго.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 20:40

Защита от неправильного ввода "Защита от дурака"
Ввести элементы массива размерностью N&gt;100; Предусмотреть защиту на каждый...

Как при вводе неправильного e-mail вывести сообщение рядом с полем ввода?
Здравствуйте! Я в области web - программирования совсем новичок :( если кто...

Зашита от неправильного ввода
Здравствуйте! Подскажите пожалуйста как ограничить возможность ввода ? Ну к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru