Консультация № 173803
28.10.2009, 20:41
0.00 руб.
0 9 1
написать программу на языке паскаль. Дана последовательность целых чисел {Aj} (длина последовательности заранее не известна, использовать функцию SeekEoLn или SeekEoF). Найти произведение чисел, заканчивающихся нечетной цифpой, наибольшее из таких чисел и номеp этого числа в последовательности

Обсуждение

давно
Старший Модератор
31795
6196
28.10.2009, 20:51
общий
Dima Moroz Maksovovich:
Как последавательность расположена в файле?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
28.10.2009, 20:52
общий
То есть в файле дана?
Неизвестный
28.10.2009, 20:53
общий
да
Неизвестный
28.10.2009, 20:56
общий
последовательность дана в файле
Неизвестный
28.10.2009, 21:01
общий
Далее, в файлах счет часто идёт с нуля, а тут как?
Неизвестный
28.10.2009, 21:06
общий
последоваельсность начинается с 1 и до n. Aj=1...n
давно
Старший Модератор
31795
6196
28.10.2009, 21:19
общий
Dima Moroz Maksovovich:
Как последовательность разделяется?
Пробел, точка, запятая, точка с запятой, новая строка?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
28.10.2009, 21:22
общий
запятая
давно
Старший Модератор
31795
6196
29.10.2009, 15:29
общий
это ответ
Здравствуйте, Dima Moroz Maksovovich.

В приложении программа выполняющая задание.
Разделителем элементов последовательности являются: запятая и конец строки.
Элемент последовательности, записанные по разному, к примеру 123=1 2 3=12 3=1 23=1-2 3 и т.д. считаются одинаковым.
Проверялось на таких данных:
1,1 2 3,15
1-53 , 152,
1=2=3=1,
45

Проверка условия c=chr(13) равнозначна вызову функции SeekEoln, с той лиш разницей, что код прочитаного символа является признаком конца строки в файле.
Удачи!

Приложение:
var
Result:real;
Current:integer;{текущее значение последовательности}
MaxNumber:integer;{значение максимального элемента последовательности}
IndexNumber:integer;{позиция элемента в последовательности}
Index:integer;{текущая позиция}
isFile:text;{последняя найденая цифра последовательности}
LastNumber:byte;
c:char;
begin
assign(isFile,'q173803.dat');
reset(isFile);
Result:=1;
Index:=0;
MaxNumber:=0;
While not Eof(isFile)do
begin
Current:=0;{сбрасываем число}
LastNumber:=0;{сбрасываем последнюю цифру}
repeat
read(isFile,c);{считываем символ}
if c in ['0'..'9'] then
begin
LastNumber:=ord(c)-ord('0');{переводим в цифру}
Current:=10*Current+LastNumber;{добавляем в текущий элемент}
end;
{служебная строка показывающая как формируется элемент последовательности}
{ writeln('=',Current,c:3);}
until (c=',')or(c=chr(13))or eof(isFile);{продолжаем пока не запятая или конец строки}
if Current>0 then
begin
Index:=Index+1;{увеличиваем индекс если найден очередной элемент последовательности}
writeln('A[',index,']:=',Current);{вывод текущего элемента последовательности}
end;
if odd(LastNumber) then{проверяем нечетное число}
begin
Result:=Result*Current;{произведение- первое условие задания}
if Current>MaxNumber then
begin
MaxNumber:=Current;{запоминаем максимум - второе условие задачи}
IndexNumber:=Index;{запоминаем позицию - третье условие задачи}
end;
end;
end;
close(isFile);
{вывод результатов работы}
Writeln('Product :',Result:10:0);
Write('Max number:=A[',IndexNumber,']:=',MaxNumber);
readln;
end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа