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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2009, 11:15   #1
strateg66
Пользователь
 
Регистрация: 07.10.2009
Сообщений: 23
Восклицание не работает проверка истинности

В этой программе должен расчитываться возраст в месяцах. При вводе нормальных дат работает все верно, а вот при вводе заведомо неверных дат ( например, число дней в месяце 13) должна запускаться проверка на истинность, но этого не происходит. Помогите с решением

Код:
program Vozzrast;
 
{$APPTYPE CONSOLE}
uses
  SysUtils;
 
var
y, m, d, yy, mm, dd, god, month, day, vozrast: integer;
var
correctly: boolean;
begin
  { TODO -oUser -cConsole Main : Insert code here }
 
  write ('Vvedite daty rogdeniya v formate YYYY MM DD');
  readln (y, m, d);
  writeln ('Vvedite segodnyashnyuyu daty  v formate YYYY MM DD');
  readln (yy, mm, dd);
  begin
  correctly := ((y>=1900) and (y<=2009) and (m>=12) and (m<=12) and (d>=1) and
  (d<=31) and (yy>=1900) and (yy<=2009) and (mm>=12) and (mm<=12) and (dd>=1)
  and (dd<=31));
  if True then
  begin
  god := (yy-y-1)*12;
  mm := mm+12;
  month := mm-m-1;
  dd:=dd+31;
  day:=(dd-d) div 30;
  vozrast:= god+month+day;
  writeln ('Vash vozrast sostavil ', vozrast);
  end;
  if False then
  writeln ('Vvedite vernie dannie ');
  readln;
  end;
  end.

Последний раз редактировалось Stilet; 07.10.2009 в 11:32.
strateg66 вне форума Ответить с цитированием
Старый 07.10.2009, 11:29   #2
Consol
Пользователь
 
Регистрация: 19.08.2009
Сообщений: 89
По умолчанию

попробуй так написать
Код:

{$APPTYPE CONSOLE}
uses
SysUtils;

var
y, m, d, yy, mm, dd, god, month, day, vozrast: integer;
var
correctly: boolean;
begin
{ TODO -oUser -cConsole Main : Insert code here }

write ('Vvedite daty rogdeniya v formate YYYY MM DD');
readln (y, m, d);
writeln ('Vvedite segodnyashnyuyu daty v formate YYYY MM DD');
readln (yy, mm, dd);
begin
correctly := ((y>=1900) and (y<=2009) and (m>=12) and (m<=12) and (d>=1) and
(d<=31) and (yy>=1900) and (yy<=2009) and (mm>=12) and (mm<=12) and (dd>=1)
and (dd<=31));
if correctly then
begin
god := (yy-y-1)*12;
mm := mm+12;
month := mm-m-1;
dd:=dd+31;
day:=(dd-d) div 30;
vozrast:= god+month+day;
writeln ('Vash vozrast sostavil ', vozrast);
end;
if correctly=False then
writeln ('Vvedite vernie dannie ');
readln;
end;
end.
Consol вне форума Ответить с цитированием
Старый 07.10.2009, 11:38   #3
Vol666
Гуру Разврата
Форумчанин
 
Аватар для Vol666
 
Регистрация: 29.07.2009
Сообщений: 373
По умолчанию

var
y, m, d, yy, mm, dd, god, month, day, vozrast: integer;
var
correctly: boolean;
begin
{ TODO -oUser -cConsole Main : Insert code here }

write ('Vvedite daty rogdeniya v formate YYYY MM DD');
readln (y, m, d);
writeln ('Vvedite segodnyashnyuyu daty v formate YYYY MM DD');
readln (yy, mm, dd);
begin

if (y>=1900) and (y<=2009) and (m>=12) and (m<=12) and (d>=1) and
(d<=31) and (yy>=1900) and (yy<=2009) and (mm>=12) and (mm<=12) and (dd>=1) and (dd<=31) then
begin
god := (yy-y-1)*12;
mm := mm+12;
month := mm-m-1;
dd:=dd+31;
day:=(dd-d) div 30;
vozrast:= god+month+day;
writeln ('Vash vozrast sostavil ', vozrast);
end
else
writeln ('Vvedite vernie dannie ');
readln;
end;
end.

Вот как то так...
Фредди вернулся))) И Готов Убивать!!!

Последний раз редактировалось Vol666; 07.10.2009 в 11:42.
Vol666 вне форума Ответить с цитированием
Старый 07.10.2009, 12:06   #4
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Код:
 (m>=12) and (m<=12)
Проще написать
Код:
m = 12
и это тоже
Код:
(mm>=12) and (mm<=12)
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 07.10.2009, 12:12   #5
Consol
Пользователь
 
Регистрация: 19.08.2009
Сообщений: 89
По умолчанию

Код:
(m>=12) and (m<=12)
что это значит может надо было написать так
Код:
(m>=1) and (m<=12)
Consol вне форума Ответить с цитированием
Старый 07.10.2009, 12:15   #6
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Может и надо.. Не я ж такой код писал.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 07.10.2009, 12:57   #7
strateg66
Пользователь
 
Регистрация: 07.10.2009
Сообщений: 23
Смех

решил задачку сам. Всем спс
решение такое
program Vozzrast;

{$APPTYPE CONSOLE}
uses
SysUtils;

var
y, m, d, yy, mm, dd, god, month, day, vozrast: integer;
var
correct: boolean;
begin
{ TODO -oUser -cConsole Main : Insert code here }

write ('Vvedite daty rogdeniya v formate YYYY MM DD');
readln (y, m, d);
writeln ('Vvedite segodnyashnyuyu daty v formate YYYY MM DD');
readln (yy, mm, dd);
correct := ((y>=1900) and (y<=2009) and (m>=1) and (m<=12) and (d>=1) and (d<=31) and (yy>=1900) and (yy<=2009) and (mm>=1) and (mm<=12) and (dd>=1) and (dd<=31));
if correct then
begin
god := (yy-y-1)*12;
mm := mm+12;
month := mm-m-1;
dd:=dd+31;
day:=(dd-d) div 30;
vozrast:= god+month+day;
writeln ('Vash vozrast sostavil ', vozrast);
end
else
writeln ('Vvedite vernie dannie ');
readln;
end.
strateg66 вне форума Ответить с цитированием
Старый 07.10.2009, 13:38   #8
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

А может такую проверку:
Код:
if  ((y>=1900) and (y<=2009) and (m>=12) and (m<=12) and (d>=1) and
  (d<=31) and (yy>=1900) and (yy<=2009) and (mm>=12) and (mm<=12) and (dd>=1)
  and (dd<=31)) then < сообщение "Введена неверная дата"> ; EXIT;
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
Почему не работает тег align=right?valign работает а align нет! aviv HTML и CSS 5 21.01.2009 17:46
Проблема с UserForm. То работает, то НЕ работает Maxx Microsoft Office Excel 6 19.11.2008 14:51
Проверка Манжосов Денис :) Общие вопросы Delphi 4 17.10.2008 16:27