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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2007, 14:46   #1
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию Найти числа,которые читаются слева-направо и справа-налево одинаково(например, 1001). Паскаль

Задача: найти все четырёхзначные числа-перевёртыши(числа,которые читаются слева-направо и справа-налево одинаково(например, 1001)). Результаты сохранить в файл.
Впринципе, алгоритм нахождения таких чисел понятен:
PHP код:
while a<=9999
do
if 
a=b
then a
:=a+1
else
begin
t
:=a div 1000;
s:=(a mod 1000div 100;
d:=(a mod 100div 10;
e:=(a mod 10);
if ((
t=e)and(s=d))
then
begin
b
:=a;
writeln(a,'=',b);
end
else a:=a+
но я не знаю как сделать запись в файл...
Помогите пожалуйста

Последний раз редактировалось NikLik; 22.11.2007 в 14:53.
NikLik вне форума Ответить с цитированием
Старый 22.11.2007, 15:00   #2
Cantana
форвард
Форумчанин
 
Аватар для Cantana
 
Регистрация: 03.08.2007
Сообщений: 130
По умолчанию

Код:
 
  AssignFile(f, fName);

   Rewrite(f);  // открыть для перезаписи          

while a<=9999 
do 
if a=b 
then a:=a+1 
else 
begin 
t:=a div 1000; 
s:=(a mod 1000) div 100; 
d:=(a mod 100) div 10; 
e:=(a mod 10); 
if ((t=e)and(s=d)) 
then 
begin 
b:=a; 
 // запись в файл
writeln(f,b); 
end 
else a:=a+1 

   CloseFile(f); // закрыть файл
dela ne v dengax a v yego kolichestve
Cantana вне форума Ответить с цитированием
Старый 22.11.2007, 15:15   #3
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Разобрался, спасибо.
Вот конечный код:
Код:
program perev;
var e,d,s,t,a,b:integer;
n:text;
begin
a:=1000;
assign(n,'FileName');
rewrite(n);
while a<=9999
do
if a=b
then a:=a+1
else
begin
t:=a div 1000;
s:=(a mod 1000) div 100;
d:=(a mod 100) div 10;
e:=(a mod 10);
if ((t=e)and(s=d))
then
begin
b:=a;
writeln(n,b);
end
else a:=a+1
end;
close(n);
end.

Последний раз редактировалось NikLik; 22.11.2007 в 18:36.
NikLik вне форума Ответить с цитированием
Старый 22.11.2007, 18:54   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А не проще ли перевести числа в строки и анализировать строки?
Кодов полно в соседних темах.
А повелительные наклонения вроде "напиши код" я не воспринимаю.

Последний раз редактировалось mihali4; 22.11.2007 в 19:54.
mihali4 вне форума Ответить с цитированием
Старый 22.11.2007, 19:24   #5
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Напиши код, может и проще.
Но для меня привычней такой вариант.
NikLik вне форума Ответить с цитированием
Старый 22.11.2007, 21:00   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Разобрался, спасибо.
Вот конечный код:
А ты уверен, что это работает?
puporev вне форума Ответить с цитированием
Старый 22.11.2007, 21:03   #7
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
А ты уверен, что это работает?
да, всё работает--проверил
NikLik вне форума Ответить с цитированием
Старый 22.11.2007, 22:40   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

На первый взгляд показалось, что где то напутано, но действительно работает.
Просто у меня код короче и тоже работает.
Код:
program ch1111;
var i,d,e,s,t:integer;
    n:text;
begin
   assign(n,'Ch1111');
   rewrite(n);
   for i:=1000 to 9999 do
     begin
       t:=i div 1000;
       s:=i mod 1000 div 100;
       d:=i mod 100 div 10;
       e:=i mod 10;
       if (t=e) and (s=d) then
       writeln(n,i);
     end;
   close(n);
end.
puporev вне форума Ответить с цитированием
Старый 22.11.2007, 23:00   #9
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

а...ну у тебя просто используется цикл for, там переменная автоматически меняется... у меня же счётчик
ну и впринципе у меня можно b убрать я сейчас уже сам не понимаю для чего я его тогда внёс)
NikLik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. найти все числа кратные трем и посчитать их количество __k1ll3r__ Помощь студентам 6 02.04.2008 16:37
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
двузначные числа которые при умножении на 3 будут заканчиваться на цифру 4 Ases_51 Паскаль, Turbo Pascal, PascalABC.NET 4 13.01.2008 11:37
Даны три числа. Выберите те из них, которые принадлежат заданному отрезку [а, b]. Sheff903 Помощь студентам 1 27.11.2007 21:28
Нужно разбить те числа которые в одной ячейке по разным ячейчам в столбец Alexander_Gr Microsoft Office Excel 8 20.11.2007 08:02