IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Текстовые файлы, Совершенно не понятно...
сообщение
Сообщение #1


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Дали новую тему, текстовые файлы. Давали студенты и никто из группы ничего не понял... blink.gif
А задачи нужно сдать завтра. wacko.gif Помогите хоть с какими-нибудь двумя!!!

1. Дан текстовый файл, содержащий целые числа. Найти
• Арифметическое среднее чисел в файле;
• Номер максимального элемента в файле; (решена)

2. Дан текстовый файл, содержащий строки. Найти самые короткие строки. (решена)

3. Даны два текстовых файла. Записать в третий только те строки, которые есть и в первом и во втором файлах.

4. Даны два файла А и В(тип элементов одинаковый). Поменять местами содержимое этих файлов.
Использовать процедуру Rename не разрешается.

Заранее спасибо!!! smile.gif

Сообщение отредактировано: Clerick -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


FAQ : Файлы + поиск по форуму, все решалось неоднократно.

Ждешь готового решения ? Делай сам, будут ошибки мы исправим.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Цитата(klem4 @ 23.03.2006 20:52) *

FAQ : Файлы + поиск по форуму, все решалось неоднократно.



Спасибо!!! smile.gif

Цитата
Ждешь готового решения ? Делай сам, будут ошибки мы исправим.


Проблема в том, что с данной темой ни разу не сталкивался и в принципе не знаю что делать... blink.gif

Но есть ссылка!!! Почитаем, подумаем, поделаем...



Почитали, подумали и ни к чему не пришли...
Можно хотя бы одну решить, в качестве примера?(понимаю, что наглею, но желательно бы что-нибудь из первых двух)

Сообщение отредактировано: Clerick -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
Можно хотя бы одну решить, в качестве примера?

Если только в качестве примера rolleyes.gif
Цитата
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Держи первое, дабьше делай сам.

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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
1. Дан тестовый файл,

Опечатка? текстовый?

Хм .. а я даже и не заметил smile.gif Видимо да ...

Сообщение отредактировано: klem4 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Спасибо!!! И извиняюсь за ошибку!!!

Наткнулся на другую задачу и застрял... Дана матрица 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.

А она в файл не записывает... В чем ошибка?


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Цитата(klem4 @ 24.03.2006 11:14) *


firts.txt :

1
2
7
0
5

Sr = 3.0
count = 5;




А если я в одной строке два числа или больше ставлю? blink.gif


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
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]);


Цитата
А если я в одной строке два числа или больше ставлю?

Тогда усложнится процедура чтения и обработки файла. Зачем нужны лишние хлопоты?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Цитата(Ozzя @ 24.03.2006 17:31) *

Вынеси за цикл:

Вынес и все равно файл пустой остается...
Цитата

[Тогда усложнится процедура чтения и обработки файла. Зачем нужны лишние хлопоты?

Так интересно же как это будет выглядеть!!! А с другой стороны, допустим, файл такой дали. Тогда что делать?

Сообщение отредактировано: Clerick -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


О теперь работает! smile.gif

Close (f); забыл поставить... blink.gif

Цитата(Ozzя @ 24.03.2006 17:31) *

[Тогда усложнится процедура чтения и обработки файла. Зачем нужны лишние хлопоты?

Цитата

Так интересно же как это будет выглядеть!!! А с другой стороны, допустим, файл такой дали. Тогда что делать?


Только вопрос на ту же тему как записать в файл именно "матрицу"?

Например:
5 3 6 7 5
4 4 7 8 1
7 2 9 7 4
4 7 8 4 5

Сообщение отредактировано: Clerick -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Теперь все одну строчку... blink.gif


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Все нормально отрабатывает blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Все в норме!!! Пропустил один оператор... blink.gif

blink.gif Возник еще вопрос! Как имея файл со некоторым количеством строк, определить сколько их?


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Как имея файл со некоторым количеством строк, определить сколько их?

while not eof(f) do begin readln(f,s); inc(result) end;

результат (количество строк) после выполнения кода в переменной result (int).


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Если я прав(приближенно), то след. прога должна выводить содержимое файла
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.

А она не выводит. В чем ошибка?


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


студент..
***

Группа: Пользователи
Сообщений: 287
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  2  +


Спасибо!!!

Появился вопр. к з.2 можно её решить след. образ. Сосчитать кол-во символов в каждой строке, загнать в массив, а потом сравнить и выявить min? Или можно проще?


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

3 страниц V  1 2 3 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 3.05.2024 19:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name