На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 3
ссылка на сообщение  Отправлено: 04.10.21 11:26. Заголовок: Задание 17 номер 196 (Л. Шастин)


Вот условие:

196) (Л. Шастин) В файле 17-10.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 10000 включительно. Определите сначала количество троек элементов последовательности, из которых можно составить прямоугольный треугольник, а затем сумму всех гипотенуз треугольников в подходящих тройках. Под тройкой подразумевается три идущих подряд элемента последовательности.

 

# Автор Ипатов Ю.А.
# Разбор: https://youtu.be/_PTjNaNqplQ

var
x, n, triygolniki,gipo,maxi: integer;
a1, b1, c1: integer;

function NumberOfTri(a, b, c: integer): integer;
begin
if (a * a + b * b = c * c) or
(b * b + c * c = a * a) or
(a * a + c * c = b * b) then
begin
result := 1;
maxi:=max(a,b,c);
end else
begin
result := 0;
maxi:=0;
end;
end;

begin
assign(input, '17-10.txt');
reset(input);
readln(a1);
readln(b1);
n := 2;
while not eof(input) do
begin
n += 1;
readln(x);
c1 := x;
triygolniki += NumberOfTri(a1, b1, c1);
gipo+=maxi;
(a1,b1):=(b1,c1);
end;
triygolniki.Println;
gipo.Println;
end.


Можно как-то более лаконично решить?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]





Сообщение: 4
ссылка на сообщение  Отправлено: 04.10.21 13:10. Заголовок: Подскажите пожалуйст..


Подскажите пожалуйста, куда присылать корректные коды программ, чтобы она попадали в базу корректных решений?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2928
ссылка на сообщение  Отправлено: 04.10.21 19:07. Заголовок: ivackov.sergey пишет..


ivackov.sergey пишет:
 цитата:
куда присылать корректные коды программ, чтобы она попадали в базу корректных решений?

Имеет смысл присылать мне на почту решения, которые чем-то лучше, чем то, что есть в файле с решениями.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2927
ссылка на сообщение  Отправлено: 04.10.21 19:05. Заголовок: ivackov.sergey пишет..


ivackov.sergey пишет:
 цитата:
Можно как-то более лаконично решить?

Можно.
 ## 
var data := ReadLines('17-10.txt').Select(t -> t.ToInteger).ToArray;
var triples := data.NWise(3).Select(ar->ar.Order.ToArray)
.Where(ar->ar[0]*ar[0]+ar[1]*ar[1]=ar[2]*ar[2]);
triples.Count.Print;
triples.Sum(t->t[2]).Print;


___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 155
ссылка на сообщение  Отправлено: 04.10.21 22:07. Заголовок: F = open('17-10..


 
F = open('17-10.txt')
k = s = 0
a = [] # массив точек
for x in F:
a.append(int(x))
k = s = 0
for i in range(len(a)-2):
b = []# массив сторон треугольника
b.append(a[ i])
b.append(a[i+1])
b.append(a[i+2])
b.sort() # сортируем, чтобы сначала были катеты
if b[0]**2 + b[1]**2 == b[2]**2:
k += 1
s += b[2]
print(k, s)


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 05.02.23 20:10. Заголовок: s= b= for i in range..


s=[int(x) for x in open('17-10.txt')]
b=[]
for i in range(len(s)-2):
c=[]
c.append(s[i])
c.append(s[i+1])
c.append(s[i+2])
c.sort()
if (c[0]**2+c[1]**2)==c[2]**2:
b.append(c[2])
print(len(b),sum(b))

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 05.02.23 20:10. Заголовок: s= b= for i in range..


s=[int(x) for x in open('17-10.txt')]
b=[]
for i in range(len(s)-2):
c=[]
c.append(s[i])
c.append(s[i+1])
c.append(s[i+2])
c.sort()
if (c[0]**2+c[1]**2)==c[2]**2:
b.append(c[2])
print(len(b),sum(b))

Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 676
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет