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

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

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

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


Гость






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


Гость






таблица находится в текстовом файле
Первая стока таблицы содержит пять полей числовог типа длиной по два символа - результаты тиража.
Каждая из следующих строк таблицы содержит по шестьполей. Перове из них - символьного типа, содержит ФИО участника тиража, длина поля 30 символов. Следующие пять полей - числового типа, содержат числа, выбранные участником. Длина каждого из этих полей - по два символа.
ПОМОИТЕ ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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)

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


Гость






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


Гость






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

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

 





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