Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с тремя задачами на языке Pascal (http://www.tehnari.ru/f41/t41814/)

Chelios 08.11.2010 21:53

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

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


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


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

Vladimir_S 08.11.2010 22:39

Цитата:

Сообщение от Chelios (Сообщение 415462)
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:. Поправьте, если нужно.

Chelios 08.11.2010 23:50

А если под предпоследней записью подрузамевается слово?
Допустим в 1 файле текст (Как зовут?)
а во 2 файле текст (меня)
Нужно получить ( Как меня зовут?)

MrSTEP 09.11.2010 00:28

Тогда "Как" и "зовут?" - две разные строки в первом файле, "меня" - строка во втором файле

Chelios 09.11.2010 08:33

В этой задаче 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

Прошу помочь с реализацией , заранее огромное спасибо.

Vladimir_S 09.11.2010 09:51

Цитата:

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

Тогда - существенно сложнее. Требуется расчленение последней строки. Подумаю.
С остальными задачами - не торопите. Сделаю, если кто-нибудь не опередит. Просто там возни много, а вот времени у меня мало.

Vladimir_S 09.11.2010 11:02

Цитата:

Сообщение от Chelios (Сообщение 415512)
А если под предпоследней записью подрузамевается слово?
Допустим в 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

Цитата:

Сообщение от Chelios (Сообщение 415462)
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.


Chelios 09.11.2010 20:07

Благодарю за помощь ! Буду ждать дальнейших вариантов решения.

Vladimir_S 09.11.2010 22:20

Цитата:

Сообщение от Chelios (Сообщение 415462)
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.



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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.