Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

помогите доделать задачу . заранее благодарен
Host_motoДата: Вторник, 15.04.2008, 13:50 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 3
Репутация: 0
Замечания: 0%
Статус: Offline
помогите пожалуйста доделать задачу. дан файл содержащий различные даты, каждая дата это число, месяц и год.
найти а) весенние даты-эту я уже сделал, можно по ней найти? б)
б)самую позднюю дату

Code

program n6;
uses crt;
var
  f: text;
  s: string[10];
  m, g: integer;
begin
clrscr;
textcolor(14);
writeln('і vesenie dati  і ');
  assign(f, 'c:\dates.txt');
  reset(f);
  while not eof(f) do begin
   readln(f, s);
   val(copy(s, 4, 2), m, g);
   if (m >= 3) and (m <= 5) then writeln(s);
  end;
  close(f);
  readln;
end.
 
AlexanderДата: Вторник, 15.04.2008, 16:16 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Host_moto, это точно на текстовый файл? Может на типизированный?

Скажем дружно- нафиг нужно!
 
SeqularДата: Среда, 16.04.2008, 06:31 | Сообщение # 3
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Странно.. Вот
Code
Copy(s, 4, 2)
возвратит 2 символа начиная с 4-ой позиции.. А почему так? Имхо, нужно брать
Code
Pos('.',s)+1
вместо 4. Или в каком формате дата хранится? Это, между прочим, тоже важно =))


Поддерживаю также проект сообщество молодых сисадминов
 
Host_motoДата: Среда, 16.04.2008, 14:07 | Сообщение # 4
Новичок
Группа: Пользователи
Сообщений: 3
Репутация: 0
Замечания: 0%
Статус: Offline
да это на текстовый файл

Code

uses crt;
var
f:text;
s:string;
Gd,dn,g,m:integer;
Maxgd,maxm,maxdn,maxg:integer;
begin
clrscr;
assign (f, 'c:\dates.txt');
reset(f);
Maxgd:=0;maxm:=0;maxdn:=0;
  while not eof(f) do begin
   readln(f, s);
   val(copy(s, 1, 6), gd, g);
   val(copy(s, 2, 2), m, dn);
   val(copy(s, 7, 4), m, g);
   if gd >maxgd  then  {сравниваем год}
  begin
     maxgd:=gd;
     maxm:=m;
     maxdn:=dn;
        end
   else if (gd=maxgd)and(m>maxm) then  {если года равны, сравниваем месяц}
  begin
    maxm:=m;
     maxgd:=gd;
     maxdn:=dn;
        end
    else if (gd=maxgd)and(m=maxm)and(dn>maxdn) then {если и месяцы равны, сравниваем дни}
  begin
    maxdn:=dn;
    maxm:=m;
     maxgd:=gd;
        end;
    end;
writeln('Samaia pozdnja data:  ',maxdn,' ',maxm,'  ',maxg);
  close(f);
  readln;
end.

я не понимаю как делать, может кто знает?

Code

  val(copy(s, 1, 6), gd, g);
   val(copy(s, 2, 2), m, dn);
   val(copy(s, 7, 4), m, g);
 
AlexanderДата: Среда, 16.04.2008, 22:04 | Сообщение # 5
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Уточните ещё 1 момент. Как хранятся даты в файле? А именно:
1) Сколько дат может хранится в одной строке?(одна, две, сколько угодно).
2) В каком формате они хранятся? (строка "12.06.2003", числа через пробел "12 06 2003", или это по желанию?).
Просто ваш код выглядит довольно абсурдно и мне кажется, что вы идёте не в том направлении.


Скажем дружно- нафиг нужно!
 
Host_motoДата: Четверг, 17.04.2008, 23:37 | Сообщение # 6
Новичок
Группа: Пользователи
Сообщений: 3
Репутация: 0
Замечания: 0%
Статус: Offline
даты хранятся по одной на строке в формате 11.11.2000.
 
AlexanderДата: Пятница, 18.04.2008, 01:02 | Сообщение # 7
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Идиотское задание, это называется: "мне не надо, чтоб вы чему-то научились, мне надо, чтоб вы задолбались". Для задания "б" предлагаю вам ввести функцию, которая будет возвращать true, если первая дата больше второй, выглядеть она будет примерно так:
Code
function CmpDate(a,b:string):boolean;
var
     Date1,Date2:word;
     Stuff:integer;
begin
     Val(Copy(a,7,4),Date1,Stuff);
     Val(Copy(a,7,4),Date2,Stuff);
     if Date1>Date2 then
        CmpDate:=true
     else if Date1<Date2 then
        CmpDate:=false
     else
        begin
           Val(Copy(a,4,2),Date1,Stuff);
           Val(Copy(a,4,2),Date2,Stuff);
           if Date1>Date2 then
              CmpDate:=true
           else if Date1<Date2 then
              CmpDate:=false
           else
              begin
                 Val(Copy(a,1,2),Date1,Stuff);
                 Val(Copy(a,1,2),Date2,Stuff);
                 if Date1>Date2 then
                    CmpDate:=true
                 else
                    CmpDate:=false;
              end;
        end;
end;

Теперь задача сведётся к нахождению максимального элемента в файле. Часть "а" совсем простая, там нужно прочитать строку(s), проверить, что (s[5]>='3') and (s[5]<='5'), если выполнится, то выводим строку на экран.
Если вопросы остались, то пишите.
P.S. помните, что число и месяц должны занимать по две позиции! Не "1.2.2003", а "01.02.2003".


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Пятница, 18.04.2008, 01:05
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;