Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 06.06.2013, 09:26   #1 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Сделать программу работоспособной

У меня возникла проблема с модулем и с основной программой.(Turbo Pascal)
1-я ошибка, когда компоную модуль(Error 22:Structure too large) в массиве (см.1 картинка). Исправляю до 1..50 элементов модуль компонуется. Всё нормально.
Потом перехожу в программу.(Error 3:Unknown identifier)там где я использую AddStud (см.2 картинка)
В чём проблема? Помогите, пожалуйста разобраться.
Да,ещё самое интерсное когда запускаю в Turbo Pascal(ДосБокс)всё нормально после исправления в модуле. А когда в Turbo Pascal обычном так вот получается. Но мне нужно именно на последнем чтобы работало.

Модуль
Код:
unit module;
interface
uses crt;
type TRec=record
       numGroup:string[50];
       lastName:string;
       name:string;
       otchestvo:string;
       grunt:string;
     end;
procedure okno;
procedure clr;
procedure createFile(filename:string);
function filefound(filename: string): boolean;
procedure AddStud(filename:string);
procedure printStud(filename:string);

implementation
procedure okno;
begin
  window (12,7,65,20);
  TEXTBACKGROUND(11);
  CLRSCR;
  textcolor(0);
  window (13,7,65,20);
  clrscr;
end;
procedure clr;
begin
  clrscr;
  window(0,0,80,40);
  TEXTBACKGROUND(0);
  clrscr;
  TEXTCOLOR(15);
  window(0,0,80,40);
  clrscr;
end;

function filefound(filename: string): boolean;
var
  f:file of TRec;
begin
  {$i-}
    assign(f,filename);
    reset(f);
    close (f);
  {$i+}
  filefound:=(ioresult=0);
end;

procedure createFile(filename:string);
var
  f: file of TRec;
begin
  assign(f, filename);
  rewrite(f);
  close(f);
end;

procedure AddStud(filename:string);
var f:file of TRec;
    stud: TRec;
    Astud:array[1..100] of Trec;
    key:char;
    k,i:integer;
begin

  assign(f,filename);
  Reset(f);
  i:=1;
  while(not eof(f)) do
  begin
    read(f, stud);
    inc(i);
    Astud[i].numGroup:= stud.numGroup;
    Astud[i].lastName:= stud.lastName;
    Astud[i].name:= stud.name;
    Astud[i].otchestvo:= stud.otchestvo;
    Astud[i].grunt:= stud.grunt;
  end;
  close(f);
  k:=i;

  repeat

    clrscr;
    okno;
    inc(i);
    writeln('Введите группу:');
    readln(Astud[i].numGroup);
    writeln('Введите фамилию:');
    readln(Astud[i].lastName);
    writeln('Введите имя:');
    readln(Astud[i].name);
    writeln('Введите отчество:');
    readln(Astud[i].otchestvo);
    writeln('Введите сумму стипендии (в гривнах) или 0 если студент без стипендии');
    readln(Astud[i].grunt);

    writeln('Для выхода нажмите <ESC>  и любую клавишу для продолжения');
    key:=readkey;

  until ord(key)=27;

  rewrite(f);
  seek(f,filesize(f));
  k:=i;
  for i := 1 to k do
      begin
        write(f,Astud[i]);
      end;
  close(f);
  clr;

end;

procedure printStud(filename:string);
var
  f: file of TRec;
  stud: TRec;
  j:byte;
begin
  j:=0;
  okno;
  assign(f, filename);
  reset(f);
  while(not eof(f)) do
  begin

  begin
    read(f, stud);
    if (stud.numGroup<>'')then
    begin
    writeln('Группа  - ', stud.numGroup);
    writeln('Фамилия - ', stud.lastName);
    writeln('Имя - ', stud.name);
    writeln('Отчество - ', stud.otchestvo);
    writeln('Стипендия - ', stud.grunt);
    inc(j);
    end;
    if (j = 3) then
       begin
         writeln('Для вывода следующей страницы нажмите любую клавишу');
         j:=0;
         readkey;
         clrscr;
       end;
   end;
   end;
  close(f);

end;
end.
Программа
Код:
Program Pract;
uses crt, module;

var
  f:file of TRec;
  filename:string;
  r:integer;
  key:char;
  ch:char;
  k:integer;
