Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
ягодка
0 / 0 / 0
Регистрация: 04.04.2010
Сообщений: 34
#1

Записать в третий файл все компоненты файлов А и В

09.03.2012, 09:53. Просмотров 1029. Ответов 3
Метки нет (Все метки)

задачи по файлам.
1. Даны текстовые файлы А и В, содержащие символы. Записать в третий файл все компоненты файлов А и В.
2. Переписать в файл таблицы значений функций y=sin x и z=tg x на отрезке [0,3] c шагом 0,1. Значения x записать с 1 цифрой в дробной части, значения y – с двумя цифрами, значения z – в экспоненциальной форме.
3. В файле содержатся шестизначные номера телефонов и информация о сумме задолженности абонента данного телефона. Записи об одном абоненте могут повторяться. Программа должна выводить суммарную задолженность абонента по введенному номеру телефона
задачи по строкам.
4. В заданном предложении указать, сколько раз каждый символ встречается в тексте. Напечатать исходный текст и сообщение о каждом символе.
5. В заданном предложении поменять местами первое слово и самое длинное слово. Напечатать исходный и преобразованный тексты



и вот еще задача, не могу откомпилировать должна выводить график :
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
unit grfunc_;
interface
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations } 
public
{Public declarations }
end;
var
Forml: TForml;
implementation
{$R *.DFM}
// Функция, график которой надо построить 
Function f(x:real):real;
begin
f:=2*Sin(x)*exp(x/5) ;
end;
// строит график функции
procedure GrOfFunc;
var
x1,x2:real; // границы изменения аргумента функции
y1,y2:real; // границы изменения значения функции
х:real; // аргумент функции 
у:real; // значение функции в точке х 
dx:real; // приращение аргумента
l,b:integer; // левый нижний угол области вывода графика
w,h:integer; // ширина и высота области вывода графика
mx,my:real; // масштаб по осям X и Y 
х0,у0:integer; // точка — начало координат
begin
// область вывода графика
l:=10; // X — координата левого верхнего угла
b:=Forml.ClientHeight-20;
//У — координата левого верхнего угла
h:=Forml.ClientHeight-40; // высота
w:=Forml.Width-40; // ширина
x1:=0; // нижняя граница диапазона аргумента
х2:=25; // верхняя граница диапазона аргумента 
dx:=0.01; // шаг аргумента
// найдем максимальное и минимальное значения
// функции на отрезке [x1,x2]
y1:=f(xl); // минимум
y2:=f(xl); //максимум
x:=x1;
repeat
У := f (х);
if у < yl then yl:=y;
if у > у2 then y2:=y;
х:=x+dx; until (x >= х2);
// вычислим масштаб
my:=h/abs(y2-yl); // масштаб по оси Y
mx:=w/abs(x2-xl); // масштаб по оси X
х0:=1;
у0:=b-Abs(Round(y1*my)) ;
with form1.Canvas do
begin
// оси
MoveTo(l,b);LineTo(l,b-h);
MoveTo(x0,y0);LineTo(x0+w,y0);
TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
TextOut(l+5,b,FloatToStrF(yl,ffGeneral,6,3));
// построение графика
x:=xl; repeat
y:=f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
until (x >= x2);
end;
end;
procedure TForm1.FormPaint(Sender: TObject); 
begin
GrOfFunc; end;
// изменился размер окна программы
procedure TForm1.FormResize(Sender: TObject); 
begin
// очистить форму
forml.Canvas.FillRect(Rect(0,0,ClientWidth,
ClientHeight));
// построить график
GrOfFunc; 
end;
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 09:53
Ответы с готовыми решениями:

Дан файл f, компоненты которого являются целыми числами. Записать в файл g все четные числа f, а в файл h – все нечетны
Дан файл f, компоненты которого являются целыми числами. Записать в файл g все...

Сформировать файл X целых чисел. Записать в файл R все компоненты файла X, которые делятся на 2 и не делятся на 5.
Сформировать файл X компонентами которого являются целые числа. Записать в файл...

Различия двух файлов записать в третий
Есть 2 текстовых файла (1.txt , 2.txt) 1.txt: C:\Assch C:\boot.ini...

