27.07.2015, 10:19 | #1 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Задача о дробях
Цитата:
Правда, попытки вести диалог с заказчицей через ЛС натолкнулись на гробовое молчание последней, что меня несколько рассердило, а потому я счёл возможным посвоевольничать: входной файл (как и выходной, естественно) может содержать не одну, а сколько угодно строк с дробями. Правила: 1. Записи дробей должны начинаться с крайней левой позиции, т.е. пробелов впереди быть не должно. 2. Каждая дробь располагается на своей отдельной строке. 3. Пустые строки не допускаются. 4. После введения последней дроби НЕ СЛЕДУЕТ переводить строку. Адресация файлов может быть, естественно, изменена. Вроде всё. Вот программа: Код:
Var nom,den,d,m,Q:Word; n,j,p:Byte; f_in,f_ou:Text; Rem:Array[1..100] of Word; Fig:Array[1..100] of Byte; S_in,nom_st,den_st,S,St:String; Code:Integer; Function Test_Rem(R:Word; k:Byte):Byte; var b:Boolean; i:Byte; begin b:=false; i:=0; repeat Inc(i); if i<=k then if Rem[i]=R then b:=true; until b or (i=k+1); if b then Test_Rem:=i else Test_Rem:=0; end; Begin Assign(f_in,'D:\Input.txt'); Reset(f_in); Assign(f_ou,'D:\Output.txt'); Rewrite(f_ou); Repeat Readln(f_in,S_in); p:=0; repeat Inc(p); until S_in[p]='/'; nom_st:=Copy(S_in,1,p-1); den_st:=Copy(S_in,p+1,Length(S_in)-p); Val(nom_st,nom,Code); Val(den_st,den,Code); n:=1; S:=''; Str((Nom div Den),St); S:=S+St; if (Nom mod den)>0 then begin S:=S+'.'; m:=(Nom mod Den); Rem[1]:=m; repeat Inc(n); d:=m*10 div Den; m:=m*10 mod Den; Q:=Test_Rem(m,n-1); if (m>0) and (Q=0) then begin Rem[n]:=m; Fig[n]:=d end; until (m=0) or (Q>0); Rem[n]:=m; Fig[n]:=d; if m=0 then begin for j:=2 to n do begin Str(Fig[j],St); S:=S+St; end end else begin for j:=2 to Q do begin Str(Fig[j],St); S:=S+St; end; S:=S+'('; for j:=Q+1 to n do begin Str(Fig[j],St); S:=S+St; end; S:=S+')'; end; end; Writeln(f_ou,S); Until EoF(f_in); Close(f_in); Close(f_ou); End. |
|
2 пользователя(ей) сказали cпасибо: | DiM (27.07.2015), Счастье (27.07.2015) |
27.07.2015, 10:19 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Внимательно прочитайте содержимое этих тем Задача на С++ Задача Задача с if Задача C++ Задача на C# Задача по С + + |
27.07.2015, 10:45 | #2 (permalink) |
Member
Регистрация: 15.10.2010
Сообщений: 9,817
Записей в дневнике: 1
Сказал(а) спасибо: 32
Поблагодарили 45 раз(а) в 8 сообщениях
Репутация: 54920
|
Владимир, вот каждый раз ловлю себя на мысли что не та у вас аватарка, не та!!!
Надо что-то типа этого
__________________
Там, откуда я родом, безумцы правят народом... |
27.07.2015, 12:10 | #4 (permalink) | |
IDDQD
Регистрация: 16.03.2008
Адрес: Москва
Сообщений: 16,206
Записей в дневнике: 3
Сказал(а) спасибо: 1,040
Поблагодарили 261 раз(а) в 122 сообщениях
Репутация: 43234
|
Цитата:
Да она в танке сто пудово, Анджелка сейчас на высадку готовится и следит за статой! А недавно еще чистку кадров в клане устроила, что отголоски к нам на форум докатились, поцик весь заплаканый прибежал в танковую тему среди ночи и стал сетовать на свою несчастную судьбу которая для него приняла облик нашей железной леди
__________________
|
|
27.07.2015, 19:05 | #5 (permalink) |
Не очень хороший человек
Регистрация: 01.12.2012
Сообщений: 6,155
Записей в дневнике: 18
Сказал(а) спасибо: 1,305
Поблагодарили 755 раз(а) в 231 сообщениях
Репутация: 98885
|
Точно, такую аватарку надо)))
__________________
Все будет хорошо. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|