Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62

Помогите найти ошибку в алгоритме работы с файлами.

22.11.2013, 16:53. Показов 822. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят,а подскажите,вот требуется чтобы входной файл был 'input.txt' ,а выходной 'output.txt',как в простых задачах я понял делать ,после begin вставляем assign (input,'input.txt'); reset(input);assign (output,'output.txt'); rewrite(output);
,а перед end close (input);close (output);,а вот как быть,если программа не простая,а в ней содержится например 5 функций?а потом только считывание данных и вызов функций?пытался в самом конце это сделать,т.е. идут вот 5 функций,а я перед последним бегином уже который вне всех функций вставляю и перед последним эндом,но,такая программа не компилируется,если не затруднит подскажите,в учебнике такое не разбирается
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2013, 16:53
Ответы с готовыми решениями:

Работа с файлами, помогите найти ошибку.
Нужно написать программу которая будет выписывать в файл значения синуса от 0 до 2Pi с шагом Pi/11 в два столбика-в первом угол, во втором...

Найти ошибку в коде работы с файлами
Ребят, помогите плиз, походу проблема с логикой вычисления, но я уже не вывожу, хелпаните кто можем var a,b: file of real; ...

Найти ошибку в коде работы с массивами и файлами последовательного доступа
Выдает неправильный вывод, не знаю что за проблема, найдите ошибку пожалуйста и исправьте: program qq; uses crt; const n=10; ...

13
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
22.11.2013, 16:56
Погоди, телепата позову, чтобы написал за тебя неработающий код...

Да, и воспользуйся пробелами в должном объеме, а не в минималистическом.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62
22.11.2013, 16:59  [ТС]
Цитата Сообщение от APALoff Посмотреть сообщение
Погоди, телепата позову, чтобы написал за тебя неработающий код...

Да, и воспользуйся пробелами в должном объеме, а не в минималистическом.
Да код рабочий,если без файлов идти,а там надо с файлами и по какому алгоритму это пишется мне интересно.
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
22.11.2013, 17:05
Цитата Сообщение от Drosya12 Посмотреть сообщение
Да код рабочий,если без файлов идти,а там надо с файлами и по какому алгоритму это пишется мне интересно.
Видимо от тебя мы код не дождемся...
Я например, мало что понял из твоего первого поста.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62
22.11.2013, 17:06  [ТС]
Цитата Сообщение от APALoff Посмотреть сообщение
Видимо от тебя мы код не дождемся...
Я например, мало что понял из твоего первого поста.
А,извиняюсь,вот
Pascal
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
var a, b, s: string;
  K: integer;
 
function CharToByte(c: char): byte;
begin
  CharToByte := ord(c) - ord('0');
end;
 
function BytetoChar(c: byte): char;
begin
  BytetoChar := chr(c + ord('0'));
end;
 
function Summa(x, y: string): string;
var i: integer;
  summ: byte;
  res: string;
begin
  res := '';
  while length(x) < length(y) do
    x := '0' + x;
  while length(y) < length(x) do
    y := '0' + y;
  for i := 1 to length(x) do
    res := res + '0';
  for i := length(x) downto 2 do
  begin
    summ := CharToByte(x[i]) + CharToByte(y[i]) + CharToByte(res[i]);
    res[i] := bytetochar(summ mod 10);
    res[i - 1] := bytetochar(summ div 10);
  end;
  summ := CharToByte(x[1]) + CharToByte(y[1]) + CharToByte(res[1]);
  if summ <= 9 then
    res[1] := bytetochar(summ)
  else begin
    res[1] := bytetochar(summ mod 10);
    res := bytetochar(summ div 10) + res;
  end;
  summa := res;
end;
 
function MultDigit(x, y: string): string;
var i: integer;
  Mult: byte;
  res: string;
begin
  res := '';
  for i := 1 to length(x) do
    res := res + '0';
  for i := length(x) downto 2 do
  begin
    Mult := CharToByte(x[i]) * CharToByte(y[1]) + CharToByte(res[i]);
    res[i] := bytetochar(Mult mod 10);
    res[i - 1] := bytetochar(Mult div 10);
  end;
  mult := CharToByte(x[1]) * CharToByte(y[1]) + CharToByte(res[1]);
  if mult <= 9 then
    res[1] := bytetochar(mult)
  else begin
    res[1] := bytetochar(mult mod 10);
    res := bytetochar(mult div 10) + res;
  end;
  MultDigit := res;
end;
 
function MultNumb(x, y: string): string;
var i: integer;
  Mult: byte;
  res: string;
  buf: string;
  tmp: string;
