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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2012, 00:49   #1
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию Пропускает Readln(<string>)

Здравствуйте, друзья!
Возникла проблема
Немогу понять в чем дело

программа запускается и работает
вот только оператор readln(przv); просто игнорируется.

Последняя ошиббка в курсовой помогите плз...

Код:
procedure vuvzaprizv;
 var przv:string[20];
     k,i,ii:integer;
 begin
	k:=0;
	inmas;
    clrscr;
     writeln('ЙННННННННННННННННННННННННННННННННННННННННН»');
     writeln('є Vvedit prizvishe prazivnuka:            є');
     writeln('ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
     writeln('є                                         є');
     writeln('ИНННННННННННННННННННННННННННННННННННННННННј');
     gotoxy(3,4);
     
	 readln(przv);
	 
	 gotoxy(1,6);
	 writeln(ord(przv[0]));

readkey;
     
 end;
olololeg вне форума Ответить с цитированием
Старый 12.11.2012, 01:09   #2
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию

В С++ бьіла похожая проблемка..
Там спасла функция cin.sync();
Может и в Паскале есть чтото подобное?
olololeg вне форума Ответить с цитированием
Старый 12.11.2012, 07:25   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
procedure vuvzaprizv;
 var przv:string[20];
     k,i,ii:integer;
 begin
	k:=0;
	inmas;
    clrscr;
     writeln('ЙННННННННННННННННННННННННННННННННННННННННН»');
     writeln('є Vvedit prizvishe prazivnuka:            є');
     writeln('ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
     writeln('є                                         є');
     writeln('ИНННННННННННННННННННННННННННННННННННННННННј');
     gotoxy(3,4);
     
	 readln(przv);
         writeLn (przv);
	 
	 gotoxy(1,6); // ой, фи как не красиво
	 writeln(ord(przv[0]));

readkey;
     
 end;
Попробуйте так и посмотрите выводит ли строку вообще и не переходите ли вы ограничение в 20 символов.
Poma][a вне форума Ответить с цитированием
Старый 12.11.2012, 08:03   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Код:
 writeln(ord(przv[0]));
Нумерация строк в паскале начинается с единицы а не с нуля
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 12.11.2012, 08:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я думаю, что ошибка в другом...

чтобы точно идентифицировать причину/место ошибки, нужно:
1) привести текст программы ПОЛНОСТЬЮ!
где у Вас описание процедуры inmas, например ?..

2) укажите, каким компилятором Паскаля Вы пользуетесь. (TurboPascal/FreePascal/Delphi имеют отличия. я уже не говорю про всякие поделки типа Pascal ABC и иже с ним...)
я на 99% уверен, что у Вас именно TurboPascal, но хочу убедится в этом на 100%!


Цитата:
Сообщение от Luuzuk
Нумерация строк в паскале начинается с единицы а не с нуля
К нумерации элементов в строке данный код отношения не имеет. в нулевом байте строки находится её длина. Таким кодом можно вывести длину строки. (то же самое, что и Length() )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.11.2012, 10:47   #6
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию

Цитата:
Попробуйте так и посмотрите выводит ли строку вообще и не переходите ли вы ограничение в 20 символов.
Пробовал иечего не вьіводит.
ограничение я немог превьісить тк не вводил еще ету строку, в чем, собственно и заключается проблема.
да и writeln(ord(przv[0])); возвращает 0.

Цитата:
я думаю, что ошибка в другом...

чтобы точно идентифицировать причину/место ошибки, нужно:
1) привести текст программы ПОЛНОСТЬЮ!
где у Вас описание процедуры inmas, например ?..

2) укажите, каким компилятором Паскаля Вы пользуетесь. (TurboPascal/FreePascal/Delphi имеют отличия. я уже не говорю про всякие поделки типа Pascal ABC и иже с ним...)
я на 99% уверен, что у Вас именно TurboPascal, но хочу убедится в этом на 100%!
Компилятор tp7.
в процедуре inmas я считьіваю с файла в масив.

вот вся программа:
olololeg вне форума Ответить с цитированием
Старый 12.11.2012, 10:50   #7
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию

Код:
Program Cursova;
uses crt;
Type MSluzb=array[1..4] of string [20];
     Zapus=record
        tel:integer;
        osobu:MSluzb;
        nomer:longint;
        kil:integer;
     end;

