Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.11.2010, 21:53   #1 (permalink)
Chelios
Новичок
 
Регистрация: 08.11.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с тремя задачами на языке Pascal

Здравствуйте!
Прошу помощи в реализации 3х задач на языке Pascal.

1)Даны два файла f1 и f2. Создать файл f3, в котором вставлен текст f2 после предпоследней записи f1.


2)Дано натуральное N<=100. Записать это число русскими словами. (Например: двадцать один, девяносто три).


3)Число оканчивается на 2. Если двойку перенести в начало, число удвоится. Найти это число.
Chelios вне форума   Ответить с цитированием

Старый 08.11.2010, 21:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Если поискать, то на форуме можно найти схожие темы

Помогите написать 2 программы по программированию на языке С++
Требуется помощь в написании программы на языке Turbo Pascal
Помогите написать программу на языке Делфи
Нужна помощь с задачами
Помогите, пожалуйста, с программой на языке Паскаль

Старый 08.11.2010, 22:39   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Chelios Посмотреть сообщение
1)Даны два файла f1 и f2. Создать файл f3, в котором вставлен текст f2 после предпоследней записи f1.
Если под "записью" понимается строка, то так:
Код:
VAR
 S,S1:String;
 f1,f2,f3:TEXT;
BEGIN
 Assign(f1,'D:\t1.txt');
 ReSet(f1);
 Assign(f3,'D:\t3.txt');
 ReWrite(f3);
 Repeat
  ReadLn(f1,S);
  If (not EoF(f1)) then
   WriteLn(f3,S)
  else
   begin
    Assign(f2,'D:\t2.txt');
    ReSet(f2);
    Repeat
     ReadLn(f2,S1);
     WriteLn(f3,S1);
    Until EoF(f2);
    Close(f2);
    WriteLn(f3,S);
   end;
 Until EoF(f1);
 Close(f1);
 Close(f3);
END.
Здесь файлы расположены в корневом каталоге диска D:. Поправьте, если нужно.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.11.2010, 23:50   #3 (permalink)
Chelios
Новичок
 
Регистрация: 08.11.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А если под предпоследней записью подрузамевается слово?
Допустим в 1 файле текст (Как зовут?)
а во 2 файле текст (меня)
Нужно получить ( Как меня зовут?)
Chelios вне форума   Ответить с цитированием
Старый 09.11.2010, 00:28   #4 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Тогда "Как" и "зовут?" - две разные строки в первом файле, "меня" - строка во втором файле
MrSTEP вне форума   Ответить с цитированием
Старый 09.11.2010, 08:33   #5 (permalink)
Chelios
Новичок
 
Регистрация: 08.11.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В этой задаче 3)Число оканчивается на 2. Если двойку перенести в начало, число удвоится. Найти это число. известно что число равно 105263157894736842 , последовательность нахождения этого числа

Х2 * 2 = 2Х
Дальше подбор.
Х2 *2 = 2Х4
Х42 *2 = 2Х84
Х842 *2 = 2Х684
Х6842 *2 = 2Х3684
Х36842 *2 = 2Х73684
Х736842 *2 = 2Х473684
Х4736842 *2 = 2Х9473684
Х94736842 *2 = 2Х89473684
Х894736842 *2 = 2Х789473684
Х7894736842 *2 = 2Х5789473684
Х57894736842 *2 = 2Х15789473684
Х157894736842 *2 = 2Х315789473684
Х3157894736842 *2 = 2Х6315789473684
Х63157894736842 *2 = 2Х26315789473684
Х263157894736842 *2 = 2Х526315789473684
Х5263157894736842 *2 = 2Х0526315789473684
Х05263157894736842 *2 = 2Х10526315789473684*
10526315789473684 *2 = 210526315789473684