Записать в файл h сначала компоненты файла f , затем – компоненты файла g с сохранением порядка
Даны символьные файлы f иg . Записать в файлh сначала компоненты файлаf , затем...

Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке
Добрый день. Возник вопрос. Дан символьный файл f. Записать в файл g компоненты...

3
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
09.03.2012, 13:58 #2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Задача №1.
Первый способ - файлы рассматриваются, как текстовые.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
const
  Fn1 = 'file1.txt';
  Fn2 = 'file2.txt';
  Fn3 = 'file3.txt';
var
  F1, F2, F3 : TextFile;
  S : String;
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - щелчком мыши в левом
  //верхнем углу окна консоли и выбрать:
  //Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    //Полный путь к папке, в которой расположен исполняемый файл программы.
    //в конце пути записан слеш - в Windows это: "\", в Linux: "/".
    S := ExtractFilePath(ParamStr(0));
    //Первые два файла открываем в режиме чтения.
    AssignFile(F1, S + Fn1);
    Reset(F1);
    AssignFile(F2, S + Fn2);
    Reset(F2);
    //Создаём/пересоздаём третий файл и открываем его в режиме записи.
    AssignFile(F3, S + Fn3);
    Rewrite(F3);
 
    //Переписываем содержимое из первого файла в третий.
    while not Eof(F1) do begin
      Read(F1, S);
      Write(F3, S);
      if not Eof(F1) then begin
        Readln(F1);
        Writeln(F3);
      end;
    end;
 
    //Если требуется разделить содержимое файлов переводом строки.
    if not Eof(F2) then Writeln(F3);
 
    //Переписываем содержимое из второго файла в третий.
    while not Eof(F2) do begin
      Read(F2, S);
      Write(F3, S);
      if not Eof(F2) then begin
        Readln(F2);
        Writeln(F3);
      end;
    end;
    //Закрываем файлы.
    CloseFile(F1);
    CloseFile(F2);
    CloseFile(F3);
 
    Writeln('Данные из файлов: ', Fn1, ' и ', Fn2, ' записаны в файл: ', Fn3);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Второй способ - файлы рассматриваются, как бинарные.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
const
  Fn1 = 'file1.txt';
  Fn2 = 'file2.txt';
  Fn3 = 'file3.txt';
  //Размер буфера для чтения данных.
  Size = 10000;
var
  F1, F2, F3 : File;
  Arr : array of Byte;
  Cnt : Integer;
  S : String;
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - щелчком мыши в левом
  //верхнем углу окна консоли и выбрать:
  //Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    //Полный путь к папке, в которой расположен исполняемый файл программы.
    //в конце пути записан слеш - в Windows это: "\", в Linux: "/".
    S := ExtractFilePath(ParamStr(0));
    //Открываем первые два файла в режиме чтение/запись с минимальном блоком в 1 байт.
    AssignFile(F1, S + Fn1);
    Reset(F1, 1);
    AssignFile(F2, S + Fn2);
    Reset(F2, 1);
    //Третий файл создаём/пересоздаём и открываем в режиме записи
    //с минимальным блоком в 1 байт.
    AssignFile(F3, S + Fn3);
    Rewrite(F3, 1);
    //Размещаем в памяти буфер данных.
    SetLength(Arr, Size);
 
    //Переписываем содержимое из первого файла в третий.
    while not Eof(F1) do begin
      //Читаем из первого файла очередной блок данных.
      BlockRead(F1, Arr[0], Size, Cnt);
      //Записываем в третий файл столько байтов, сколько их было
      //прочитано из первого файла.
      BlockWrite(F3, Arr[0], Cnt);
    end;
 
    //Если требуется разделить содержимое файлов переводом строки.
    Arr[0] := 13;
    Arr[1] := 10;
    if not Eof(F2) then BlockWrite(F3, Arr[0], 2);
 
    //Переписываем содержимое из второго файла в третий.
    while not Eof(F2) do begin
      BlockRead(F2, Arr[0], Size, Cnt);
      BlockWrite(F3, Arr[0], Cnt);
    end;
    //Закрываем файлы.
    CloseFile(F1);
    CloseFile(F2);
    CloseFile(F3);
 
    Writeln('Данные из файлов: ', Fn1, ' и ', Fn2, ' записаны в файл: ', Fn3);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Задача №4.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
