Korvet
Новичок
|
Цитата: Vurdis написал 23 дек. 2009 23:00 2) Дано натуральное число п > 1. Определить длину периода де¬сятичной записи дроби 1/п.
Извините, на Delphi мне проще, а переводить нет сил. Все работает, проверял на многих примерах, кроме непериодичных дробей (не могу такую придумать). Цикл работает до 100, так как вероятность найти больший период если есть, то мала и смысла дальше рассматривать нет. (Самый большой период, что я нашел 22 при n 253 procedure TForm1.Button1Click(Sender: TObject); var n,k,i,j:byte; a,b:array [1..100] of Integer; h:boolean; s:String; begin s:=''; n:=StrToInt(Edit1.Text); //ввод n h:=false; i:=1; a:=10; while a<n do begin inc(i); a:=a[i-1]*10; b[i-1]:=0; end; b:=a div n; while i<100 do begin inc(i); a:=(a[i-1] mod n)*10; if a=0 then begin Panel1.Caption:='данная дробь конечна'; Exit; end; while a<n do begin inc(i); a:=a[i-1]*10; b[i-1]:=0; end; b:=a div n; for j:=1 to i-1 do if (a[j]=a)and(b[j]=b)then begin for k:=1 to i-1 do s:=s+IntToStr(b[k]); Panel1.Caption:=IntToStr(i-j)+' 0.'+Copy(s,1,j-1)+'('+Copy(s,j,i-1)+')'; //Вывод резултата. период равен здесь i-j, остальное выводит //дробь вида, например, 0,1(6) для n=6, или 0,(142857) при n=7 h:=true; end; if h then exit else Panel1.Caption:='данная дробь непериодическая'; end; end; P.S. Если что непонятно, спрашивайте завтра, т.е. днем.
|
Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 24 дек. 2009 3:07 | IP
|
|
tim45
Новичок
|
С помощью оператора while вычислить: P=1/(2*4*6) * 2/(6*8*10) * ... * 10/(38*42*46)
|
Всего сообщений: 1 | Присоединился: декабрь 2009 | Отправлено: 24 дек. 2009 11:21 | IP
|
|
Korvet
Новичок
|
Цитата: tim45 написал 24 дек. 2009 11:21 С помощью оператора while вычислить: P=1/(2*4*6) * 2/(6*8*10) * ... * 10/(38*42*46)
Program tim45; var i,k:byte; p:real; h:Integer; begin p:=1; k:=2; i:=1; While i<=10 do begin h:=k*(k+2)*(k+4); p:=p*i/h; k:=k+4; inc(i); end; Writeln(p); Readln; end.
|
Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 24 дек. 2009 18:33 | IP
|
|
Vurdis
Новичок
|
Korvet Спасибо ) Ток я делфи еще не изучал ваще не знаю.. Не трудно будет дак все таки ближе к паскалю бы))
|
Всего сообщений: 10 | Присоединился: декабрь 2009 | Отправлено: 24 дек. 2009 22:47 | IP
|
|
Korvet
Новичок
|
Как в паскале целочисленный тип преобразовать в строковый?
|
Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 24 дек. 2009 23:40 | IP
|
|
Korvet
Новичок
|
Короче, сообразил. Может оформить нужно было по другому и лишнее не писать, но работает точно. И еще сомневаюсь, существуют ли непериодические дроби. Program Period; var n,k,i,j:byte; a,b:array [1..100] of Integer; h:boolean; s,s2:String; label 13,12,11; begin 13:s:=''; Writeln('Vvedite n'); Readln(n); h:=false; i:=1; a:=10; while a<n do begin inc(i); a:=a[i-1]*10; b[i-1]:=0; end; b:=a div n; while i<100 do begin inc(i); a:=(a[i-1] mod n)*10; if a=0 then begin for k:=1 to i-1 do begin str(b[k],s2); s:=s+s2; end; Writeln('drob kone4naja 0.',s); goto 12; end; s:=''; while a<n do begin inc(i); a:=a[i-1]*10; b[i-1]:=0; end; b:=a div n; for j:=1 to i-1 do if (a[j]=a)and(b[j]=b)then begin for k:=1 to i-1 do begin str(b[k],s2); s:=s+s2; end; writeln('perijd= ',i-j,' 0.',Copy(s,1,j-1),'(',Copy(s,j,i-1),')'); h:=true; goto 11; end; end; 11:if not h then Writeln('drob neperiodi4eskaja'); 12:Writeln('povtorit Da 1, net 0'); Readln(i); if i=1 then goto 13; end.
|
Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 25 дек. 2009 0:56 | IP
|
|
Vurdis
Новичок
|
Всем спасибо ))
|
Всего сообщений: 10 | Присоединился: декабрь 2009 | Отправлено: 26 дек. 2009 0:04 | IP
|
|
hiperboloyd
Новичок
|
уже несколько дней сижу ломаю голову...всегда было тяжко с подпрограммами а тут такое.... дано: координаты трёх вершин треугольников найти: треугольник с наибольшей высотой язык: Pascal p.S.: при решение обязательно использование подпрограммы буду безумно признателен сердечно если кто-то знающий решится помочь.. соображения: предлагаю взять только две координаты для сокращения вычислений (x,y) мой алгоритм который показался мне рациональным для реализации ( жаль только реализовать не могу в связи со скудными знаниями процедур и функций) 1.ввод количества треугольников (ограничим 2 -5) 2. ввод всех координат (каким образом вводить не придумал...хотя есть догадки: вводим все координаты для первого треугольника затем ищем периметр...запоминаем, потом для второго и т.д., т.е. сохраняем только периметр в ячейку..) 3. вычисление длинн всех сторон Dlina1:=sqrt(sqr(x1-x2)+sqr(y1-y2)); {из координат конца вектора вычесть координаты начала} 4.вычисление периметра треугольника. (его вычислять не просили, но исходя из математических формул чем больше периметр тем больше площадь, а площадь= (основание*высоту)/2, т.е. высота=2площади/основание=> чем больше площадь тем больше высот) 5.вводим координаты второго треугольника..третьего...и т.д. вычисляя их периметры 6. сравниваем. 7. вывод ответа Заранее спасибо! просто нет сил уже, и сроки поджимают. до НГ((((((
|
Всего сообщений: 3 | Присоединился: декабрь 2009 | Отправлено: 26 дек. 2009 4:36 | IP
|
|
Korvet
Новичок
|
Если у треугольника с максимальным периметром действительно наибольшая высота, то, наверное, можно как-то так. Program Vysota; var n,nummax,k,i:byte; p:array [1..5] of Real; x,y:array [1..3] of Real; pmax:Real; procedure vvod; begin for i:=1 to 3 do begin Writeln('Vvedite x',i); Readln(x); Writeln('Vvedite y',i); Readln(y); end; end; function perimetr:Real; var m:Real; begin m:=0; for i:=1 to 3 do begin m:=m+sqrt(sqr(x-x[(i+1)mod 3])+sqr(y-y[(i+1)mod 3])); end; perimetr:=m; end; begin Writeln('vvedite koli4estvo treugolnikov'); Readln(n); for k:=1 to n do begin Writeln('treugolnik nomer ',k); vvod; p[k]:=perimetr; end; pmax:=p[1]; nummax:=1; for k:=2 to n do if p[k]>pmax then begin pmax:=p[k]; nummax:=k; end; Writeln('max vysota u treugolnika nomer ',nummax); Readln; end.
|
Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 26 дек. 2009 20:00 | IP
|
|
eraser
Новичок
|
Срочно нужна помощь. Задача: Дана строка. С помощью очереди вывести в порядке следования сначала цифры, потом знаки припенания, и в конце все остальные символы строки. Помогите плиз. Нужен полностью весь текст проги
|
Всего сообщений: 2 | Присоединился: декабрь 2009 | Отправлено: 27 дек. 2009 16:37 | IP
|
|
|