var
   BOOK:file of zapus;
   n,diya:integer;
   baza:array[1..20] of zapus;
label
  exit,back;
Procedure inmas;
begin
  n:=0;
  reset(BOOK);
    while (not eof(BOOK)) do
	 begin
		n:=n+1;
		read(BOOK,baza[n])
	 end;
  close(BOOK);
end;

procedure infile;
 var i:integer;
 begin
   rewrite(book);
    for i:=1 to n do
      write(book,baza[i]);
   close(book);
 end;

procedure vuvid;
 var ii,i:integer;
 begin
 inmas;
   if n>0 then
       begin
         clrscr;
			writeln('ЙНННСНННННННННННСНННННННННННННННННСННННННННННННННННННННННННННН»');
			writeln('є # і Nomer tel.і   Nomer prim.   і    Prazivnuku ofisu:      є');
			writeln('МНННШНННННННННННШНННННННННННННННННШННННННННННННННННННННННННННН№');

         for i:=1 to n-1 do
         begin
			write('є ',i:2,'і     ');
        if(baza[i].tel<10)then write('0',baza[i].tel:1)  else write(baza[i].tel:2);
                  writeln('    і  ',baza[i].nomer:14,' і  ',baza[i].osobu[1]:22,'   є');
   		if (baza[i].kil>1)then
			for ii:=2 to baza[i].kil do
			writeln('є   і           і                 і  ',baza[i].osobu[ii]:22,'   є');
          writeln('ЗДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
         end;
			  write('є ',n:2,'і     ');
                if(baza[n].tel<10)then write('0',baza[n].tel:1)  else write(baza[n].tel:2);
                  writeln('    і  ',(baza[n].nomer):14,' і  ',baza[n].osobu[1]:22,'   є');
			if (baza[n].kil>1)then
			for ii:=2 to baza[n].kil do
			writeln('є   і           і                 і  ',baza[n].osobu[ii]:22,'   є');

      writeln('ИНННПНННННННННННПНННННННННННННННННПНННННННННННННННННННННННННННј');
       end
       else writeln('zapusu vidsutni');readkey;

 end;
 
 
Procedure addvp;
  var i:integer;
  begin
  inmas;
  n:=n+1;
  for i:=n downto 2 do
	      baza[i]:=baza[i-1];
    clrscr;
    writeln('ЙННННННННННННННННННННННННННННННННННННННЛНН»');
    writeln('є ‚ўҐ¤iвм *®¬Ґа ⥫Ґд®*г(¤ў®е§**з*Ё©): є  є');
    writeln('ИННННННННННННННННННННННННННННННННННННННКННј');
    gotoxy(41,2);
    readln(baza[1].tel);
    if (baza[1].tel>99)or(baza[1].tel<0) then
     begin
       gotoxy(1,4);
       Write('Vu vvelu nepravilnij nomer');
       gotoxy(41,2);write('  є                               ');
	   gotoxy(41,2);readln(baza[1].tel);
     end;
     clrscr;

    writeln('ЙННННННННННННННННННННННННННННННЛНННННННННН»');
    writeln('є Vvedit nomer prim.:          є          є');
    writeln('ИННННННННННННННННННННННННННННННКННННННННННј');
    gotoxy(33,2);
    readln(baza[1].nomer);

    clrscr;
    writeln('ЙННННННННННННННННННННННННННННННННННННННЛНН»');
    writeln('є Vvtlit kilkist przivnikiv (1-4):     є  є');
    writeln('ИННННННННННННННННННННННННННННННННННННННКННј');
    gotoxy(41,2);
    readln(baza[1].kil);
    if (baza[1].kil>4)or(baza[1].kil<1) then
     begin
       gotoxy(1,4);
       writeln('Vvedit korektnu kilkist!');
       gotoxy(41,2);write('  є                               ');
	   gotoxy(41,2);readln(baza[1].kil);
     end;

  for i:=1 to baza[1].kil do
   begin
   clrscr;
     writeln('ЙННННННННННННННННННННННННННННННННННННННННН»');
     writeln('є Vvedit prizvishe ',i,'-go prazivnuka:       є');
     writeln('ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
     writeln('є                                         є');
     writeln('ИНННННННННННННННННННННННННННННННННННННННННј');
     gotoxy(3,4);
     readln(baza[1].osobu[i]);

     clrscr;
   end;
  infile;

end;
olololeg вне форума Ответить с цитированием
Старый 12.11.2012, 10:52   #8
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию

Код:
Procedure addvk;
  var i:integer;
  begin
  inmas;
  n:=n+1;
    clrscr;
    writeln('ЙННННННННННННННННННННННННННННННННННННННЛНН»');
    writeln('є ‚ўҐ¤iвм *®¬Ґа ⥫Ґд®*г(¤ў®е§**з*Ё©): є  є');
    writeln('ИННННННННННННННННННННННННННННННННННННННКННј');
    gotoxy(41,2);
    readln(baza[n].tel);
    if (baza[n].tel>99)or(baza[n].tel<0) then
     begin
       gotoxy(1,4);
       Write('Vu vvelu nepravilnij nomer');
       gotoxy(41,2);write('  є                               ');
	   gotoxy(41,2);readln(baza[n].tel);
     end;
     clrscr;

    writeln('ЙННННННННННННННННННННННННННННННЛНННННННННН»');
    writeln('є Vvedit nomer prim.:          є          є');
    writeln('ИННННННННННННННННННННННННННННННКННННННННННј');
    gotoxy(33,2);
    readln(baza[n].nomer);

    clrscr;
    writeln('ЙННННННННННННННННННННННННННННННННННННННЛНН»');
    writeln('є Vvtlit kilkist przivnikiv (1-4):     є  є');
    writeln('ИННННННННННННННННННННННННННННННННННННННКННј');
    gotoxy(41,2);
    readln(baza[n].kil);
    if (baza[n].kil>4)or(baza[n].kil<1) then
     begin
       gotoxy(1,4);
       writeln('Vvedit korektnu kilkist!');
       gotoxy(41,2);write('  є                               ');
	   gotoxy(41,2);readln(baza[n].kil);
     end;

  for i:=1 to baza[n].kil do
   begin
   clrscr;
     writeln('ЙННННННННННННННННННННННННННННННННННННННННН»');
     writeln('є Vvedit prizvishe ',i,'-go prazivnuka:       є');
     writeln('ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
     writeln('є                                         є');
     writeln('ИНННННННННННННННННННННННННННННННННННННННННј');
     gotoxy(3,4);
     readln(baza[n].osobu[i]);

     clrscr;
   end;
  infile;

end;

procedure del;
 label
   again,again2;
 var
   umova:longint;
   ii,i,tn,k:integer;
 begin
    again: clrscr;
    writeln('ЙННННННННННННННННННННННННННННННЛНННННННННН»');
    writeln('є Vvedit nomer prim.:          є          є');
    writeln('ИННННННННННННННННННННННННННННННКННННННННННј');
    gotoxy(33,2);
    readln(umova);
	k:=0;
   again2:
   clrscr;
   inmas;
   for i:=1 to n do
    if (baza[i].nomer = umova) then
	begin
	 k:=k+1;
	 gotoxy(1,5);
	 writeln('Znaideno zapus:');
	 writeln('ЙНННСНННННННННННСНННННННННННННННННСННННННННННННННННННННННННННН»');
	 writeln('є # і Nomer tel.і   Nomer prim.   і    Prazivnuku ofisu:      є');
	 writeln('МНННШНННННННННННШНННННННННННННННННШННННННННННННННННННННННННННН№');
     write('є ',i:2,'і     ');
        if(baza[i].tel<10)then write('0',baza[i].tel:1)  else write(baza[i].tel:2);
                  writeln('    і  ',(baza[i].nomer):14,' і  ',baza[i].osobu[1]:22,'   є');
   		if (baza[i].kil>1)then
			for ii:=2 to baza[i].kil do
			writeln('є   і           і                 і  ',baza[i].osobu[ii]:22,'   є');

	 writeln('ИНННПНННННННННННПНННННННННННННННННПНННННННННННННННННННННННННННј');
	 write('Vudalutu?(1-tak/0-ni) ');
	 readln(tn);
	 if tn=1 then
	   for ii:=i to n do
	      baza[ii]:=baza[ii+1];
		n:=n-1;
		infile;
		goto again2;
	end;
	  if (k=0) then
     begin
       gotoxy(1,4);
       writeln('Zapusiv ne znaideno.');
       readkey;goto again;
     end;
	
  vuvid;
 end;
olololeg вне форума Ответить с цитированием
Старый 12.11.2012, 11:02   #9
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию

Код:
procedure vpor;
 var temp:zapus;
	i,j:integer;
 begin
	inmas;
	for j:=1 to n-1 do 
	 for i:=1 to n-j do
      if baza[i].nomer>baza[i+1].nomer then	 
	   begin
	     temp:=baza[i+1];
		 baza[i+1]:=baza[i];
		 baza[i]:=temp;
	   end;
	infile;
	vuvid;
 end;

procedure vuvzatel;
 var tel:integer;
     k,i,ii:integer;
 begin
	k:=0;
    clrscr;
    writeln('ЙННННННННННННННННННННННННННННННННННННННЛНН»');
    writeln('є ‚ўҐ¤iвм *®¬Ґа ⥫Ґд®*г(¤ў®е§**з*Ё©): є  є');
    writeln('ИННННННННННННННННННННННННННННННННННННННКННј');
    gotoxy(41,2);
    readln(tel);
    if (tel>99)or(tel<0) then
     begin
       gotoxy(1,4);
       Write('Vu vvelu nepravilnij nomer');
       gotoxy(41,2);write('  є                               ');
	   gotoxy(41,2);readln(tel);
     end;
	 clrscr;
	 writeln('Znaideno zapus:');
		writeln('');
			writeln('ЙНННСНННННННННННСНННННННННННННННННСННННННННННННННННННННННННННН»');
			writeln('є # і Nomer tel.і   Nomer prim.   і    Prazivnuku ofisu:      є');
			writeln('МНННШНННННННННННШНННННННННННННННННШННННННННННННННННННННННННННН№');
	inmas;
	for i:=1 to n do
	 if baza[i].tel=tel then
	  begin
	    k:=k+1;
		
        write('є ',i:2,'і     ');
        if(baza[i].tel<10)then write('0',baza[i].tel:1)  else write(baza[i].tel:2);
                  writeln('    і  ',(baza[i].nomer):14,' і  ',baza[i].osobu[1]:22,'   є');
   		if (baza[i].kil>1)then
			for ii:=2 to baza[i].kil do
			writeln('є   і           і                 і  ',baza[i].osobu[ii]:22,'   є');
          writeln('ЗДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
	  end; 
	     writeln('ИНННПНННННННННННПНННННННННННННННННПНННННННННННННННННННННННННННј');

	if k=0 then
	   begin
	     clrscr;
         Write('Zapusiv ne znaideno.');
	   end;
       readkey;
     
 end;  
 procedure vuvzanom;
 var nom:longint;
     k,i,ii:integer;
 begin
	k:=0;
    clrscr;
    writeln('ЙННННННННННННННННННННННННННННННЛНННННННННН»');
    writeln('є Vvedit nomer prim.:          є          є');
    writeln('ИННННННННННННННННННННННННННННННКННННННННННј');
    gotoxy(33,2);
    readln(nom);
	 clrscr;
	 writeln('Znaideno zapus:');
		writeln('');
			writeln('ЙНННСНННННННННННСНННННННННННННННННСННННННННННННННННННННННННННН»');
			writeln('є # і Nomer tel.і   Nomer prim.   і    Prazivnuku ofisu:      є');
			writeln('МНННШНННННННННННШНННННННННННННННННШННННННННННННННННННННННННННН№');
	inmas;
	for i:=1 to n do
	 if baza[i].nomer=nom then
	  begin
	    k:=k+1;		
        write('є ',i:2,'і     ');
        if(baza[i].tel<10)then write('0',baza[i].tel:1)  else write(baza[i].tel:2);
                  writeln('    і  ',(baza[i].nomer):14,' і  ',baza[i].osobu[1]:22,'   є');
   		if (baza[i].kil>1)then
			for ii:=2 to baza[i].kil do
			writeln('є   і           і                 і  ',baza[i].osobu[ii]:22,'   є');
          writeln('ЗДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
	  end; 
	     writeln('ИНННПНННННННННННПНННННННННННННННННПНННННННННННННННННННННННННННј');

	if k=0 then
	   begin
	     clrscr;
         Write('Zapusiv ne znaideno.');
	   end;
       readkey;
     
 end;   
 
procedure vuvzaprizv;
 var przv:string[20];
     k,i,ii:integer;
 begin
	k:=0;
	inmas;
    clrscr;
     writeln('ЙННННННННННННННННННННННННННННННННННННННННН»');
     writeln('є Vvedit prizvishe prazivnuka:            є');
     writeln('ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
     writeln('є                                         є');
     writeln('ИНННННННННННННННННННННННННННННННННННННННННј');
     gotoxy(3,4);

	 readln(przv);
	 {
	 gotoxy(1,6);
	 writeln(przv);
	 writeln(ord(przv[0]));
	 }


	 clrscr;
	 writeln('Znaideno zapus:');
		writeln('');
			writeln('ЙНННСНННННННННННСНННННННННННННННННСННННННННННННННННННННННННННН»');
			writeln('є # і Nomer tel.і   Nomer prim.   і    Prazivnuku ofisu:      є');
			writeln('МНННШНННННННННННШНННННННННННННННННШННННННННННННННННННННННННННН№');
	inmas;
	for i:=1 to n do
	 if (baza[i].osobu[1]=przv)or(baza[i].osobu[2]=przv)or(baza[i].osobu[3]=przv)or(baza[i].osobu[4]=przv) then
	  begin
	    k:=k+1;
        write('є ',i:2,'і     ');
        if(baza[i].tel<10)then write('0',baza[i].tel:1)  else write(baza[i].tel:2);
                  writeln('    і  ',(baza[i].nomer):14,' і  ',baza[i].osobu[1]:22,'   є');
   		if (baza[i].kil>1)then
			for ii:=2 to baza[i].kil do
			writeln('є   і           і                 і  ',baza[i].osobu[ii]:22,'   є');
          writeln('ЗДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДД¶');
	  end; 
	     writeln('ИНННПНННННННННННПНННННННННННННННННПНННННННННННННННННННННННННННј');

	if k=0 then
	   begin
	     clrscr;
         Write('Zapusiv ne znaideno.');
	   end;
       readkey;
     
 end;
olololeg вне форума Ответить с цитированием
Старый 12.11.2012, 11:11   #10
olololeg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 12
По умолчанию

И вот собственно программа

П.С. что с форумом ? пол часа уже мучаюсь
ответ нужен срочно сегодня курсовуюб сдаю...(

Код:
BEGIN
assign(BOOK,'D:\FILE.bin');
back:clrscr;

while(true) do begin
writeln;
     writeln('Vvedit nomer komandu:');
      writeln(' 1:Vivedennya danuh');
      writeln(' 2:Dodatu zapus v pochatok');
	  writeln(' 3:Dodatu zapus v kinets');
      writeln(' 4:Vudalennya zapusy');
      writeln(' 5:Vporyadkuvaty');
	  writeln(' 6:Vuvid za umovou');
      writeln(' 0:Vuhid');
     read(diya);
     

     case diya of
     1:vuvid;
     2:addvp;
	 3:addvk;
     4:del;
     5:vpor;
	 6:begin
		clrscr;
		writeln('Vvedit nomer komandu:');
        writeln(' 1:Za telefonom');
        writeln(' 2:Za primischennyam');
	    writeln(' 3:Za prizvischem');
		writeln(' 0:Nazad');
		read(diya);
		case diya of
		1:vuvzatel;
		2:vuvzanom;
		3:vuvzaprizv;
		0:goto back;
        end;
	   end;
     0:goto exit;
     end;
clrscr;
     end;
exit:
END.
olololeg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Паскалем пропускает ввод Veor12 Паскаль, Turbo Pascal, PascalABC.NET 3 22.10.2011 11:46
Цикл For c TsCheckBox пропускает значения 0 2 3 ... ArtGrek Общие вопросы Delphi 7 30.01.2011 12:43
FindFirstFile не пропускает папки Nitrino Win Api 2 20.06.2010 20:03
Почему первый байт пропускает? FantomasRUS Общие вопросы Delphi 2 12.05.2010 21:36
Функция, которая пропускает выходные. jungo Microsoft Office Excel 12 25.06.2008 08:59