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

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

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

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


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

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

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


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

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

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

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

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

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

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


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


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

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

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


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

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

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


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


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

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

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


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

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



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

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


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

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



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

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


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.03.2006 9:12
Сообщение #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 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.03.2006 9:14
Сообщение #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 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.03.2006 9:18
Сообщение #6


Гуру
*****

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

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


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

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

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

Сообщение отредактировано: klem4 - 24.03.2006 9:19
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Clerick
сообщение 24.03.2006 14:48
Сообщение #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 
 К началу страницы 
+ Ответить 
Clerick
сообщение 24.03.2006 15:13
Сообщение #8


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

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

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


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


firts.txt :

1
2
7
0
5

Sr = 3.0
count = 5;




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


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.03.2006 15:31
Сообщение #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 
 К началу страницы 
+ Ответить 
Clerick
сообщение 24.03.2006 15:44
Сообщение #10


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

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

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


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

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

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

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

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

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


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.03.2006 16:06
Сообщение #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 
 К началу страницы 
+ Ответить 
Clerick
сообщение 24.03.2006 16:24
Сообщение #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 - 24.03.2006 16:39


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.03.2006 16:33
Сообщение #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 
 К началу страницы 
+ Ответить 
Clerick
сообщение 24.03.2006 16:44
Сообщение #14


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

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

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


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


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


Гуру
*****

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

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


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


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

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

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


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

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


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


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

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

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


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

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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Clerick
сообщение 25.03.2006 18:14
Сообщение #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 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 25.03.2006 18:19
Сообщение #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 
 К началу страницы 
+ Ответить 
Clerick
сообщение 25.03.2006 18:26
Сообщение #20


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

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

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


Спасибо!!!

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


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

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

 



- Текстовая версия 18.07.2025 0:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"