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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2014, 20:13   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию текстовый файл

у меня было задание записать таблицу в текст файл. Проблема была в том что в текст. файл пишеться только введенные данные. само условие (вывести холодильники 1993 года в текст. файл не пишеться). решил написать такое
Вот мой код:
Код:
const 
  n=4;
type
    xolod = record
      vr:string[50];
      nv:string[45];
      kr:real;
      rk:integer;
      misc:string[45];
      cn:real;
      kst:real;
    end;
 
var
  i:integer;
  f:text;
  tabl:xolod;
 
 virobn:array[1..n] of string[45];
  nazva:array[1..n] of string[50];
  kamera:array[1..n] of real;
  rik:array[1..n] of integer;
  misce:array[1..n] of string[45];
  cina:array[1..n] of integer;
  kilkist:array[1..n] of real;
 
Procedure stvor;
  var
    j:integer;
begin
  Assign(f,'zadolbalo.txt');
  Rewrite(f);
  for j:=1  to n do
    writeln(f, virobn[j]:10,'|',
        nazva[j]:15,'|',
        kamera[j]:16,'|',
        rik[j]:4,'|',
        misce[j]:9,'|',
        cina[j]:9,'|',
        kilkist[j]:9,'|'
    );
 
  Close(f);
End;
 
Procedure vvid;
begin
  Assign(f, 'zadolbalo.txt');
  Append(f);
  Writeln('Vvedenna dannix');
  with tabl do
    begin
      Write('virobn:');
      readln(vr);
      Write('nazvanie:');
      readln(nv);
      Write('kamera:');
      readln(kr);
      Write('rik:');
      readln(rk);
      Write('misce:');
      readln(misc);
      Write('cina:');
      readln(cn);
      Write('kilkist:');
      readln(kst);
     
      writeln(f, vr:10, nv:15, kr:16, rk:4, misc:9, cn:9, kst:9);
    end;
  Close(f);
End;
     
 
Procedure Zagol;
begin
  writeln('-----------------------------------------------------------------------');
  writeln('| Виробництво | Назва | Обэм Камери | Рік | Місце | Ціна | Кількість|');
  writeln('-----------------------------------------------------------------------');
End;
   
Procedure Vuvid;
  var
    sss:string;
begin
  assign(f, 'zadolbalo.txt');
  Reset(f);
  while not eof(f) do
    begin
      readln(f, sss);
      writeln(sss);
    end;
  Close(f);
 
  writeln('-----------------------------------------------------------------------');
End;
        
Procedure obrobka;
  var
    sss:string;
    j : integer;
begin
  Zagol;
  Assign(f, 'zadolbalo.txt');
  Reset(f);
  while not eof(f) do
    begin
      readln(f, sss);
      If (rik[i]= 1993) then
      begin
      write(' |', virobn[i]:10,'|');
write(nazva[i]:15,'|', kamera[i]:16,'|', rik[i]:4,'|', misce[i]:9,'|' , cina[i]:9,'|' , kilkist[i]:9,'|');
        writeln(sss);
    end;
    end;
  Close(f);
End;
BEGIN
  stvor;
  vvid;
  vuvid;
  obrobka;
End.
но ошибка на
Код:
If (rik[i]= 1993) then
Program2.pas(108) : Ошибка времени выполнения: Индекс находился вне границ массива.
mishammm вне форума Ответить с цитированием
Старый 18.01.2014, 21:08   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

А чему равно i то? Я ни одной строки, в которой оно меняется, не увидел.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 18.01.2014, 21:50   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
А чему равно i то? Я ни одной строки, в которой оно меняется, не увидел.
где именно нужно дописать измеение i ?? пожскажите пожалуйста
mishammm вне форума Ответить с цитированием
Старый 19.01.2014, 00:21   #4
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

кто нибудь помогите дополнить эту прогу, 4 день сижу, пожалуйста
mishammm вне форума Ответить с цитированием
Старый 19.01.2014, 11:26   #5
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Пойдем от простого: автор, опиши словами логику работы программы. Т.е. "открыл файл, считал, сравнил что-то, если да, то ..., иначе ..." и т.д.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 19.01.2014, 11:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  
i,j : integer;
...
i:=0;
while not eof(f) do
    begin inc(i);