begin


  repeat
   clrscr;
   okno;
   writeln('1. Создать файл');
   writeln('2. Добавить в файл информацию о студентах');
   writeln('3. Вывести информацию из файла на экран');
   writeln('ESC - выход');
   ch:=readkey;
   case ch of
      '1': begin
             clrscr;
             okno;
             writeln('Укажите полное имя файла');
             readln(filename);
             createFile(filename);
             writeln('Файл ',filename,' успешно создан');
             writeln('Для продолжения нажмите любую клавишу...');
           end;
      '2': begin
             clrscr;
             okno;
             writeln('Укажите полное имя файла');
             readln(filename);
             if(not (filefound(filename))) then
               begin
                 textcolor(12);
                 writeln('Ошибка! Файл ',filename, 'Не найден');
                 textcolor(15);
                 writeln('Создать файл с текущим именем? y - да, N - нет');
                 ch:=readkey;
                 case ch of
                   'Y','y','Н','н':begin
                                     createFile(filename);
                                     writeln('Файл ',filename,' успешно создан');
                                     writeln('Для продолжения нажмите любую клавишу...');
                                   end;
                   'N','n','Т','т':begin

                                   end;
                 end;
               end
             else
               begin
                 AddStud(filename);
               end;
           end;
      '3': begin
              clrscr;
              okno;
              writeln('Укажите полное имя файла');
              readln(filename);
              if(not (filefound(filename))) then
               begin
                 textcolor(12);
                 writeln('Ошибка! Файл ',filename, 'Не найден');
                 textcolor(15);
                 writeln('Для продолжения нажмите любую клавишу...');
                 readkey;
               end
               else
                printStud(filename);
                writeln('Для продолжения нажмите любую клавишу...');
                readkey;
           end;
   end;
  until(ord(ch) = 27);
end.
Миниатюры
aacuiy-iiiiue.png   aacuiyieiue.png  
Sandra 2000 вне форума   Ответить с цитированием

Старый 06.06.2013, 09:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблема обязательно решится, а пока можете набраться информации побольше

Ищу программу
Из данной программы сделать программу с использованием процедур и функций
Посоветуйте программу
Есть желание сделать программу для поиска арбитражных ситуаций

Старый 06.06.2013, 10:35   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
У меня возникла проблема с модулем и с основной программой.(Turbo Pascal)
Сандра, отлаживать Вашу программу я не возьмусь, ибо нет таких возможностей просто по времени, но один совет дам. Сталкивался с тем, что некоторые реализации Паскаля не переносят формата полей записи в виде свободных строк. Поэтому попробуйте добавить всюду длины, т.е. не string; а string[20]; и т.п.
Vladimir_S вне форума   Ответить с цитированием
Старый 07.06.2013, 09:27   #3 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Последовала вашему совету, но к сожалению в модуле всё нормально, а в программе ругается.
Sandra 2000 вне форума   Ответить с цитированием
Старый 07.06.2013, 11:22   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
Последовала вашему совету, но к сожалению в модуле всё нормально, а в программе ругается.
Боюсь, ничем помочь не могу. Оттранслировал и модуль, и программу в своем DOS Free Pascal прямо как есть в #1 (только чертову кириллицу перекодировал) - у меня всё работает почти безупречно. Кроме того, запускал программу в DOS Turbo Pascal 7.0. Тут пришлось, как указано выше, задать длины строковых полей записи, иначе плюётся (Free Паскалю это дело до фонаря). Тоже работает. Правда, и там, и там выдает странности при выводе содержимого файла на экран. Пример: были введены данные трех студентов:
Код:
     Группа      Фамилия    Имя   Отчество    Стипендия
       66          Iv        Iv      Iv            50
       44          Pet       Pet     Pet           75
       11          Sid       Sid     Sid            0
Free Pascal выдал это:
fp01.jpg
то есть прокрутил список до конца и не остановился, а Turbo Pascal - это:
tpx01.jpg
остановился, но накидал сверху какую-то хрень.
Поскольку это всё CRT-шные рюшечки, которые я лично никогда не использую, заниматься ими не буду.
Но в любом случае программа транслируется и работает. Так что Ваши проблемы - это какие-то задвиги реализаций трансляторов. Сочувствую.
Vladimir_S вне форума   Ответить с цитированием
Старый 07.06.2013, 16:25   #5 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Так у меня на таком TurboPascal DOS box тоже всё нормально работает, а на обычном уже как только непробовала всё время ругается.
Sandra 2000 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 07.06.2013, 18:25   #6 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
то есть прокрутил список до конца и не остановился, а Turbo Pascal - это:
Вложение 138442
остановился, но накидал сверху какую-то хрень.
Поскольку это всё CRT-шные рюшечки, которые я лично никогда не использую, заниматься ими не буду.
Но в любом случае программа транслируется и работает. Так что Ваши проблемы - это какие-то задвиги реализаций трансляторов. Сочувствую.
Так это дело в моей программе установленной, а если на другом компьютере будет нормально?
Sandra 2000 вне форума   Ответить с цитированием
Старый 07.06.2013, 18:44   #7 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я думаю ошибка где-то в этом куске, потому что я попробовала убрать программа заработала, но конечно не правильно. Подскажите кто-нибудь.
Миниатюры
aacuiyiiiiue.png  
Sandra 2000 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:46.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.