begin
  res := '';
  buf := '';
  for i := length(y) downto 1 do
  begin
    tmp := Multdigit(x, y[i]) + buf;
    res := summa(res, tmp);
    buf := buf + '0';
  end;
  MultNumb := res;
end;
 
function HighLow(x, y: string): integer;
var k: integer;
begin
  if trim(x) = trim(y) then begin HighLow := 0; exit; end;
  if Length(x) > length(y) then begin HighLow := 1; exit; end
  else
    if Length(y) > length(x) then begin HighLow := -1; exit; end
    else
    begin
      k := 1;
      while (x[k] = y[k]) do inc(k);
      if CharToByte(x[k]) > CharToByte(y[k]) then begin HighLow := 1; exit; end
      else begin HighLow := -1; exit; end
    end;
 
 
end;
 
begin
  write('Input Number:');
  readln(b);
  k := 1;
  s := '1';
  while highlow(s, b) = -1 do begin
    inc(k);
    Str(k, a);
    s := MultNumb(s, a);
  end;
  if highlow(s, b) = 1 then writeln('No Fuck!!!')
  else
    writeln(a, '!=', b);
end.
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
22.11.2013, 17:10
Учимся пользоваться ТЕГАМИ!

И объясняй все заново на примере кода, с должнЫм количеством пробелов и переносов.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62
22.11.2013, 17:17  [ТС]
Цитата Сообщение от APALoff Посмотреть сообщение
Учимся пользоваться ТЕГАМИ!

И объясняй все заново на примере кода, с должнЫм количеством пробелов и переносов.
Pascal
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
var a, b, s: string;
  K: integer;
function CharToByte(c: char): byte;
begin
  CharToByte := ord(c) - ord('0');
end;
function BytetoChar(c: byte): char;
begin
  BytetoChar := chr(c + ord('0'));
end;
function Summa(x, y: string): string;
var i: integer;
  summ: byte;
  res: string;
begin
  res := '';
  while length(x) < length(y) do
    x := '0' + x;
  while length(y) < length(x) do
    y := '0' + y;
  for i := 1 to length(x) do
    res := res + '0';
  for i := length(x) downto 2 do
  begin
    summ := CharToByte(x[i]) + CharToByte(y[i]) + CharToByte(res[i]);
    res[i] := bytetochar(summ mod 10);
    res[i - 1] := bytetochar(summ div 10);
  end;
  summ := CharToByte(x[1]) + CharToByte(y[1]) + CharToByte(res[1]);
  if summ <= 9 then
    res[1] := bytetochar(summ)
  else begin
    res[1] := bytetochar(summ mod 10);
    res := bytetochar(summ div 10) + res;
  end;
  summa := res;
end;
function MultDigit(x, y: string): string;
var i: integer;
  Mult: byte;
  res: string;
begin
  res := '';
  for i := 1 to length(x) do
    res := res + '0';
  for i := length(x) downto 2 do
  begin
    Mult := CharToByte(x[i]) * CharToByte(y[1]) + CharToByte(res[i]);
    res[i] := bytetochar(Mult mod 10);
    res[i - 1] := bytetochar(Mult div 10);
  end;
  mult := CharToByte(x[1]) * CharToByte(y[1]) + CharToByte(res[1]);
  if mult <= 9 then
    res[1] := bytetochar(mult)
  else begin
    res[1] := bytetochar(mult mod 10);
    res := bytetochar(mult div 10) + res;
  end;
  MultDigit := res;
end;
function MultNumb(x, y: string): string;
var i: integer;
  Mult: byte;
  res: string;
  buf: string;
  tmp: string;
begin
  res := '';
  buf := '';
  for i := length(y) downto 1 do
  begin
    tmp := Multdigit(x, y[i]) + buf;
    res := summa(res, tmp);
    buf := buf + '0';
  end;
  MultNumb := res;
end;
function HighLow(x, y: string): integer;
var k: integer;
begin
  if trim(x) = trim(y) then begin HighLow := 0; exit; end;
  if Length(x) > length(y) then begin HighLow := 1; exit; end
  else
    if Length(y) > length(x) then begin HighLow := -1; exit; end
    else
    begin
      k := 1;
      while (x[k] = y[k]) do inc(k);
      if CharToByte(x[k]) > CharToByte(y[k]) then begin HighLow := 1; exit; end
      else begin HighLow := -1; exit; end
    end;
end;
begin
  write('Input Number:');
  readln(b);
  k := 1;
  s := '1';
  while highlow(s, b) = -1 do begin
    inc(k);
    Str(k, a);
    s := MultNumb(s, a);
  end;
  if highlow(s, b) = 1 then writeln('No Fuck!!!')
  else
    writeln(a, '!=', b);
