Страница 1 из 2
Процедура в Паскале
Добавлено: 12 янв 2010, 20:03
Учусь
Дано натуральное число n. Среди чисел 1,2,…, n найти все те, которые можно представить в виде суммы квадратов 2-х натуральных чисел (Определить процедуру, позволяющую распознавать полные квадраты)
ну вот мне так кажется что должно быть так, но что то она не работает

Program proced;
uses crt;
var x,y,i,n,а:integer;
Procedure Kvadrat(i:real);
Begin
x:=0; y:=0;
for i:=1 to n do
For x:=1 to i do
For y:=1 to i do
end;
Begin
clrscr;
write ('Vvidite n=');
read (n);
if sqr(x)+sqr(y):=а then writeln (а);
Readln;
readln
end.
Заранее спасибо!!!
Re: Процедура в Паскале
Добавлено: 12 янв 2010, 23:25
Newbie
дак у тя функция не вызывается, должно быть так(примерно, т.к. пишу прямо тут)
Код: Выделить всё
Program proced;
uses crt;
Procedure Kvadrat(a:integer);
var i,x,y: integer;
Begin
x:=0; y:=0;
for i:=1 to a do
For x:=1 to i do
For y:=1 to i do
if sqr(x)+sqr(y):=а then writeln (а);
end;
var n:integer;
Begin
clrscr;
write ('Vvidite n=');
readln (n);
Kvadrat(n);
Readkey;
end.
Re: Процедура в Паскале
Добавлено: 13 янв 2010, 09:40
Хыиуду
for i:=1 to a do
For x:=1 to i do
For y:=1 to i do
if sqr(x)+sqr(y):=а then writeln (а);
Код будет искать не числа, удовлетворяющие условию, среди 1, 2... а, вместо этого он а раз проверит число а. Так что в последней строке должно быть
if sqr(x)+sqr(y):=i then writeln (i);
а лучше еще и break два раза вставить, чтобы перейти к другому числу.
Вместе с тем циклы можно значительно сократить: вместо
For x:=1 to i do
For y:=1 to i do
писать
For x:=1 to i-1 do
For y:=1 to x do
Иначе он, скажем, 25 определит дважды - как 4^2+3^2 и как 3^2+4^2
Re: Процедура в Паскале
Добавлено: 13 янв 2010, 10:18
Учусь
Вот хотела сказать вам СПАСИБО! Ну вроде кнопочка должна быть?! Но я ее не нашла...

Ну во общем спасибо вам, начну переписывать ее на Си++. Если скажите где кнопка "Спасибо" нажму ее

, ой т.е проголосую...жду когда вы скажите где эта кнопка!
Re: Процедура в Паскале
Добавлено: 14 янв 2010, 08:58
Хыиуду
Теперь она имеет вид шестиконечной звезды внизу под ником.
Re: Процедура в Паскале
Добавлено: 14 янв 2010, 14:09
Учусь
ну вот под своим ником я нашла шестиконечную звезду, но под вашими никами никакой звездочки НЕТ! есть треугольник с восклицательным знаком внутри и все.....может она от меня спряталась?!

))
Re: Процедура в Паскале
Добавлено: 15 янв 2010, 09:31
Хыиуду
Видимо, вам надо иметь минимум 10 сообщений, чтобы выставлять репутацию другим пользователям.
Re: Процедура в Паскале
Добавлено: 02 апр 2010, 21:17
comando
Помогите, пожалуйста, решить вот такую задачку:
Дано: массивы А(5), B(7), C(9). Вычислить Y=K+M+N, где K-сумма элементов массива А со значением 1, N- сумма элементов массива B со значением 1, M- сумма элементов массива С со значением 1. Вычисление суммы элементов массива со значениями равными единице оформить в виде подпраграммы.
Re: Процедура в Паскале
Добавлено: 02 апр 2010, 22:20
Учусь
Ну вот Я типа решила!! Она работает, но не факт что правильно

var y,k,m,n:integer;
procedure Summa;
var a:array[1..5] of integer;
b:array [1..7] of integer;
c:array [1..9] of integer;
i:integer;
BEGIN
randomize;
k:=0;m:=0;n:=0;
for i:=1 to 5 do
begin
a
:=random(2);
writeln('a',a);
if a=1 then k:=k+a;
end;
for i:=1 to 7 do
begin
b:=random(2);
writeln('b',b);
if b=1 then m:=m+b;
end;
for i:=1 to 9 do
begin
c:=random(2);
writeln('c',c);
if c[i]=1 then n:=n+c[i];
end;
end;
begin
y:=0;
summa;
y:=k+m+n;
writeln('Y=',y);readln;
end.
Re: Процедура в Паскале
Добавлено: 02 апр 2010, 22:35
comando
спасибо!
Правда программа, по моему, не очень правильно работает, но всё равно большое спасибо!
Попытаюсь найти ошибку.
P.S. может есть ещё варианты?
