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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2014, 23:34   #11
Таня Хорошая
Пользователь
 
Аватар для Таня Хорошая
 
Регистрация: 15.04.2014
Сообщений: 12
По умолчанию

Я уже догадалась, извиняюсь.
Немного невнимательная
Таня Хорошая вне форума Ответить с цитированием
Старый 02.05.2014, 23:37   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Так тоже нельзя. Представьте, что у Вас в ящике лежат удавы и ежи. Ну понятно что удав с удавом и даже еж с ежиком получат море приятных эмоций. Но Вы пытаетесь взять ежа и удава и сделать им приятно. Так не бывает. Но если Вы добрая фея, тогда можно взять удава и сделать из него хорошенького ежа, если воспользоваться волшебной палочкой. Эта волшебная палочка называется преобразование типов. То есть грубо говоря если Вы знаете как из удава можно сделать ежа, то берете удава, ежа и волшебную палочку и будет Вам счастье. Только так и никакая другая магия Вам не поможет.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.05.2014, 23:39   #13
Таня Хорошая
Пользователь
 
Аватар для Таня Хорошая
 
Регистрация: 15.04.2014
Сообщений: 12
По умолчанию

Спасибо, добрый дядя)

Цитата:
Сообщение от Stilet Посмотреть сообщение
Во-первых: Угадывать текст твоей ошибки это в бюро телепатии на втором этаже.
Во-вторых: Я правильно понимаю - ты не знаешь чем отличается один тип данных от другого, так?
Смотри:
Код:
var t:string;
и
Код:
  TDat = record
 day,month:byte;
end;
Строку нельзя сравнивать с записью. Строку вообще нельзя так просто без преобразования сравнивать с любым другим типом
А значит нужно что?...
Подсказываю: сделать переменную такого же типа, и ввести с помошью readln соответственно.
Смотри:
Было:
Код:
t:string;
и
Код:
Date:string
Смекаешь о чем я?
Еще раз повторю: Сравниваемые переменные должны быть одного типа.
С этим я уже разобралась.
Но проблема в том, что мне необходимо работать с той информацией, которая УЖЕ записана у меня в одном из текстовых файлов.

Последний раз редактировалось Stilet; 03.05.2014 в 11:59.
Таня Хорошая вне форума Ответить с цитированием
Старый 03.05.2014, 00:22   #14
reflexx
Пользователь
 
Регистрация: 27.04.2014
Сообщений: 21
По умолчанию

Таня, заполни файл один раз, затем удали часть кода, которая отвечает за ввод информации. У тебя файл создаётся заново при каждом запуске программы:
Код:
assign(f,'e:\liudi.txt');
rewrite(f); // создание файла
Чтобы открыть файл для чтения нужно использовать процедуру Reset
Код:
assign(f,'e:\liudi.txt');
reset(f); // открытие файла для чтения
reflexx вне форума Ответить с цитированием
Старый 03.05.2014, 09:57   #15
Таня Хорошая
Пользователь
 
Аватар для Таня Хорошая
 
Регистрация: 15.04.2014
Сообщений: 12
По умолчанию

Как-то так?
Код:
Program Tanya;
Type
  Progul=record
      Fio:string[128];
     Kol:integer;
  End;
  TDat = record
 day,month:byte;
end;
var student: array [1..32] of progul;
    d: array [1..100] of TDat;
    i,m:integer;
    f:text; 
    
procedure q; {2.1) вывод данных за все время;}
var t:string; d:TDat; p:progul; m:integer;
begin
assign(f,'e:\liudi2.txt');
 reset(f); 
       readln(f,d.day,d.month,p.Fio,p.kol); 
           writeln(f,'fio','  ','  ',student[i].Fio,'  ','data','  ',d.day,d.month,'  ','propuski','  ',student[i].Kol);
       close(f); 
end;

