Другие языки программирования и технологии
помогите решить задачу на паскале. +10 за решение)
Написать программу, использующую файлы, которая, получая входную последовательность целых чисел А1,А2,...Аn, удаляет из нее все четные элементы, если среднее арифметическое всех элементов четно, и нечетные элементы в противном случае.
Доброго времени суток.
Задача не корректна, т. к. средним арифметическим будет действительное число для которого понятия четности не имеет смысла.
Чётность в теории чисел — характеристика целого числа, определяющая его способность делиться нацело на два. Если целое число делится на два, оно называется чётным (примеры: 2, 28, —8, 40), если нет — нечётным (примеры: 1,3, 75, —19). Нуль считается чётным числом.
( http://dic.academic.ru/dic.nsf/ruwiki/13240 )
Что делат в случае трех входных чисел 2, 3, 5? Среднее арифметическое будет 3.3(3)
Если вас все-таки не смущает это, то можно сделать так. Открываете файл, пока не конец файла читаете чиссла и подсчитываете их сумму и количество. Вычисляете среднее и определяетесь с тем, что должно попасть в выходной файл. Открываете выходной файл, сбрасываете входной и начинаете снова читать числа, записывая нужные в выходной файл. Примерно так
Assign(InF, 'InF.txt');
Reset(InF);
Sum := 0; {сумма элементов}
K := 0; {их количество}
while not Eof(InF); do begin
ReadLn(InF, N);
K := K + 1;
Sum := Sum + N;
end;
Mid := Sum / K; {среднее}
FlagRemove := Trunc(Mid) mod 2 = 0; {флаг удаления элемента (True для четного среднего) }
Assign(OutF, 'OutF.txt');
Rewrite(OutF);
Reset(InF);
while not Eof(InF); do begin
ReadLn(InF, N);
if (N mod 2 = 0) = FlagRemove then WriteLn(OutF, N); {запись только тех элементов, четность которых равна FlagRemove}
end;
Close(InF);
Close(OutF);
Удачи!
Задача не корректна, т. к. средним арифметическим будет действительное число для которого понятия четности не имеет смысла.
Чётность в теории чисел — характеристика целого числа, определяющая его способность делиться нацело на два. Если целое число делится на два, оно называется чётным (примеры: 2, 28, —8, 40), если нет — нечётным (примеры: 1,3, 75, —19). Нуль считается чётным числом.
( http://dic.academic.ru/dic.nsf/ruwiki/13240 )
Что делат в случае трех входных чисел 2, 3, 5? Среднее арифметическое будет 3.3(3)
Если вас все-таки не смущает это, то можно сделать так. Открываете файл, пока не конец файла читаете чиссла и подсчитываете их сумму и количество. Вычисляете среднее и определяетесь с тем, что должно попасть в выходной файл. Открываете выходной файл, сбрасываете входной и начинаете снова читать числа, записывая нужные в выходной файл. Примерно так
Assign(InF, 'InF.txt');
Reset(InF);
Sum := 0; {сумма элементов}
K := 0; {их количество}
while not Eof(InF); do begin
ReadLn(InF, N);
K := K + 1;
Sum := Sum + N;
end;
Mid := Sum / K; {среднее}
FlagRemove := Trunc(Mid) mod 2 = 0; {флаг удаления элемента (True для четного среднего) }
Assign(OutF, 'OutF.txt');
Rewrite(OutF);
Reset(InF);
while not Eof(InF); do begin
ReadLn(InF, N);
if (N mod 2 = 0) = FlagRemove then WriteLn(OutF, N); {запись только тех элементов, четность которых равна FlagRemove}
end;
Close(InF);
Close(OutF);
Удачи!
т. к выбрать лучший ответ из 1 ответа невозможно, то я вам помогу)))
Похожие вопросы
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Помогите решить задачу в паскале
- Помогите решить задачу на паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Уважаемые!Помогите решить задачу по Паскалю,пожайлуста!
- Помогите решить задачу в паскале
- Помогите решить задачу (в паскале)!
- Помогите решить задачу в паскале, пожалуйста! !
- помогите решить задачу на паскале