![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Clerick |
![]()
Сообщение
#1
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Дали новую тему, текстовые файлы. Давали студенты и никто из группы ничего не понял...
![]() А задачи нужно сдать завтра. ![]() 1. Дан текстовый файл, содержащий целые числа. Найти • Арифметическое среднее чисел в файле; • Номер максимального элемента в файле; (решена) 2. Дан текстовый файл, содержащий строки. Найти самые короткие строки. (решена) 3. Даны два текстовых файла. Записать в третий только те строки, которые есть и в первом и во втором файлах. 4. Даны два файла А и В(тип элементов одинаковый). Поменять местами содержимое этих файлов. Использовать процедуру Rename не разрешается. Заранее спасибо!!! ![]() Сообщение отредактировано: Clerick - 28.03.2006 13:23 -------------------- После дождя обязательно выглянет солнце)
|
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
FAQ : Файлы + поиск по форуму, все решалось неоднократно.
Ждешь готового решения ? Делай сам, будут ошибки мы исправим. Сообщение отредактировано: klem4 - 23.03.2006 18:52 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Clerick |
![]()
Сообщение
#3
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Спасибо!!! ![]() Цитата Ждешь готового решения ? Делай сам, будут ошибки мы исправим. Проблема в том, что с данной темой ни разу не сталкивался и в принципе не знаю что делать... ![]() Но есть ссылка!!! Почитаем, подумаем, поделаем... Почитали, подумали и ни к чему не пришли... Можно хотя бы одну решить, в качестве примера?(понимаю, что наглею, но желательно бы что-нибудь из первых двух) Сообщение отредактировано: Clerick - 23.03.2006 20:14 -------------------- После дождя обязательно выглянет солнце)
|
Ozzя |
![]()
Сообщение
#4
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Можно хотя бы одну решить, в качестве примера? Если только в качестве примера ![]() Цитата 1. Дан тестовый файл, содержащий целые числа. Найти • Арифметическое среднее чисел в файле; Код const n = 255; var f : file of integer; i : integer; x : integer; sum:real; begin Randomize; { Заполнение файла } Assign(F, 'integer.dat'); Rewrite(F); for i:=1 to n do begin x := Random (MaxInt); write(f,x); end; Close(F); { Обработка файла } Reset(F); sum:=0; i:=0; while not eof(f) do begin read(f,x); sum:=sum+x; i:=i+1; end; sum:=sum/i; Close(F); WriteLn('Number of elements = ',i); WriteLn('Sum of elements = ',sum); end. |
klem4 |
![]()
Сообщение
#5
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Держи первое, дабьше делай сам.
uses crt;
var
f : text;
count, nmax, n : integer;
sr : single;
begin
clrscr;
assign(f, 'c:\first.txt'); // связываемся с файлом
reset(f); // открываем файл для чтение (он должен быть уже создан)
sr := 0;
count := 0;
nmax := 0;
while not(eof(f)) do begin // пока не достигнут конец файла
readln(f, n); // читаем число
inc(count); // увеличиваем счетчик
sr := sr + n; // увеличиваем сумму
end;
close(f); // завершаем раюоту с файлом
if count <> 0 then begin // считаем среднее арифметическое
sr := sr / count;
writeln('Sr = ', sr : 3 : 3);
writeln('Count = ', count);
end else writeln('Oops, count = 0'); // файл был пуст
end.
firts.txt : 1 2 7 0 5 Sr = 3.0 count = 5; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Ozzя |
![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата 1. Дан тестовый файл, Опечатка? текстовый? Хм .. а я даже и не заметил ![]() Сообщение отредактировано: klem4 - 24.03.2006 9:19 |
Clerick |
![]()
Сообщение
#7
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Спасибо!!! И извиняюсь за ошибку!!!
Наткнулся на другую задачу и застрял... Дана матрица m на n заполненная random от а до b. Нужно записать ее в файл. Составил прогу: ses crt;
const n=5;
m=5;
var f:text;
j, i, a, b:integer;
g:array [1..n,1..m] of integer;
begin
Read(a,b);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
g[i,j]:=random (b-a)+a;
Write (g[i,j]:3);
end;
Writeln;
end;
assign (f, 'text.txt');
for i:=1 to n do begin
for j:=1 to m do begin rewrite (f);
Writeln (f, g[i,j]);
end;
end;
Readln;
end.
А она в файл не записывает... В чем ошибка? -------------------- После дождя обязательно выглянет солнце)
|
Clerick |
![]()
Сообщение
#8
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
firts.txt : 1 2 7 0 5 Sr = 3.0 count = 5; А если я в одной строке два числа или больше ставлю? ![]() -------------------- После дождя обязательно выглянет солнце)
|
Ozzя |
![]()
Сообщение
#9
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата for j:=1 to m do begin rewrite (f); Ты внутри цикла каждый раз уничтожаешь файл и создаешь его заново. Вынеси за цикл: rewrite (f);
for i:=1 to n do
for j:=1 to m do
Writeln (f, g[i,j]);
Цитата А если я в одной строке два числа или больше ставлю? Тогда усложнится процедура чтения и обработки файла. Зачем нужны лишние хлопоты? |
Clerick |
![]()
Сообщение
#10
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Вынеси за цикл: Вынес и все равно файл пустой остается... Цитата [Тогда усложнится процедура чтения и обработки файла. Зачем нужны лишние хлопоты? Так интересно же как это будет выглядеть!!! А с другой стороны, допустим, файл такой дали. Тогда что делать? Сообщение отредактировано: Clerick - 24.03.2006 16:00 -------------------- После дождя обязательно выглянет солнце)
|
Ozzя |
![]()
Сообщение
#11
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
const
n=5;
m=5;
var
f:text;
j, i, a, b:integer;
g:array [1..n,1..m] of integer;
begin
Read(a,b);
randomize;
for i:=1 to n do
for j:=1 to m do
g[i,j]:=random (b-a)+a;
assign (f, 'c:\bp\text.txt');
rewrite (f);
for i:=1 to n do
for j:=1 to m do
Writeln (f, g[i,j]);
close(f);
readln;
end.
|
Clerick |
![]()
Сообщение
#12
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
О теперь работает!
![]() Close (f); забыл поставить... ![]() [Тогда усложнится процедура чтения и обработки файла. Зачем нужны лишние хлопоты? Цитата Так интересно же как это будет выглядеть!!! А с другой стороны, допустим, файл такой дали. Тогда что делать? Только вопрос на ту же тему как записать в файл именно "матрицу"? Например: 5 3 6 7 5 4 4 7 8 1 7 2 9 7 4 4 7 8 4 5 Сообщение отредактировано: Clerick - 24.03.2006 16:39 -------------------- После дождя обязательно выглянет солнце)
|
Ozzя |
![]()
Сообщение
#13
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
uses
crt;
const
n=5;
m=5;
var
f:text;
j, i, a, b:integer;
g:array [1..n,1..m] of integer;
begin
Read(a,b);
randomize;
for i:=1 to n do
for j:=1 to m do
g[i,j]:=random (b-a)+a;
assign (f, 'c:\bp\text.txt');
rewrite (f);
for i:=1 to n do
begin
for j:=1 to m do
Write (f, g[i,j],' ');
writeln(f);
end;
close(f);
readln;
end.
|
Clerick |
![]()
Сообщение
#14
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Теперь все одну строчку...
![]() -------------------- После дождя обязательно выглянет солнце)
|
Ozzя |
![]()
Сообщение
#15
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Все нормально отрабатывает
![]() |
Clerick |
![]()
Сообщение
#16
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Все в норме!!! Пропустил один оператор...
![]() ![]() -------------------- После дождя обязательно выглянет солнце)
|
Altair |
![]()
Сообщение
#17
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата Как имея файл со некоторым количеством строк, определить сколько их? while not eof(f) do begin readln(f,s); inc(result) end;
результат (количество строк) после выполнения кода в переменной result (int). -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Clerick |
![]()
Сообщение
#18
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Если я прав(приближенно), то след. прога должна выводить содержимое файла
uses crt;
var f:text;
j, i, max, c:integer;
s:string;
begin
assign (f, 'text.txt');
reset (f);
while not eof(f) do
begin
Readln(f,i);
inc(j);
end;
for i:=1 to j do begin
while not eoln(f) do
begin
readln (f,s);
write (s:2);
Writeln;
end; end;
close(f);
end.
А она не выводит. В чем ошибка? -------------------- После дождя обязательно выглянет солнце)
|
Ozzя |
![]()
Сообщение
#19
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
uses
crt;
var
f:text;
j, i, max, c:integer;
s:string;
begin
assign (f, 'text.txt');
reset (f);
while not eof(f) do
begin
Readln(f,s);
Writeln(s);
inc(j);
end;
close(f);
end.
|
Clerick |
![]()
Сообщение
#20
|
![]() студент.. ![]() ![]() ![]() Группа: Пользователи Сообщений: 287 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Спасибо!!!
Появился вопр. к з.2 можно её решить след. образ. Сосчитать кол-во символов в каждой строке, загнать в массив, а потом сравнить и выявить min? Или можно проще? -------------------- После дождя обязательно выглянет солнце)
|
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 20:51 |