var
  S : String;
  Arr : array[#0..#255] of Integer;
  Ch : Char;
  i, Len : Integer;
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - щелчком мыши в левом
  //верхнем углу окна консоли и выбрать:
  //Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    //Обнуляем элементы массива.
    for Ch := #0 to #255 do Arr[Ch] := 0;
 
    //Анализируем строку.
    Len := Length(S);
    for i := 1 to Len do Inc(Arr[S[i]]);
 
    //Формируем строку результата.
    S := '';
    for Ch := #0 to #255 do begin
      if Arr[Ch] > 0 then begin
        if S <> '' then S := S + ', ';
        if Ch <= #32 then
          S := S + '#' + IntToStr( Ord(Ch) ) //Неотображаемые символы.
        else
          S := S + Ch //Отображаемые символы.
        ;
        S := S + '(' + IntToStr(Arr[Ch]) + ')';
      end;
    end;
 
    //Ответ.
    if S <> '' then begin
      Writeln('Список различных символов и количество их присутствий:');
      Writeln(S);
    end else begin
      Writeln('Строка пустая.');
    end;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Задача №5. В тексте может быть несколько слов с наибольшей длиной, поэтому в качестве самого длинного слова будем брать первое из самых длинных слов.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
type
  //Сведения о координатах слова.
  TWInfo = record
    Start, Len : Integer;
  end;
 
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
  S, Sw : String;
  i, Cnt, Len, LenW : Integer;
  W1, W2 : TWInfo;
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - слева вверху
  //окна консоли и выбрать: Свойства - закладка "Шрифт"
  //- шрифт "Lucida Console".
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    //Исходный текст.
    Writeln('Задайте текст:');
    Readln(S);
    Len := Length(S);
 
    LenW := 0;
    Cnt := 0;
    //Начальное задание координат первого слова.
    W1.Start := 0;
    W1.Len := Len;
    //Начальное задание координат самого длинного слова.
    W2.Start := 0;
    W2.Len := 0;
    for i := 1 to Len do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Уточняем длину текущего слова.
      Inc(LenW);
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then begin
        Inc(Cnt); //Порядковый номер слова.
        if Cnt = 1 then begin
          W1.Len := LenW;
          W1.Start := i - LenW + 1;
        end;
        if LenW > W2.Len then begin
          W2.Len := LenW;
          W2.Start := i - LenW + 1;
        end;
        LenW := 0; //Обнуляем длину слова.
      end;
    end;
 
    if W1.Start = 0 then
      Writeln('В тексте нет слов.')
    else if W1.Start = W2.Start then
      Writeln('Первое слово является самым длинным.')
    else begin //Меняем слова местами.
      //Запоминаем самое длинное слово.
      Sw := Copy(S, W2.Start, W2.Len);
      //Удаляем самое длинное слово.
      Delete(S, W2.Start, W2.Len);
      //На место самого длиного слова вставляем первое слово.
      Insert(Copy(S, W1.Start, W1.Len), S, W2.Start);
      //Удаляем первое слово.
      Delete(S, W1.Start, W1.Len);
      //На место первого слова записываем самое длинное слово.
      Insert(Sw, S, W1.Start);
      //Вывод результатов.
      Writeln('Изменённый текст:');
      Writeln(S);
    end;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
Zombi_sib
365 / 319 / 88
Регистрация: 26.05.2010
Сообщений: 744
Завершенные тесты: 1
09.03.2012, 15:57 #3
А может в 1 задание все таки надо записать все компоненты из 1 и 2 которые собственно одинаковые да или нет?
0
ягодка
0 / 0 / 0
Регистрация: 04.04.2010
Сообщений: 34
09.03.2012, 18:14  [ТС] #4
нет, нужно все компоненты из 1 файла и из 2 записать в 3
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 18:14

Дан файл f, компоненты которого являются натуральными числами. Получить в файле g все компоненты файла f, делящиеся на 3 и не делящиеся на 7.
Дан файл f, компоненты которого являются натуральными числами. Получить в...

Записать в файл g компоненты файла f в обратном порядке
Дан файл f, компоненты которого являются символами. Записать в файл g...

Записать в файл g компоненты файла f в обратном порядке
1. дан символьный файл f.записать в файл g компоненты файла f в обратном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru