Вопрос № 183682: Здравствуйте! Уважаемые эксперты! Помогите мне решить задачи, как в этой теме ВОТ. Задачи: 1) Тема «Сортировка массивов». В любом «длинном» числе > 20 знаков расположить цифр...
Вопрос № 183682:
Здравствуйте! Уважаемые эксперты! Помогите мне решить задачи, как в этой теме ВОТ. Задачи: 1) Тема «Сортировка массивов». В любом «длинном» числе > 20 знаков расположить цифры числа по возрастанию.
2) Тема «Работа со строками». Результаты вступительных экзаменов представлены в виде списка из N строк, в каждой строке которой записаны фамилии абитуриента и отметки по каждому из M предметов. Определить количество абитуриентов,
сдавших вступительные экзамены на отлично.
Отвечает Boriss (Академик) :
Здравствуйте, Посетитель - 372181! Вы не отвечаете, перевожу в ответ: Вот решение второй задачи. Я считаю, не отслеживаю, что у каждого проставлено одинаковое число оценок, что все оценки отделены друг от друга любым символом, лишь бы не цифра от 0 до 5. Проверяю, написана ли фамилия, но тогда просто пропускаю Да! Вы не написали, а зря, в каком Паскаде нужно сделать. Я сделал в Borland. В прикрепленом архиве код и исходный файл
Код :
uses CRT;
CONST
TheFileName = '183682.txt';
nums: Set of Char = ['0' .. '5'];
chars: Set of Char = ['A'..'z', 'А' ..'п', 'р' .. 'я'];
VAR
f: Text;
S, name: String;
i, count, numCount: Integer;
A_student: Boolean; {отличник}
BEGIN
Assign(f, TheFileName);
{$I-} Reset(f); {$I+}
if IOResult <> 0 then begin
WriteLn('Не могу открыть файл ', TheFileName,
'. Работа программы завершается');
WriteLn('Нажмите любую клавишу');
ReadKey; Halt(1)
end;
Count := 0;
While NOT EOF(f) do begin
ReadLn(f, S);
if S <> '' then begin
name := '';
i:=1;
while (NOT (S[i] in chars)) and (i <= length(S)) do inc(i);
while (S[i] in chars) and (i <= length(S)) do begin
name := name + S[i];
inc(i);
end;
if name = '' then Continue; {Фамилии нет}
A_student := TRUE;
Write(name,' ');
while (i <= length(S)) do begin
while (NOT (S[i] in nums)) and (i <= length(S)) do inc(i);
A_student := A_student and (S[i] = '5');
inc(i);
if NOT A_student then Continue;
end;
if A_student then begin
WriteLn('Отличник');
inc(count)
end
else WriteLn('Так себе');
end;
end;
if Count = 0 then
Writeln('На отлично не сдал ни один абитуриент')
else
WriteLn('На отлично сдало абитуриентов: ', count);
WriteLn('Нажмите любую клавишу');
ReadKey
END.
----- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (Академик)
Ответ отправлен: 26.06.2011, 11:30
Номер ответа: 267842 Россия, Саранск Организация: Мордовский госуниверситет, Саранск, Факультет Электронной Техники Адрес сайта:Программирование на Паскале ICQ # 320096696
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 267842
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.