Прошу помочь с реализацией , заранее огромное спасибо.
Chelios вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.11.2010, 09:51   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Chelios Посмотреть сообщение
А если под предпоследней записью подрузамевается слово?
Допустим в 1 файле текст (Как зовут?)
а во 2 файле текст (меня)
Нужно получить ( Как меня зовут?)
Тогда - существенно сложнее. Требуется расчленение последней строки. Подумаю.
С остальными задачами - не торопите. Сделаю, если кто-нибудь не опередит. Просто там возни много, а вот времени у меня мало.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.11.2010, 11:02   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Chelios Посмотреть сообщение
А если под предпоследней записью подрузамевается слово?
Допустим в 1 файле текст (Как зовут?)
а во 2 файле текст (меня)
Нужно получить ( Как меня зовут?)
Ладно, вот Вам такой вариант:

Код:
VAR
 S,S1:String;
 f1,f2,f3:TEXT;
 i,Ifix:INTEGER;
BEGIN
 Ifix:=0;
 Assign(f1,'D:\t1.txt');
 ReSet(f1);
 Assign(f3,'D:\t3.txt');
 ReWrite(f3);
 Repeat
  ReadLn(f1,S);
  If (not EoF(f1)) then
   WriteLn(f3,S)
  else
   begin
    For i:=1 to Length(S) do
     If S[i]=' ' then Ifix:=i;
    For i:=1 to Ifix do
     Write(f3,S[i]);
    WriteLn(f3);
    Assign(f2,'D:\t2.txt');
    ReSet(f2);
    Repeat
     ReadLn(f2,S1);
     WriteLn(f3,S1);
    Until EoF(f2);
    Close(f2);
    For i:=Ifix+1 to Length(S) do
     Write(f3,S[i]);
    WriteLn(f3);
   end;
 Until EoF(f1);
 Close(f1);
 Close(f3);
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.11.2010, 11:57   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Chelios Посмотреть сообщение
2)Дано натуральное N<=100. Записать это число русскими словами. (Например: двадцать один, девяносто три).
Код:
CONST
 Names1:ARRAY[1..9] of STRING = ('один',
                                 'два',
                                 'три',
                                 'четыре',
                                 'пять',
                                 'шесть',
                                 'семь',
                                 'восемь',
                                 'девять');

 Names2:ARRAY[1..10] of STRING = ('десять',
                                  'одиннадцать',
                                  'двенадцать',
                                  'тринадцать',
                                  'четырнадцать',
                                  'пятнадцать',
                                  'шестнадцать',
                                  'семнадцать',
                                  'восемнадцать',
                                  'девятнадцать');

 Names3:ARRAY[1..8] of STRING = ('двадцать',
                                 'тридцать',
                                 'сорок',
                                 'пятьдесят',
                                 'шестьдесят',
                                 'семьдесят',
                                 'восемьдесят',
                                 'девяносто');

VAR
 N:BYTE;
BEGIN
 Write('N= ');
 ReadLn(N);
 If N=0 then WriteLn('ноль') else
 If N=100 then WriteLn('сто') else
 If N<10 then WriteLn(Names1[N]) else
 If N<20 then WriteLn(Names2[N-9]) else
 If (N mod 10)=0 then WriteLn(Names3[(N div 10)-1]) else
 WriteLn(Names3[(N div 10)-1]+' '+Names1[N mod 10]);
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.11.2010, 20:07   #9 (permalink)
Chelios
Новичок
 
Регистрация: 08.11.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Благодарю за помощь ! Буду ждать дальнейших вариантов решения.
Chelios вне форума   Ответить с цитированием
Старый 09.11.2010, 22:20   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Chelios Посмотреть сообщение
3)Число оканчивается на 2. Если двойку перенести в начало, число удвоится. Найти это число.
Код:
VAR
 A1,A2:ARRAY[1..100] of BYTE;
 N:BYTE;
 i:Integer;
BEGIN
 A1[1]:=2;
 A2[1]:=4;
 N:=1;
 Repeat
  Inc(N);
  A1[N]:=A2[N-1];
  A2[N]:=((A1[N]*2) mod 10)+((A1[N-1]*2) div 10);
 Until (A1[N]=1) and (A2[N]=2);
 For i:=N downto 1 do
  Write(A1[i]);
 WriteLn;
 For i:=N downto 1 do
  Write(A2[i]);
 WriteLn;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:18.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.