
10.01.2010, 19:32
|
|
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме: 35427
Репутация:
3
|
|
Ребят, помогите плиз, завтра сдавать ...
Код:
program xyz;
uses
SysUtils;
Function Ru ( S : string ) : string ;
VAR
T : string ; { временная строка}
i : integer ; { номер символа в строке }
code : byte ; { код символа }
BEGIN
T := S ; { получает значение параметра }
FOR i := 1 TO Length ( S ) DO { для всех символов строки S}
BEGIN { изменяет кодировку символов кириллицы }
code := Ord ( S[ i ] ) ; { определяет код символа}
CASE code OF { ПРОПИСНЫЕ БУКВЫ }
192 .. 197: T[ i ] :=Chr(code-64) ; { А-Е: 192-197 ->128-133}
168: T[ i ] :=#240; { Ё: 168->240}
198 .. 223: T[ i ] :=Chr(code-64); { Ж-Я : 198-223->128-133} { строчные буквы }
224 .. 229: T[ i ] :=Chr(code-64); { а-е : 224-229->160-165}
184: T[ i ] :=#241; { ё: 184 ->241}
230 .. 239: T[ i ] :=Chr(code-64); { е-п: 230-239->166-175}
240 .. 255: T[ i ] :=Chr(code-16); { р-я: 240-255->224-239}
END ;
END ;
Ru := T ; { возвращает значение временной строки }
END;
VAR
i,j,k,n,temp:integer; // искомые числа
repeat_it:boolean; // зацикливание программы (True/False)
ans:char; // используется для получения согласия для продолжения работы программы
label // идентификатор
p1;
Function IntSqrt(temp:integer):real; // функция для вычисления квадратного корня.
VAR
x:real;
t:real;
begin // начало функции
x:=sqrt(temp); // извлечение квадратного корня из числа.
if (x-round(x))=0 then t:=x // Если от х отнять округленный х будет равно нулю, тогда t=x.
else t:=0; // Либо t=0.
end;
begin
Writeln(Ru('Программа находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a*a + b*b = c*c. [a,b,c < N]'));
Writeln; // ...
Writeln(Ru('Автор программы ...')); // Вывод информации на экран об авторе программы.
Writeln; // ...
Writeln('...'); // Вывод на экран - e-mail автора программы.
Writeln;
p1: // Возврат в это место при ошибке или при повторном вводе данных.
repeat_it:=true; // Зацикливание программы, True-правда.
while repeat_it=true do begin
Write(Ru('Введите число, которое вы хотите проверить: ')); // ...
read(temp);
Writeln('OTBET: ',IntSqrt(temp):6:0); // Отправить temp на обработку в функцию 'Formula()' и вывести результат на экран.
Writeln; // ...
Write(Ru('Введите N: ')); // ...
Read(n); // Ввод числа N
for i:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for j:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for k:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
if i*i+j*j=k*k then Writeln('a=',i:4,'; b=',j:4,'; c=',k:4); // Если i*i+j*j=k*k, то выводятся на экран все возможные варианты решения этого уравнения.
Writeln; // ...
Write(Ru('Вы хотите продолжить работу с программой ? (Y/N): ')); // Предложить продолжить работу с программой.
Readln;
readln(ans); // Получить согласие.
writeln; // ...
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo p1; // Если согласие получено - возврат к началу.
break;
end;
end.
Собственно если ввожу N = 6
то выводит ответ
a = 3 b = 4 c = 5
a = 4 b = 3 c = 5
то есть нужно чтобы в случае если "с" совпадает несколько раз, тогда чтобы выводилось 1 раз.
|
|
|