Форум » Обработка числовых последовательностей » Оцените, пожалуйста, выполнение c4, задача 1. » Ответить

Оцените, пожалуйста, выполнение c4, задача 1.

max: Здравствуйте. Не могли бы вы оценить написание программы, это первая моя программа из категории c4 (под номером 1), она получилась очень громоздкой. Хотелось бы услышать замечания по поводу исполнения, что в ней можно доработать. Вводил значения, вроде все работает). Но очень много времени потратил на написание, наверное часов 5. Надеюсь дальше будет значительно быстрее после решения еще нескольких задач. [more] http://s019.radikal.ru/i632/1205/b4/e3349d4ec424.jpg program c4_1; const n=366; var a: array[1..n] of record day: integer; month: integer; temperatyra: real; end; c, c1: string; sr_month: array[1..12] of real; sr_monthint: array[1..12] of integer; raznica:array[1..12] of real; sr_year,f: real; k,i: integer; begin sr_year:=0; for i:=1 to 12 do sr_month[i ]:=0; raznica[i ]:=0; for i:=1 to n do begin a[i ].month:=0; readln(c); c1:=copy(c,4,2); val(c1,a[i ].month,k); delete(c,1,6); val(c,a[i ].temperatyra,k); sr_month[a[i ].month]:=sr_month[a[i ].month]+a[i ].temperatyra; end; for i:=1 to 12 do begin sr_monthint[i ]:=i; case sr_monthint[i ] of 1,3,5,7,8,10,12: sr_month[i ]:=sr_month[i ]/31; 4,6,9,11: sr_month[i ]:=sr_month[i ]/30; 2: sr_month[i ]:=sr_month[i ]/29; end; sr_year:=sr_year+sr_month[i ]; end; sr_year:=sr_year/12; writeln(sr_year:0:1); for i:=1 to 12 do raznica[i ]:=abs(sr_year-sr_month[i ]); for i:=1 to 11 do begin for k:=11 downto i do if raznica[k]>raznica[k+1] then begin f:=raznica[k]; raznica[k]:=raznica[k+1]; raznica[k+1]:=f; end; end; for i:=1 to 12 do begin for k:=1 to 12 do if raznica[i ]=abs(sr_year-sr_month[k]) then begin raznica[i ]:=sr_year-sr_month; writeln(k,' ', sr_month[k]:0:1,' ', raznica[i ]:0:1); end; end; end. [/more]

Ответов - 1

max: Если не сложно, оцените еще и выполнение второй задачи. program c4_2; var c,f: char; s: string; i,k, max: integer; a:array['A'..'Z'] of integer; begin s:=''; repeat read(c); s:=s+upcase(c) until c='.'; k:=length(s); delete(s,k,1); k:=k-1; for i:=1 to k do begin for c:='A' to 'Z' do if ord(c)=ord(s[i ]) then a[c]:=a[c]+1; end; for c:='A' to 'Z' do max:=a['A']; f:='A'; for c:='B' to 'Z' do if max<a[c] then begin max:=a[c]; f:=c; end; writeln(f,' ',max); end. Конечно в ответах решения значительно красивее, просто интересно насколько баллов будут оценены эти задачи.



полная версия страницы