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

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

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

 
 Ответить  Открыть новую тему 
> Работа с текстовым файом, Работа с таблицей в текстовом файле
ZeroQ
сообщение 11.03.2007 13:07
Сообщение #1


Гость






Помогите плиз!!!!!!!! Нада составить программу опрделения по данным из таблицы результатов участников лотерии, упорядоченных по количеству угаданных чисел))))))
 К началу страницы 
+ Ответить 
ZeroQ
сообщение 11.03.2007 13:18
Сообщение #2


Гость






таблица находится в текстовом файле
Первая стока таблицы содержит пять полей числовог типа длиной по два символа - результаты тиража.
Каждая из следующих строк таблицы содержит по шестьполей. Перове из них - символьного типа, содержит ФИО участника тиража, длина поля 30 символов. Следующие пять полей - числового типа, содержат числа, выбранные участником. Длина каждого из этих полей - по два символа.
ПОМОИТЕ ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!!
 К началу страницы 
+ Ответить 
volvo
сообщение 11.03.2007 13:56
Сообщение #3


Гость






Смотри:
var
n_of: integer;
arr_of: array[1 .. 6] of integer;

function count_match(const X, player: array of integer;
const n: integer): integer;
var
s: set of byte;
i, count: integer;
begin
s := [];
for i := 0 to n_of do include(s, X[i]);

count := 0;
for i := 0 to n do
if player[i] in s then inc(count);
count_match := count;
end;
procedure parse_numbers(s: string; var arr: array of integer;
var count: integer);
var
i: integer;
err: integer;
begin
i := 1; count := -1;
while i < length(s) do begin
inc(count);
val(copy(s, i, 2), arr[count], err);
inc(i, 2);
end;
end;
procedure print_numbers(const arr: array of integer;
const count: integer);
var i: integer;
begin
for i := 0 to count do
write(arr[i]:4);
writeln(count_match(arr_of, arr, count):3, ' matches');
end;


var
f: text;
s: string;
arr: array[1 .. 6] of integer;
n: integer;

begin
assign(f, '__res.txt');
reset(f);
readln(f, s);
parse_numbers(s, arr_of, n_of);
print_numbers(arr_of, n_of);

while not eof(f) do begin
readln(f, s);
write(copy(s, 1, 30));
parse_numbers(copy(s, 31, 255), arr, n);
print_numbers(arr, n);
end;

close(f);
end.

Работаем вот с таким файлом:
 2 6111829
ivanov 11 6 4192931
petrov 2126 4192732
sidorov 3116 4192933
ivanova 21 614192934
petrova 3115 4192835
sidorova 21 624192936


Получаем список участников, их номера, и количество угаданных номеров... В принципе, можно создавать список из фамилий участников, и числа угаданных номеров, а потом его отсортировать, и вывести на печать (с массивом конечно проще, но неэффективно сразу резервировать слишком много памяти, да и ограничен массив размером в 64K)

Попробуй, если не получится - поможем...
 К началу страницы 
+ Ответить 
ZeroQ
сообщение 11.03.2007 14:36
Сообщение #4


Гость






Спасибо что откликнулся))))) Но она не работает в строке readln(f, s); в теле самой программы пишет "Invalid file handle"
чё делать????????
 К началу страницы 
+ Ответить 
volvo
сообщение 11.03.2007 14:38
Сообщение #5


Гость






Ничем помочь не могу, у меня нормально отработала, иначе я б ее не выложил... А компилятор, кстати, ты не указал - хотя надо было бы...
 К началу страницы 
+ Ответить 

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

 



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