Только тебе это все равно не поможет. Программа твоя слишком беспощадна, чтоб ее в таком виде оставлять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2014, 11:29   #7
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Да я сомневаюсь, что это программа автора. Скорее уж надергал кусков из чьей-то.

Если опишет логику - ок, я не прав.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 19.01.2014, 14:29   #8
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Да я сомневаюсь, что это программа автора. Скорее уж надергал кусков из чьей-то.

Если опишет логику - ок, я не прав.
програму брал с шаблона, который описанный в книжке. ну логику я частично могу описать
while not eof(f) do // пока не конец файла выполняем
begin
Код:
i:=i+1; //увеличиваем i на 1 ( меняем i) 
  readln(f, sss); //считываем одну строку с  файла у sss
  For j:=1 to 4 do // пробегаемся в цикле от 1 до 4. даже если j не будет потом использовано
    If (rik[i]= 1993) then //если знач. этого элемента = 1993 тогда
//делаем следущее
    begin
      write(' |', virobn[i]:10,'|'); //выводим строку с характеристиками холодильника
      write(nazva[i]:15,'|', kamera[i]:16,'|', rik[i]:4,'|', misce[i]:9,'|' , cina[i]:9,'|' , kilkist[i]:9,'|');
      writeln(sss); //выводим строку, с которого считывали файл
    end; 
end; //конец действий
mishammm вне форума Ответить с цитированием
Старый 19.01.2014, 14:57   #9
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

такой был еще вариант:
Код:
 const 
      n=4;
 type
    xolod = record
      virobn:string[50];
      nazvanie:string[45];
      kamera:real;
      rik:integer;
      misce:string[45];
      cina:real;
      kilkist:real;
    end;
   var
   f:text;
   i:integer;
  procedure stvor;
  var
     i:integer;
     tabl:xolod;
     begin
           Assign(f,'d:\xolod.txt');
           rewrite(F);
           close(F);
           Assign(f,'d:\xolod.txt');
           append(F);
           for i:=1 to n do
           begin
            Write('virobn:');
            readln(tabl.nazvanie);
            Write('nazvanie:'); 
            readln(tabl.nazvanie);
            Write('kamera:');  
            readln(tabl.kamera);
             Write('rik:'); 
             readln(tabl.rik);
     Write('misce:'); 
     readln(tabl.misce);
     Write('cina:'); 
     readln(tabl.cina);
     Write('kilkist:'); 
     readln(tabl.kilkist);
     
      writeln(f,tabl.virobn:10,'|' ,tabl.nazvanie:15,'|',tabl.kamera:16,'|', tabl.rik:4,'|', tabl.misce:9,'|' , tabl.cina:9,'|' , tabl.kilkist:9,'|');
      end;
      close(F);
      End;
      
      Procedure Vuvid;
      var
         sss:string;
         begin
         assign(f, 'd:\xolod.txt');
         reset(F);
         while not  eof (F) do begin
         read(f,sss);
          If  (sss='1993') then
          begin
        
         writeln(sss);
         end;
         end;
         Close(F);
         
      End;
      
      begin
      
      stvor;
      vuvid;
      end.
mishammm вне форума Ответить с цитированием
Старый 19.01.2014, 15:16   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1-е. запакуйте ваш xolod.txt в архив и архив выложите на форум.

2-е. чётко и полностью (желательно так, как у Вас в задании написано, слово в слово) сформулируйте, что Вам надо сделать, какой файл в результате надо получить.



и не надо создавать кучу однотипных тем, это, кроме раздражения, ничего хорошего не даёт!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано текстовый файл.словом считают группу символов между двумя пробелами . Упорядочить файл за алфавитом(лесикографично) SMASHBRAIN C# (си шарп) 0 30.05.2013 17:48
Создать на диске текстовый файл, состоящий из имен девочек вашей группы. Переписать имена в алфавитном порядке в новый файл Sancheper Паскаль, Turbo Pascal, PascalABC.NET 1 21.06.2012 07:44
4. Дан текстовый файл. Создать символьный файл trum Помощь студентам 0 03.06.2012 19:20
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные... Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 2 08.02.2012 19:23
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55