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

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

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

> Работа с файлами, Обработка текстового файла
npl
сообщение 9.12.2007 12:47
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: http://npfiles.ru

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


Даны названия N различных обществ (N заданное число), фигуристы которых участовали в соревновании. О каждом фигуристе известно: фамилия, название общества и 10 оценок за его выступление. Требуется для каждого спортивного общества определить фигуриста, показавшего наивысший результат, считая его единственным. Баллы, полученные фигуристом, подсчитываются следующим образом: максимальная и минимальная оценки отбрасываются, а из остальных формируется средняя. При вводе данных обеспечить уникальность наименований обществ и обязательную принадлежность фигуриста к одному из них.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
andriano
сообщение 14.12.2007 9:40
Сообщение #2


Гуру
*****

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

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


"Пришел барин и всех рассудил." :D

[ ]

Мне кажется, вряд ли здесь кто-то не понимает по-русски. Скорее дело в другом: нужен текст на Паскале, а самому переводить с русского на Паскаль не хочтся, - пусть лучше это сделает кто-то другой!

Тем более, что исправлять явно указанный недостаток автор этой темы не захотел, решив, очевидно, что и так сойдет.
Между тем программа, работающая с текстовыми файлами, должна быть нечувствительна к количеству пробелов, разделяющих слова, т.е. совершенно одинаково обрабатывать "Иванов Динамо" и " Иванов Динамо ". Приведеная же программа, очевидно, с текстовыми файлами работать не умеет, а умеет только с файлами опредедленной структуры.

Теперь по поводу задачи в целом (заодно уважаемый volvo сможет сравнить со своим вариантом).

- Предусмотреть типы данных для фигуриста (в исходном коде уже есть) и для спортивного общества (название, Ф.И.О. ОДНОГО спортсмена, его средний результат).
- Описать переменную для спортсмена (уже есть), массив длины N для обществ (благо, в условии она задана. Можно потребовать, чтобы первой строкой в файле указывалось количество обществ: для учебных/олимпиадных задач - обычное дело. А можно и не требовать: вместо массива организовать список, выделяя память для каждого очередного элемента по мере их поступления) и целую переменную для длины заполненной части массива.
- написать функции (декомпозиция - великая вещь!) для:
а) разбора строки с заполнением полей "фигуриста": на входе - строка из файла, возвращает - подсчитанное среднее.
Функция должна уметь разбирать файлы вроде:

Иванов и.И. "Спартак" 1 2 3 4 5 6 7 8 9 10
Сидоров Иван Петрович "Крылья Советов" 3, 4, 5, 5, 7, 8, 9, 10, 11, 12
Мохаммед Ибн Али ПЕру де Оннорре "ООО Челси им. Абрамовича" 2;3;4;5;6;7;8;9;10;1
Смит Джон "Определитель Матрицы" 8.0,7.0, 9, 3., 4, 1.0, 7, 5,9,2
Петров-Водкин Кузьма С. "Спартак" 3,2 1,3,2 1,3 2,1 1,1

б) поиска и добавления обществ: на входе - строка-имя общества, на выходе - номер найденного общества в массиве.
Должна просматривать уже сформированную часть массива обществ, если не нашла - завести новое, обнулив все поля.

Порядок действия программы:
1. Открыть файл.
1а. При необходимости считать строку с количеством обществ и выделить память для массива.
2. Цикл до окончания файла:
- читаем строку
- разбираем ее
- находим номер общества
- если средний балл спортсмена найденного общества ниже, чем вновь считанного, заменяем все данные общества новым спортсменом
3. Закрыть файл.
4. Вывести в цикле на печать заполненный массив обществ.

Кстати, размещать в общедоступном месте (например, на форуме) програму без комментаиев - mauvais ton.
Должна быть минимум одна строка коментария на 5-7 строк кода.
Должны быть откомментированы все процедуры и функции: назначение и список параметров.
Должны быть откомментированы все новые типы и их поля, а также глобальные переменные.
Естественно, не должно быть коментариев типа:
r := sqrt(x*x + y*y); {присваиваем переменной r значение sqrt(x*x + y*y)}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 14.12.2007 11:27
Сообщение #3


