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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2007, 00:22   #1
Farfalla
 
Регистрация: 20.12.2007
Сообщений: 6
Восклицание Задачка на массивы. Проверка и нумерация.

Нужно:
- чтобы вводимые элементы были пронумерованы
- чтобы была проверка на буквы
- чтобы при ошибке ввод новых элементов не накладывался на сообщение об ошибке

Заранее спасибо.

Код:
program delenie;
uses crt;
var
  a: array [1..30] of integer;
  m: array [1..30] of integer;
  I,n: integer;
  ch: char;
  Error: integer;
Label L1, L2 ;
begin
clrscr;
 textbackground (Green);
 textcolor (yellow);
 gotoxy (20,1) ;
 writeln('Вашему вниманию предоставлятся программа,');
 gotoxy (20,2) ;
 writeln('которая формирует новый массив');
 gotoxy (20,3) ;
 writeln('из элементов исходного массива.');
 gotoxy (40,12) ;
 writeln('Программу составила студентка');
 gotoxy (40,13) ;
 writeln('');
 gotoxy (49,14) ;
 writeln('') ;
 gotoxy (40,15) ;
 writeln('г.Москва, 16.12.2007') ;
 gotoxy (20,24);
 writeln('нажмите любую клавишу для продолжения');
 Ch:=readkey;
L1:
 ClrScr;
 Begin
 ClrScr;
      Repeat
	Writeln('Введите количество элементов в интервале');
	gotoxy (51,1) ;
	write ('от 2 до 30...') ;
	{$I-}
	Readln(N) ;
	 Error:=IOResult;
	 {SI+}
	 If (N<2) or (N>30) or (Error<>0) then
	 Writeln('Неверно задано количество элементов массива! Повторите ввод!');
	 Until (N>=2) and (N<=30) and (Error=0);
	 writeln;
	 Writeln('Исходный массив С:');
	 For i:=1 to n do
 begin
   readln(a[i]);
   if a[i]/5<>round(a[i]/5) then m[i]:=2;
   if a[i]/10=round(a[i]/10) then m[i]:=1;
   end;

  writeln ('');
  writeln('Результатный массив CI:');
   for i:=1 to n do
     if m[i]=1 then
     write (a[i],',');
     for i:=1 to n do
     if m[i]=2 then
     write (a[i],',');
     ch:= readkey;
 end;

    writeln;
    writeln('Повторить? (Y-Да, N-Нет)') ;
 L2:
      Case Readkey of
      #89: Goto L1;
      #121: Goto L1;
      #78:Exit;
      #110:Exit
    end;
    Goto L2;
end.

Последний раз редактировалось Farfalla; 26.12.2007 в 00:25.
Farfalla вне форума Ответить с цитированием
Старый 26.12.2007, 11:31   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Попробуйте сделать так. Просто нужные куски вставьте на место.
И упростите немного код, выкиньте из него все лишнее.
Код:
program delenie;
uses crt;
var a,m:array[1..30]of integer;
    i,n:integer;
    ch:char;
   label l1,l2;
begin
clrscr;
l1:
 clrscr;
 writeln('Введите количество элементов в интервале от 2 до 30');
 write('n=');
//Проверка на правильность ввода символов ("букв").
 if (readkey<#48)or(readkey>#57)  then begin
 writeln('Введен неверный символ! Повторите ввод!');readln;goto l1; end
 else readln(n);
//Проверка на правильность диапазона
 if (n<2) or (n>30) then begin
 writeln('Неверно задано количество элементов массива! Повторите ввод!');
 readln;goto l1;end;
 writeln;
//Ввод элементов мвссива с нумерацией.
 writeln('Исходный массив:');
 for i:=1 to n do
    begin
      write('a[',i,']=');readln(a[i]);
    end;
 end.
puporev вне форума Ответить с цитированием
Старый 27.12.2007, 00:52   #3
Farfalla
 
Регистрация: 20.12.2007
Сообщений: 6
По умолчанию

Я сделала немного по-другому, но у меня там выскакивает все равно еще один ввод, который идет после основного, а он там совершенно не нужен.
Срочно это нужно исправить. Не могу найти в коде ошибку.

Код:
program delenie;
uses crt;
var
  a: array [1..30] of integer;
  m: array [1..30] of integer;
  I,n: integer;
  ch: char;
  d, g: byte;
  Error: integer;
Label L1, L2 ;
begin
clrscr;
 textbackground (Green);
 textcolor (yellow);
 gotoxy (20,1) ;
 writeln('Вашему вниманию предоставлятся программа,');
 gotoxy (20,2) ;
 writeln('которая формирует новый массив');
 gotoxy (20,3) ;
 writeln('из элементов исходного массива.');
 gotoxy (40,12) ;
 writeln('Программу составила студентка');
 gotoxy (40,13) ;
 writeln('');
 gotoxy (49,14) ;
 writeln('') ;
 gotoxy (40,15) ;
 writeln('г.Москва, 16.12.2007') ;
 gotoxy (20,24);
 writeln('нажмите любую клавишу для продолжения');
 Ch:=readkey;
L1:
 ClrScr;
 BEGIN
	ClrScr;
	d:=wherex;
	G:=wherex;
	Repeat
	Writeln('Введите количество элементов в интервале');
	gotoxy (51,1) ;
	textcolor (215) ;
	write ('от 2 до 100...') ;
	textcolor (15) ;
        Readln(N) ;
	 Error:=IOResult;
         If (N<2) or (N>100) or (Error<>0) then
	 Writeln('Неверно задано количество элементов массива! Повторите ввод!');
	 Until (N>=2) and (N<=100) and (Error=0);
         Writeln;
         writeln('Исходный массив С:') ;
         For i:=1 to n do
         begin
	   repeat
           Write('A[',I,']:=');
           readln (a[i]) ;
            Error:=IOResult;
            if (A[i]>10000) and (A[i]<=-10000) and (error<>0) then
            writeln('Повторите ввод элемента:') ;
            until (A[i]<=10000) and (A[i]>=-10000) and (Error=0) ;
         End;
           
  begin
   readln(a[i]);
   if a[i]/5<>round(a[i]/5) then m[i]:=2;
   if a[i]/10=round(a[i]/10) then m[i]:=1;
  end;

  writeln;
  writeln('Результатный массив CI:');
   for i:=1 to n do
     if m[i]=1 then
     write (a[i],',');
     for i:=1 to n do
     if m[i]=2 then
     write (a[i],',');
     ch:= readkey;
 end;

    writeln;
    writeln('Повторить? (Y-Да, N-Нет)') ;
 L2:
      Case Readkey of
      #89: Goto L1;
      #121: Goto L1;
      #78:Exit;
      #110:Exit
    end;
    Goto L2;
end.
Farfalla вне форума Ответить с цитированием
Старый 27.12.2007, 08:53   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Хотите делать по своему, делайте. Мне по два раза рыться в вашем коде нет времени. В приложении нормально работающая программа. Ошибку у себя ищите сами. Еще раз советую, выкиньте из кода лишнее.
Вложения
Тип файла: rar FARTALLA.rar (822 байт, 11 просмотров)
puporev вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нумерация страниц Александр Microsoft Office Word 3 09.01.2009 14:22
Нумерация в Richtextbox C# 2005 student1234 Общие вопросы .NET 0 29.08.2008 21:48
нумерация страниц chern Microsoft Office Word 3 10.05.2008 14:06
Нумерация строк в RaveReport D7_beginner БД в Delphi 0 21.12.2007 12:23
Нумерация строк в Memo Макс84 Компоненты Delphi 10 02.04.2007 17:10