procedure w; {2.2) за определенный день;}
var t:integer; sr:integer; p:Progul; d:TDat;
m:integer;
begin
readln(t);
 assign(f,'e:\liudi2.txt');
 reset(f);
          if ((d.day)+(d.month))=t then  
           writeln(f,'fio','  ','  ',student[i].Fio,'  ','data','  ',d.day,'.',d.month,'  ','propuski','  ',student[i].Kol);
       close(f); 
end;

procedure r; {2.3) за период времени;}
var t,e:integer; p:Progul; d:TDat;
m:integer;
begin
 readln(t);readln(e);
 assign(f,'e:\liudi2.txt');
 reset(f); 
      if ((d.day)+(d.month)>=t)and((d.day)+(d.month)>=e) then  
           writeln(f,'fio','  ','  ',student[i].Fio,'  ','data','  ',d.day,'.',d.month,'  ','propuski','  ',student[i].Kol);
        close(f); 
end;

procedure t; {3.1) вывод среднего количества за все время;}
var t:string; sr,m:integer; p:Progul; d:Tdat;
begin
 sr:=0;
 assign(f,'e:\liudi2.txt');
 reset(f); 
      sr:=sr+p.Kol;
         close(f);  write(sr/31);
end;

procedure y; {3.2) среднее за определенный промежуток времени.}
var t,e,sr:integer; m:integer; p:progul; d:TDat;
begin
 readln(t);readln(e);
 assign(f,'e:\liudi2.txt');
 reset(f); 
        for m:=1 to 31 do        begin 
          readln(f,d.day,d.month,p.Fio,p.Kol); 
          if ((d.day)+(d.month)>=t)and((d.day)+(d.month)>=e) then  
          sr:=sr+student[i].Kol;
        end;
 close(f);  write(sr/31);
end;
 
var  s:string; 
begin
assign(f,'e:\liudi2.txt');
  reset(f);
   while not eof (f) do begin
        read (f, s);
        writeln (s);
    end;
 close (f);
  w;r;t;y;
  readln;
end.
Таня Хорошая вне форума Ответить с цитированием
Старый 03.05.2014, 11:57   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
program Project1;

//Опишем тип записи для файла
Type
//Тип содержащий даты
  TDat = record
   day,month:byte;
  end;
//И саму запись прогулов
  Progul=record
     Fio:string[128];
     Kol:integer;
     d:TDat;
  End;
//После укажем имя для файла
const filename='e:\liudi2';

//И используем ТИПИРОВАННЫЙ ФАЙЛ вместо текстового
var student:progul;    f:file of progul;

//Вводим данные в файл
procedure Input_;
var c:char;
begin
 //Открываем файл на запись
 Rewrite(f);
 repeat
   //Запрашиваем инфу у пользователя для наполнения файла
   write('Input FIO:');readln(student.Fio);
   write('Input Kol:');readln(student.Kol);
   write('Input day:');readln(student.d.day);
   write('Input Mon:');readln(student.d.month);
   //Запросив пишем очередную запись в файл
   write(f,student);
   //Спрашиваем продолжать ли или нет
   write('repeat? [y/n]:');readln(c);
   //Если юзер нажал "n" то не продолжаем записывать
 until c='n';
 CloseFile(f);
end;

procedure get1; {2.1) вывод данных за все время;}
begin
 //Открываем файл на чтение
 reset(f);
 while not eof(f) do begin
       //Считывая по записно
       read(f,student);
       //Выводим на экран
       writeln('fio','  ','  ',student.Fio,'  ','data','  ',student.d.day,'.'
       ,student.d.month,'  ','propuski','  ',student.Kol);
 end;
 close(f);
end;

procedure get2; {2.2) за определенный день;}
var d:byte;
begin
 //Та же фигня, но спросим дополнительно за какой день выводить
 reset(f); write('What day?: ');readln(d);
 while not eof(f) do begin
       read(f,student);
       //И если считанная запись за этот день
       if student.d.day=d then
          //Выводим
              writeln('fio','  ','  ',student.Fio,'  ','data','  ',student.d.day,'.'
              ,student.d.month,'  ','propuski','  ',student.Kol);
 end;
 close(f);