Профи
****

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

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


Начнем тогда уж.. Внесу свою лепту для начала smile.gif

type
fig=record
fio:string;
obsh:string;
ocenka: array[1..10] of integer;
end;
...
procedure parse (s:string;var f:fig);
var i,n:integer;
begin
f.fio:=copy(s,1,pos ('"',s)-1);
delete(s,1,length(f.fio)+1);
f.obsh:='"'+copy(s,1,pos ('"',s)-1)+'"';
delete(s,1,length(f.obsh)-1);
for i:=1 to 10 do begin
while (not(s[1] in ['0'..'9'])) and (s>'') do delete (s,1,1);
n:=0;
while (s[1] in ['0'..'9']) and (s>'') do begin
n:=n*10+ord (s[1])-$30;
delete (s,1,1);
end;
f.ocenka[i]:=n;
end;
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
npl   Работа с файлами   9.12.2007 12:47
volvo   ... и что? Хорошее задание, только зачем ты привел...   9.12.2007 13:41
npl   Частично задача решена. А именно, я создаю типизир...   9.12.2007 13:48
andriano   Частично задача решена. А именно, я создаю типизи...   9.12.2007 14:28
npl   Вот код program obchestva_and_figuristyi; uses cr...   9.12.2007 14:38
npl   Народ, откликнитесь.   9.12.2007 17:20
andriano   То, что ты сделал, возможно, подходит под определе...   9.12.2007 19:00
npl   То, что ты сделал, возможно, подходит под определ...   9.12.2007 19:05
andriano   Если проверка задания будет выполнена по уму, то ф...   9.12.2007 19:20
npl   Если ФИО меньше 10, то там оставшееся место заполн...   9.12.2007 19:22
andriano   А есть ли описание формата файла? Не может оказать...   9.12.2007 19:29
npl   Я сам составлял файл. Задачу надо решать для конкр...   9.12.2007 19:32
andriano   Я сам составлял файл. Задачу надо решать для конк...   9.12.2007 20:09
npl   Да забудьте про преобразование. Оставлю так, как е...   9.12.2007 20:12
andriano   Самый простой способ - перебором. PS. А алгоритм ...   9.12.2007 20:15
npl   Не получается найти максимальный элемент. Когда на...   9.12.2007 21:36
andriano   Коль скоро для каждого фигуриста все равно вычисля...   9.12.2007 22:38
npl   Коль скоро для каждого фигуриста все равно вычисл...   9.12.2007 22:49
andriano   А ты не заметил, что твоя программа не совсем соот...   10.12.2007 20:57
npl   А ты не заметил, что твоя программа не совсем соо...   10.12.2007 21:09
andriano   Пальчиком ткни.   10.12.2007 21:32
npl   obsh:string; вот тут, может хватить мудить, если б...   10.12.2007 22:25
andriano   Грубить не надо. Помочь - могу, а писать код за те...   12.12.2007 20:46
npl   "Спасибо", что не помогли, andriano. Но ...   12.12.2007 23:33
Michael_Rybak   "Спасибо" andriano от тебя заслуживает к...   12.12.2007 23:51
npl   "Спасибо" andriano от тебя заслуживает ...   12.12.2007 23:55
Michael_Rybak   Аааа, т.е. когда ты задаешь вопрос, я должен не о...   13.12.2007 0:20
npl   Аааа, т.е. когда ты задаешь вопрос, я должен не о...   13.12.2007 13:11
Lapp   Господа, прошу прекратить перебранку. Тему закрыв...   13.12.2007 14:24
andriano   "Пришел барин и всех рассудил." :D [ ] ...   14.12.2007 9:40
Malice   Начнем тогда уж.. Внесу свою лепту для начала :) ...   14.12.2007 11:27
andriano   Начнем тогда уж.. Внесу свою лепту для начала :) ...   14.12.2007 18:17


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

 



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