Вопрос № 86318: Добрый день или вечер помогите решить задачки на Паскале
1.Для заданного натурального числа N рассчитать сумму:1!+2!+3+......N!
2.Найти максимальное число среди трёх чисел а,в,с.
3.Дан массив из N элементов. В нем четные числа заменить 0,...
Вопрос № 86.318
Добрый день или вечер помогите решить задачки на Паскале
1.Для заданного натурального числа N рассчитать сумму:1!+2!+3+......N!
2.Найти максимальное число среди трёх чисел а,в,с.
3.Дан массив из N элементов. В нем четные числа заменить 0, нечетные на 1.
4.Даны катеты прямоугольного треугольника найти гипотенузу.
5.Найти максимальный элемент в двумерном массиве
Заранее Огромное спасибо!!!!
Отвечает: Menand
Здравствуйте, Левченко Евгений Александрович!
1:
***
s:=0;
for i1:=1 to n do
begin
p:=1;
for i2:=1 to i1 do
p:=p*i2;
s:=s+p;
p:=1;
end;
***
результат будет в s
3:
(вы не указали, так что думаю массив одномерный - но передалать 1 строчка)
***
for i:=1 to n do
if (mas[i] mod 2)=0 then mas[i]:=0 else mas[i]:=1;
***
5:
***
max=mas[1,1];
for i:=1 to n do
for j:=1 to m do
if (mas[i,j]>max) then max:=mas[i,j];
end;
***
Ответ отправил: Menand (статус: Студент)
Ответ отправлен: 10.05.2007, 20:29 Оценка за ответ: 4
Отвечает: Verena
Здравствуйте, Левченко Евгений Александрович!
Очень лёгкие задачки, такие можно, вообще-то, в любой книжке найти как примеры. Решение в приложении.
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 10-ый класс)
Ответ отправлен: 10.05.2007, 20:32 Оценка за ответ: 5
Отвечает: XMF
Здравствуйте, Левченко Евгений Александрович!
--
1)
function fact(var i:integer): integer;
var
s:integer;
begin
if(i=0) then begin fact:=1; end else i*fact(i-1);
end;
В этом случае компилятор выдает ошибку 91 (":=" expected). Если производите какие-то арифметические операции (умножения, деления и пр.), то нужно занести результат в какую-либо переменную.
--
прога:
....
var
i,n,s: integer;
begin
readln(n);
for i:=n downto 1 do s := s + fact(i);
writeln(s);
----
2)
min:integer;
if( (a < b) and (a < c) ) min:=a;
if( (b < a) and (b < c) ) min:=b;
if( (c < b) and (c < a) ) min:=c;
{ способ туповат, но ... =) }
-------------------- Задача состоит в нахождении максимума, а не минимума.
3)
{ a[n] - масив }
for i:=1 to N do
begin
if ( (a[i] mod 2) = 0) a[i]=0; else a[i]=1;
end;
------------------ В Pascal "=" - выполняет операцию сравнения, а не присваивания. Вместо нее следует использовать ":=". Перед "else" точка с запятой не ставятся!
4)
cat1, cat2, res: integer;
readln(cat1, cat2);
writeln( sqrt(cat1*cat1* + cat2*cat2));
// проверку cat1, cat2 на отрицательные значения сделаешь уже сам. После второго cat1 символ * лишний.
5)
i,j,max: integer;
{a [n][m] = масив }
max = a[1][1];
for i:=1 to n do
for j:=1 to m do
if(max < a[i][j] ) max = a[i][j];
--
НО! я писал последний раз на паскале 4 года назад (сейчас на си) )) если будут ошибки - поправь, но вроде должно работать... Единственное что я не помню, так это с какого индекса начинаются масивы с 0 или 1...
но в целом будет работать ;)
[Для экзаменаторов: Прошу учесть, что все примеры, за исключением 2-го нерабочие. 2-й пример приведен неверно (для другого случая).] [Denisss]
Ответ отправил: XMF (статус: 7-ой класс)
Ответ отправлен: 10.05.2007, 20:35 Оценка за ответ: 5
Отвечает: Louken
Здравствуйте, Левченко Евгений Александрович!
Не очень понятно 1-ое задание. Может найти: 1+2+3+......N = N!? Навсякий случай привожу оба решения
[Для экзаменаторов: Примеры 1 и 3 решены неправильно. Пример 2 - копия примера 2 из ответа эксперта Verena.] [Denisss]
Приложение:
Ответ отправил: Louken (статус: 1-ый класс)
Ответ отправлен: 10.05.2007, 20:55 Оценка за ответ: 5