|
|
вернуться в форумОбщий форумHelp with Problem 1074! Please... This is program: Program n1074; Var n,i,j,e,point,left,right,q:longint; znak:char; a:array [0..100{00}] of string[255]; b:array [0..100{00}] of byte; c:array [0..100{00}] of boolean; Procedure Input; Begin n:=0; While a[n]<>'#' Do Begin Inc(n); ReadLn(a[n]); If a[n]<>'#' Then Begin ReadLn(b[n]); If b[n]<0 Then b[n]:=0; End; End; Dec(n); End; Procedure Solve; Var pp:boolean; Begin For i:=1 to n Do Begin c[i]:=true; e:=0; point:=0; pp:=true; For j:=1 to Length(a[i]) Do If (a[i][j]>='0') and (a[i][j]<='9') Then pp:=false; If pp=true Then c[i]:=false; For j:=1 to Length(a[i]) Do Begin If ((a[i][j]='+') or (a[i][j]='-')) and (Not ((j=1) and (a[i][2]>='0') and (a[i][2]<='9'))) and (Not (((a[i][j- 1]='e') or (a[i][j-1]='E')) and (a[i][j+1]>='0') and (a[i][j+1] <='9'))) and (Not ((j=1) and (a[i][2]='.'))) Then Begin c[i]:=false; Break; End; If ((a[i][j]='e') or (a[i][j]='E')) and (Not ((a[i][j-1] >='0') and (a[i][j-1]<='9') and (a[i][j+1]>='0') and (a[i][j+1] <='9')) and Not ((a[i][j-1]>='0') and (a[i][j-1]<='9') and ((a[i] [j+1]='+') or (a[i][j+1]='-')))) Then Begin c[i]:=false; Break; End; If (a[i][j]='.') and (Not (((a[i][j-1]>='0') and (a[i][j- 1]<='9') or (j=1)) and (a[i][j+1]>='0') and (a[i][j+1]<='9'))) and Not((j=2) and ((a[i][1]='+') or (a[i][1]='-'))) Then Begin c[i]:=false; Break; End; If (a[i][j]='e') or (a[i][j]='E') Then Inc(e); If a[i][j]='.' Then Inc(point); If Not ((a[i][j]>='0') and (a[i][j]<='9')) and Not ((a[i] [j]='e') or (a[i][j]='E')) and Not ((a[i][j]='+') or (a[i][j]='- ')) and Not (a[i][j]='.') and Not ((Ord(a[i][j])=10) or (Ord(a [i][j])=13) or (Ord(a[i][j])=26)) and (a[i][j]<>' ') Then Begin c[i]:=false; Break; End; End; If (e>1) or (point>1) Then c[i]:=false; If a[i][1]='+' Then Delete(a[i],1,1); For j:=1 to Length(a[i]) Do If (a[i][j]='.') and (j=1) Then Insert('0',a[i],j-1); End; End; Procedure Solve2; Begin For i:=1 to n Do If c[i]=true Then Begin left:=0; right:=0; For j:=1 to Length(a[i]) Do If (a[i][j]='e') or (a[i][j]='E') Then Begin If a[i][j+1]='+' Then Begin For q:=(j+2) to Length(a[i]) Do right:=right*10+(Ord(a[i][q])-Ord('0')); Delete(a[i],j,Length(a[i])-j+1); Break; End Else If (a[i][j+1]>='0') and (a[i][j+1]<='9') Then Begin For q:=(j+1) to Length(a[i]) Do right:=right*10+(Ord(a[i][q])-Ord('0')); Delete(a[i],j,Length(a[i])-j+1); Break; End Else If a[i][j+1]='-' Then Begin
Re: Wow!!!! How can you do a such number of mistakes!!!!!! May be this help you, but I don't think so :-)) (+) Первый тест: 10 2 # Правильный ответ: "10.00" Твой ответ: "10.0" ____________________________________________ Второй тест: .0e2 1 # Правильный ответ: "0.0" Твой ответ: ".0" ______________________________________________ Не гарантирую, что это исчерпывающий список тестов, на которых твоя программа выдает неправильный ответ. Зачем ты хранишь все ответы в памяти? Online Judge позволяет сразу же после формирования ответа выводить его в выходной файл(консоль). Т.е. на моя программа на моем компе делает следующее: 10 /вводятся данные 2 /с клавиатуры 10.00 /сразу же в Re: Wow!!!! How can you do a such number of mistakes!!!!!! May be this help you, but I don't think so :-)) (+) > Первый тест: > 10 > 2 > # > Правильный ответ: "10.00" > Твой ответ: "10.0" I do it only because is Problem 1074 task wrote: If after point all zero then must be one zero! but not in this problem! > ____________________________________________ > > Второй тест: > .0e2 > 1 > # > Правильный ответ: "0.0" > Твой ответ: ".0" In my computer! my program give me 0.0! > ______________________________________________ > > Не гарантирую, что это исчерпывающий список тестов, на которых твоя > программа выдает неправильный ответ. > > Зачем ты хранишь все ответы в памяти? Online Judge позволяет сразу > же после формирования ответа выводить его в выходной файл(консоль). > Т.е. на моя программа на моем компе делает следующее: > > 10 /в |
|
|