end;

begin
   AssignFile(f,filename);
   // Эта проца вызывается один раз, чтоб создать файл. Потом ее можно закоментировать
   // И таскать созданный файл рядом с программой, чтоб не наполнять его заново
  // Input_;

  //А это первые твои два задания.
  get1;get2;
  readln;
end.
Если и это не поможет то я не знаю как обьяснять. Значит заново тебе с нуля придется садиться за учебники, пока не поймешь смысл работы с файлами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2014, 19:47   #17
Таня Хорошая
Пользователь
 
Аватар для Таня Хорошая
 
Регистрация: 15.04.2014
Сообщений: 12
По умолчанию

Моя большая проблема в том, что по школьной программе я прошла только текстовые файлы.
Запуская программу, получаю вот что:s.jpg
Ну а если в самой программе к имени файла добавлю ".txt" (потому что у меня уже есть такой текстовый файл с информацией), то получаю:s1.jpg
Таня Хорошая вне форума Ответить с цитированием
Старый 03.05.2014, 21:36   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Запуская программу, получаю вот что:
Ну так файл то не создала )
Не надо бездумно запускать код. Лучше вникни в то что я написал:
Цитата:
// Эта проца вызывается один раз, чтоб создать файл. Потом ее можно закоментировать
// И таскать созданный файл рядом с программой, чтоб не наполнять его заново
// Input_;
Раскоментировав эту строку получишь создание файла. Чтоб его не пересоздавать всякий раз я ее закоментировал.
Цитата:
по школьной программе я прошла только текстовые файлы.
Т.е. типизированые запрещено?
Хорошо, но тогда тебе придется конкретно изголиться.
Храни тогда данные в каждой строке.
т.е.
Код:
//Вводим данные в файл
procedure Input_;
var c:char;
begin
 //Открываем файл на запись
 Rewrite(f);
 repeat
   //Запрашиваем инфу у пользователя для наполнения файла
   write('Input FIO:');readln(student.Fio);writeln(f,student.Fio);
   write('Input Kol:');readln(student.Kol);writeln(f,student.Kol);
   write('Input day:');readln(student.d.day);writeln(f,student.d.day);
   write('Input Mon:');readln(student.d.month);writeln(f,student.d.month);

   //Спрашиваем продолжать ли или нет
   write('repeat? [y/n]:');readln(c);
   //Если юзер нажал "n" то не продолжаем записывать
 until c='n';
 CloseFile(f);
end;
И можно использовать функцию считывания:
Код:
 procedure myread;
 begin
   readln(f,student.Fio);
   readln(f,student.Kol);
   readln(f,student.d.day);
   readln(f,student.d.month);
 end;
Которую вызывать так:
Код:
procedure get1; {2.1) вывод данных за все время;}
begin
 //Открываем файл на чтение
 reset(f);
 while not eof(f) do begin
       //Считывая по записно
      myread;
       //Выводим на экран
       writeln('fio','  ','  ',student.Fio,'  ','data','  ',student.d.day,'.'
       ,student.d.month,'  ','propuski','  ',student.Kol);
 end;
 close(f);
end;
Тогда и текстовые файлы будут.
Идея надеюсь ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автозаполнение пропусков в тесте ancorom Помощь студентам 1 23.12.2013 09:28
ИС Учет ПК и ПО на C# aliendeath Фриланс 0 05.05.2013 16:50
Assembler Подсчитать количество пропусков в ASCIIZ- строке Alexsandr Помощь студентам 0 03.02.2013 21:26
программы для печати удостоверений (пропусков) lungge Фриланс 3 15.11.2012 12:21
Найти студента который имеет среднее количество пропусков. LUKICH Фриланс 1 01.06.2010 09:15