Napisz program, który wypisze na ekran największą i najmniejszą wartość, oraz ilość wystąpień
poszczególnych liczb zawartych w pliku dane.txt. Liczby są z zakresu od 1 do 10, zapisane jedna pod
drugą.
Przykład:
Zawartość pliku:
2
3
4
6
1
3
5
6
Wynik na ekranie:
Min: 1
Max: 6
1: 1
2: 1
3: 2
4: 1
5: 1
6: 2
7: 0
8: 0
9: 0
10: 0
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
//licze na naj...
program nazwa;
uses CRT;
var
x:integer;
plik:text;
min,max:integer;
liczba:integer;
dana:integer;
licz:integer;
t:array[1..10] of integer;
begin
ClrScr;
min:=11;
max:=0;
liczba:=0;
dana:=0;
licz:=0;
for x:=1 to 10 do
begin
t[x]:=0;
end;
assign(plik,'dane.txt');
reset(plik);
while not eof(plik) do
begin
inc(liczba);
if (liczba=liczba) then
readln(plik,dana);
licz:=dana;
if (licz<min) then
min:=licz;
if (licz>max) then
max:=licz;
for x:=1 to 10 do
begin
if (licz=x) then
t[x]:=t[x]+1;
end;
end;
close(plik);
writeln('Min: ',min);
writeln('Max: ',max);
for x:=1 to 10 do
begin
writeln(x,': ',t[x]);
end;
readln;
end.
Wersja z formatowaniem kodu: http://pastebin.com/JmjjHhDa
Wersja bez formatowania kodu{$MODE OBJFPC}
{$H+}
Uses SysUtils;
Type TNumber = 1..10;
Const a_FILE = 'dane.txt';
Var Occurrences : Array[TNumber] of TNumber;
TF : TextFile;
Min, Max, Current: TNumber;
I : Integer;
Begin
FillByte(Occurrences, sizeof(Occurrences), 0);
Try
AssignFile(TF, a_FILE);
Reset(TF);
Min := High(TNumber);
Max := Low(TNumber);
While (not EOF(TF)) Do
Begin
Readln(TF, Current);
Occurrences[Current] += 1;
if (Current > Max) Then
Max := Current;
if (Current < Min) Then
Min := Current;
End;
CloseFile(TF);
Except
On E: Exception Do
Begin
Writeln('Exception: ', E.Message);
Halt;
End;
End;
Writeln('Min: ', Min);
Writeln('Max: ', Max);
For I := Low(Occurrences) To High(Occurrences) Do
Writeln(I, ': ', Occurrences[I]);
End.: