mam podany plik tekstowy który posiada 999 liczb z zakresu 1-100. każda liczba jest w osobnej linijce. potrzebuję zrobić program, który zlicza która z liczb pojawiła się najwięcej razy. Myślałam nad tym żeby dla każdej liczby od 1 do 100 powtarzać porównywanie ich z liczbą w każdym wierszu, lecz nie mam za bardzo pomysłu jak to zrobić. Może mi ktoś dać jakąś wskazówkę?
0
0
Szukałam ale nigdzie nie ma czegoś takiego, czego potrzebuję.
0
Jak nie ma to się myśli, kombinuje i samodzielnie pisze. No wstyd, rzekomo kobieta, a nie chce się pomyślec. Ech, masz - ja za dobry dla tych leniuchów i leniuszek jestem - jak chcesz pokazywać więcej niż jedną liczbę, która wystapiła najczęśćiej to sobie przerób. Ja testowałem to na pliku z kilkoma tylko liczbami, mianowicie wklepałem do D:\liczby.txt:
3
5
8
1
3
7
3
4
2
I ten kod zwrócił mi liczbę 3 czyli raczej ok, ale pisane na szybko i kompilowane w Delphi jako Console Application, ale pod Pascalem też powinno pójść:
program lazy_milena_19;
{$APPTYPE CONSOLE}
const
MinDigit = 1;
MaxDigit = 100;
AFIleName = 'D:\liczby.txt';
var
S : string;
AFile : TextFile;
I, Code, Max : integer;
DigitsCntArr : array[MinDigit..MaxDigit] of Word;
begin
Assign(AFile, AFileName);
{$I-}
Reset(AFile);
{$I+}
if IOResult = 0 then
begin
for I := Low(DigitsCntArr) to High(DigitsCntArr) do
DigitsCntArr[I] := 0;
while not EOF(AFile) do
begin
REadln(AFile, S);
Val(S, I, Code);
if (Code = 0) and (I >= MinDigit) and (I <= MaxDigit) then
DigitsCntArr[I] := DigitsCntArr[I] + 1;
end;
Max := 0;
Code := 0;
for I := Low(DigitsCntArr) to High(DigitsCntArr) do
begin
if DigitsCntArr[I] > Max then
begin
Code := I;
Max := DigitsCntArr[I]
end;
end;
if Code > 0 then
begin
Writeln('W pliku: ', AFileName, ' - najczesciej wystepuje liczba: ', Code);
end
else
begin
Writeln('W pliku: ', AFileName,
' - nie znaleziono w osobnych liniach żadnych liczb z zakresu: ',
MinDigit, ' - ', MaxDigit, '!');
end;
end
else
begin
Writeln('Nie znaleziono pliku: ', AFileName);
end;
Readln;
end.