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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2008, 19:20   #21
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Вот решение, без Mod и Div:

Код:
Var Bil :LongInt;
    L,R, I :LongInt;
    S :String;

function IntToStr(I :Longint):String;
Var Buf :String;
begin
 Buf := '';
 Str( I, Buf );
 IntToStr := Buf;
end;

function StrToInt(S :String):LongInt;
var I :LongInt; Err :Integer;
begin
 Val(S, I, Err);
 StrToInt:= I;
end;

begin
 Write('Vvedite nomer bileta: '); ReadLn(Bil);
 L := 0; R := L;
  S := IntToStr(Bil);

 IF (Length(S)<6) OR (Length(S)>6) Then
 begin
  WriteLn(#13#10, 'Nevernoe chislo! - [', S, ']');
  ReadLn;
  exit;
 end;

  For I:=1 To 3 Do
  L := L + StrToInt(S[I]);

    For I:=4 To 6 Do
  R := R + StrToInt(S[I]);

 IF L=R Then
  WriteLn(#13#10, 'Bilet Schastlivyi.')
 ELSE
  WriteLn(#13#10, 'Bilet Neschastlivyi.');

 Readln;
end.
Цитата:
Сообщение от puporev Посмотреть сообщение
Условие

Вы, мужики, вспомните с чего начинали изучать Паскаль. Что, сразу с написания Делфийских процедур и функций? Думаю нет. Так почему, когда человек ничего кроме if и else не проходил, вы начинаете козырять своими глубочайшими познаниями. Помогаете понять насколько он лох, что-ли? Так он не затем на форум обратился.
Никто же незапрещает изменить заголовок Функций-процедур как надо, а назвал так, чтобы понятно было их назначение.
В Delphi, испольуется Pascal`евский Val в StrToInt.
А IntToStr в Delphi сделан на Assembler:
Код:
function IntToStr(Value: Integer): string;
//  FmtStr(Result, '%d', [Value]);
asm
        PUSH    ESI
        MOV     ESI, ESP
        SUB     ESP, 16
        XOR     ECX, ECX       // base: 0 for signed decimal
        PUSH    EDX            // result ptr
        XOR     EDX, EDX       // zero filled field width: 0 for no leading zeros
        CALL    CvtInt
        MOV     EDX, ESI
        POP     EAX            // result ptr
        CALL    System.@LStrFromPCharLen
        ADD     ESP, 16
        POP     ESI
end;

Последний раз редактировалось Alter; 08.05.2008 в 19:34.
Alter вне форума Ответить с цитированием
Старый 08.05.2008, 22:37   #22
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если Вы считаете что примитивную школьную задачку в 15 строчек кода с использованием двух операторов, целесообразнее решать в 33 строки с созданием собственных функций, то это Ваше дело. Не надо только это свое мнение навязывать другим. Решить эту задачу наверное можно и еще более сложным способом, только зачем.
puporev вне форума Ответить с цитированием
Старый 08.05.2008, 23:06   #23
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Если Вы считаете что примитивную школьную задачку в 15 строчек кода с использованием двух операторов, целесообразнее решать в 33 строки с созданием собственных функций, то это Ваше дело. Не надо только это свое мнение навязывать другим. Решить эту задачу наверное можно и еще более сложным способом, только зачем.
Я некому ненавязываю, кто как хочет делать, пусть так и делает. Это личное дело, это просто вариант решения, для разнообразия .
Alter вне форума Ответить с цитированием
Старый 23.05.2008, 14:43   #24
t13sto
 
Регистрация: 23.05.2008
Сообщений: 8
По умолчанию

Вот мой простой пример...
Код:
program bilet;
uses crt;
var
number:string[6];
otvet, otvet1, otvet2, er, a, b, c, d, e, f:integer;
begin
clrscr;
writeln('vvedite nomer bileta i nazhmite enter:'); 
writeln; readln(number);
(*perevodim simvoly pod nomerami 1,2,3,4,5,6
v peremenie a, b, c, d, e, f*)
val(number[1],a,er); 
val(number[2],b,er);
val(number[3],c,er); 
val(number[4],d,er);
val(number[5],e,er);
val(number[6],f,er);
(*yznaem summu pervyh 3 i poslednih 3 chisel*)
otvet1:=(a+b+c); otvet2:=(d+e+f);
(*sravnivem otvet1 i otvet2 (oni dolzhny byt' ravnimy*)
if otvet1=otvet2 then writeln('U vas schastliviy billet! Nomer kotorogo: ',number)
else writeln('Vash billet ne schastliviy! Nomer kotorogo: ',number);
readln;
end.

Последний раз редактировалось t13sto; 23.05.2008 в 14:48.
t13sto вне форума Ответить с цитированием
Старый 23.05.2008, 15:32   #25
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А IntToStr в Delphi сделан на Assembler:
Разве? Это в какой делфе такое?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2008, 16:54   #26
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Разве? Это в какой делфе такое?
Напишите IntToStr в любом месте в коде формы или где то ещё в проекте, и нажмите волшебное сочетание Ctrl+LeftMouseButton по имени функции , там всё будет. И ещё, если заглянуть в справку Pascal, по именам Val и Str, то можно увидеть в их примерах интерсные совпадения.
Alter вне форума Ответить с цитированием
Старый 14.06.2011, 20:39   #27
Алексей Винокуров
Новичок
Джуниор
 
Регистрация: 14.06.2011
Сообщений: 2
По умолчанию

Это мой вариант .

program my ;
uses
cthreads,
Classes;
var
x:integer; // это наш счастливый билет

begin
writeln('Введите номер билета')
readln(x);
if (x>999999) or (x<100000) then
writeln('Введён неверный номер билета');
else
begin
if (x div 100000)+((x div 10000) mod 10)+((x div 1000) mod 10)=
(x mod 10)+((x mod 100) div 10)+((x mod 1000) div 100) then
writeln('Это счастливый билет!')
else
writeln('Это не счастливый билет(');
end;
readln;
end.
В правильности своего решения я уверен ,но могут быть синтаксические ошибке.

Последний раз редактировалось Алексей Винокуров; 14.06.2011 в 20:56.
Алексей Винокуров вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить, является ли матрица магическим квадратом. drakon803 Помощь студентам 11 14.12.2011 14:29
Задача в Exel (стоимость билета в зависимости от расстояния) Phill Помощь студентам 9 30.11.2010 00:20
Найти человека по номеру мобильного 2006demon2006 Свободное общение 7 15.09.2009 12:24
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
Определить, является ли заданная строка правильной записью вещественного числа Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 2 18.10.2007 16:53