end.
Вроде оформил так,а должна быть такая штука:должно производится чтение из файла 'input.txt' , а выходной файл должен быть 'output.txt'
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
22.11.2013, 17:44
Что должно читаться? Что должно записываться? В каком формате?
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62
22.11.2013, 17:50  [ТС]
Цитата Сообщение от APALoff Посмотреть сообщение
Что должно читаться? Что должно записываться? В каком формате?
Вот инструкия из первых уст:решение a+b:
Pascal
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
var
fin, fout: TextFile;  //переменные для работы с текстовыми файлами - обязательно!
a, b, c: Longint;  // исходные данные и результат
 
begin
{ CONSOLE}
 
AssignFile(fin, 'input.txt'); // эта и следующая строка - обязательны: нужно
Reset(fin); // связать файловую переменную с текстовым файлом и открыть его
 
read(fin, a, b); // не во всех задачах такие простые входные данные, 
                 // возможно, потребуется более сложный ввод 
 
c:=a+b; // собственно решение задачи
 
CloseFile(fin); // завершение работы с входным файлом - обязательно!
 
AssignFile(fout, 'output.txt'); // эта и следующая строка - обязательны:
Rewrite(fout); // они обеспечивают вывод
 
write(fout, c); // вывод решения
 
CloseFile(fout); // завершение работы с выходным файлом - обязательно!
 
end.
Обратите внимание на чтение из текстового файла. Нужно внимательно изучить,
в какой последовательности входные данные расположены во входном файле
(не исключено, что на нескольких строках), и именно так их извлекать из него.©
И вот как с "простыми программами" данное действо совершать,мне понятно,а с более сложными нет
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
22.11.2013, 17:58
Хм, если я правильно понял, тебя должна заинтересовать тема типизированных переменных и тип Record, а так же раздел типизированных файлов.

Пример:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tMas = Record
  M : Array[1..4] of Byte;
  S : String;
End;
Var
  f : file of tMas
  A : tMas;
Begin
  Assign(f,'out.out');
  A.M[1]:=1;A.M[2]:=1;A.M[3]:=1;A.M[4]:=4;
  A.S:='Test';
  Reset(f);
  Write(f,A);
  Close(f);
End.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62
22.11.2013, 18:14  [ТС]
Цитата Сообщение от APALoff Посмотреть сообщение
Хм, если я правильно понял, тебя должна заинтересовать тема типизированных переменных и тип Record, а так же раздел типизированных файлов.

Пример:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tMas = Record
  M : Array[1..4] of Byte;
  S : String;
End;
Var
  f : file of tMas
  A : tMas;
Begin
  Assign(f,'out.out');
  A.M[1]:=1;A.M[2]:=1;A.M[3]:=1;A.M[4]:=4;
  A.S:='Test';
  Reset(f);
  Write(f,A);
  Close(f);
End.
Получается,что так,в вашем примере примерно понятна картина (хоть и оочень примерно), а вот как все-таки быть с "большой" программой? Простенькие задачи я вот решал и все успешно получалось,но еще ни разу не встречался с таким обилием функций.
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
23.11.2013, 02:15
По поводу "больших" программ однозначного ответа не дать, пока не будет однозначного вопроса, но все будет примерно так же.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
23.11.2013, 07:57
А нужно было не перед последним begin, а после него (исполняемый код должен быть частью основной программы или вызываемой процедуры/функции, но не может быть "между ними"), и все получится.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 62
23.11.2013, 13:13  [ТС]
Цитата Сообщение от bormant Посмотреть сообщение
А нужно было не перед последним begin, а после него (исполняемый код должен быть частью основной программы или вызываемой процедуры/функции, но не может быть "между ними"), и все получится.
Всем спасибо,вчера уже сам разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2013, 13:13
Помогаю со студенческими работами здесь

Найти ошибку в разветвляющемся алгоритме
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { int xP,xK,step,x; float f,a,b,c; cout&lt;&lt;&quot;Input...

Не могу найти ошибку в алгоритме
Добрый день, уважаемые форумчане. Необходимо решить следующую задачу: Дана последовательность x=(x1,…,xn) натуральных чисел,...

Необходимо найти ошибку в алгоритме
Готовлю курсовой проект, столкнулся с простейшей ошибкой деления на ноль, но выловить её не получается, может подскажите, в чём проблема....

Найти ошибку в алгоритме обхода графа
Всё работает нормально, но почему то он Выводит не правильные значения... Вот код: using System; using System.Collections; ...

Не могу найти ошибку в алгоритме Флойда-Уоршелла
Дан ориентированный граф, рёбрам которого приписаны некоторые неотрицательные веса (длины). Найти длину кратчайшего пути из вершины s в...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru