Chcę wyświetlić postęp obliczeń wykonanych pętlą DO na ekranie konsoli. Mogę drukować zmienną postępu do terminala tak:Jak sformatować instrukcję PRINT lub WRITE w celu nadpisania bieżącego wiersza na ekranie konsoli?
PROGRAM TextOverWrite_WithLoop
IMPLICIT NONE
INTEGER :: Number, Maximum = 10
DO Number = 1, MAXIMUM
WRITE(*, 100, ADVANCE='NO') REAL(Number)/REAL(Maximum)*100
100 FORMAT(TL10, F10.2)
! Calcultations on Number
END DO
END PROGRAM TextOverWrite_WithLoop
Wyjście powyższego kodu na ekranie konsoli jest:
10,00 20,00 30,00 40,00 50,00 60,00 70,00 80,00 90,00 100,00
Wszystko w tej samej linii, opakowane tylko przez okno konsoli.
ADVANCE = „Nie” argumentem i TL10 (tab pozostawił tak wiele spacji) edit deskryptor działa dobrze, aby zastąpić tekst na tej samej linii, na przykład wyjście z następującego kodu:
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
Czy:
Zamiast:
Ponieważ deskryptora edycji TL4.
Z tych dwóch przykładów można wywnioskować, że instrukcja WRITE nie może nadpisać tego, co zostało napisane przez inną instrukcję WRITE lub przez poprzednie wykonanie tego samego WRITE satement (jak w pętli DO).
Czy można to jakoś pokonać?
Używam kompilatora FTN95 w systemie Windows 7 RC1. (Program instalacyjny bluetootha z kompilatorem G95 Windows 7 RC1, nawet myślę, że działa dobrze na Vista.)
Wiem o pytaniu Supressing line breaks in Fortran 95 write statements, ale to nie działa dla mnie, ponieważ odpowiedź na to pytanie oznacza nowe wyjście jest dodawany do poprzedniego wyjścia w tej samej linii; zamiast nowego wyjścia nadpisując poprzednie dane wyjściowe.
Z góry dziękuję.
Który kompilator i system operacyjny jest włączony? – DigitalRoss
@digitalross, kompilator = FTN95, OS = Windows 7 RC1 – systemovich
Może powinieneś zaakceptować odpowiedź? –