Прочитать двухмерный массив с текстового файла. Отсортировать и вывести результат в текстовый файл
1.Дано : двухмерный массив. Найти количество разных элементов в нем
2 найти количество элементов в каждой строке которые состоят с разных цифр
Другие языки программирования и технологии
Помогите решить задачу на Pascal 2- масив
решение на Turbo Pascal 7.0 (Pascal ABC = Shift+F9)
ссылка на скачивание файла "my-files.ru/amfe0z"
program NxM_500_x_500;
uses crt;
var znak, a, a1, i, j, n, m, code_error, chislo, k, l, l1, cop, c_num, kolvo_strok : integer;
stroka, slovo, slovo1: string;
f, f1: text;
b, c: array [1..10000] of integer;
begin
{здесь ниже код на заполнение файла значениями наугад от 100 до 1000, ввод
данных систематизирован на каждые пять символов введено 3 цифры}
clrscr;
randomize;
writeln (' Выберите действие :');
writeln (' 1 - создать двухмерный массив в файл dano.txt ...');
writeln (' 2 - обработать двухмерный массив в файле dano.txt / otvet.txt ...');
readln (znak);
case znak of
1: begin
clrscr;
Assign(f, 'dano.txt');
Rewrite(f);
write (' введите количество строк N<=100 и столбиков M <= 10 :');
readln (n, m);
write (' ответ в файле dano.txt');
for i:=1 to n do
begin
for j:=1 to m do
Write (f, 100+random (900):5);
writeln (f, '');
end;
Close(f);
writeln (' Ready! ');
end;
{так как данные в файле у меня упорядочены через 5 символов, то
обращаюсь на считывание каждых 5 символов, можно и через пробелы решить,
но здесь лучше через 5 символов }
2: begin
clrscr;
Assign(f, 'dano.txt');
Assign (f1, 'otvet.txt');
Reset (f);
Rewrite (f1);
k:=1;
c_num:=0;
kolvo_strok:=0;
slovo1:='0123456789';
while not Eof(f) do
begin
inc(kolvo_strok);
readln (f, stroka);
a:=length (stroka);
for i:=1 to trunc (a/5) do
begin
slovo:=copy (stroka, i*5-4, 5);
for l1:=1 to 10 do
begin
cop:=0;
for l:=1 to 5 do
if slovo[l] = slovo1[l1] then cop:=cop+1;
if cop=2 then inc(c_num);
end;
val (slovo, chislo, code_error);
b[k]:=chislo;
{writeln (f1, b[k]);}
inc(k);
end;
{writeln (slovo);}
end;
for j:=1 to k-1 do
for i:=2 to k-1 do
if b[i-1] > b[i] then
begin
b[i-1]:=b[i-1]+b[i];
b[i]:=b[i-1]-b[i];
b[i-1]:=b[i-1]-b[i];
end;
writeln (f1, ' массив отсортированный по возрастанию ');
writeln (f1, ' _____________________________________ ');
for i:=1 to k-1 do
writeln (f1, b[i]);
writeln (f1, '');
writeln (f1, '');
a1:=1;
for i:=2 to k-1 do
if b[i-1] <> b[i] then
begin
c[a1]:=b[i];
inc (a1);
end;
writeln (f1, ' массив с неповторяющимися элементами ');
writeln (f1, ' ____________________________________ ');
for i:=1 to a1-1 do
writeln (f1, c[i]);
writeln (f1, ' ___________________________________________ ');
writeln (f1, ' количество неповторяющихся элементов = ', a1-1);
writeln ( ' Количество неповторяющихся элементов массива в файле dano.txt = ', a1-1);
Close(f);
close (f1);
writeln (' Количество элементов в массиве dano.txt которые состоят из разных цифр = ',
kolvo_strok*trunc(a/5)-c_num );
readln;
end;
else
begin
writeln (' Неправильно ввели значение ...');
writeln (' Программа выполнена. Для продолжения нажмите любую клавишу...');
repeat until keypressed;
exit;
end;
end;
end.
ссылка на скачивание файла "my-files.ru/amfe0z"
program NxM_500_x_500;
uses crt;
var znak, a, a1, i, j, n, m, code_error, chislo, k, l, l1, cop, c_num, kolvo_strok : integer;
stroka, slovo, slovo1: string;
f, f1: text;
b, c: array [1..10000] of integer;
begin
{здесь ниже код на заполнение файла значениями наугад от 100 до 1000, ввод
данных систематизирован на каждые пять символов введено 3 цифры}
clrscr;
randomize;
writeln (' Выберите действие :');
writeln (' 1 - создать двухмерный массив в файл dano.txt ...');
writeln (' 2 - обработать двухмерный массив в файле dano.txt / otvet.txt ...');
readln (znak);
case znak of
1: begin
clrscr;
Assign(f, 'dano.txt');
Rewrite(f);
write (' введите количество строк N<=100 и столбиков M <= 10 :');
readln (n, m);
write (' ответ в файле dano.txt');
for i:=1 to n do
begin
for j:=1 to m do
Write (f, 100+random (900):5);
writeln (f, '');
end;
Close(f);
writeln (' Ready! ');
end;
{так как данные в файле у меня упорядочены через 5 символов, то
обращаюсь на считывание каждых 5 символов, можно и через пробелы решить,
но здесь лучше через 5 символов }
2: begin
clrscr;
Assign(f, 'dano.txt');
Assign (f1, 'otvet.txt');
Reset (f);
Rewrite (f1);
k:=1;
c_num:=0;
kolvo_strok:=0;
slovo1:='0123456789';
while not Eof(f) do
begin
inc(kolvo_strok);
readln (f, stroka);
a:=length (stroka);
for i:=1 to trunc (a/5) do
begin
slovo:=copy (stroka, i*5-4, 5);
for l1:=1 to 10 do
begin
cop:=0;
for l:=1 to 5 do
if slovo[l] = slovo1[l1] then cop:=cop+1;
if cop=2 then inc(c_num);
end;
val (slovo, chislo, code_error);
b[k]:=chislo;
{writeln (f1, b[k]);}
inc(k);
end;
{writeln (slovo);}
end;
for j:=1 to k-1 do
for i:=2 to k-1 do
if b[i-1] > b[i] then
begin
b[i-1]:=b[i-1]+b[i];
b[i]:=b[i-1]-b[i];
b[i-1]:=b[i-1]-b[i];
end;
writeln (f1, ' массив отсортированный по возрастанию ');
writeln (f1, ' _____________________________________ ');
for i:=1 to k-1 do
writeln (f1, b[i]);
writeln (f1, '');
writeln (f1, '');
a1:=1;
for i:=2 to k-1 do
if b[i-1] <> b[i] then
begin
c[a1]:=b[i];
inc (a1);
end;
writeln (f1, ' массив с неповторяющимися элементами ');
writeln (f1, ' ____________________________________ ');
for i:=1 to a1-1 do
writeln (f1, c[i]);
writeln (f1, ' ___________________________________________ ');
writeln (f1, ' количество неповторяющихся элементов = ', a1-1);
writeln ( ' Количество неповторяющихся элементов массива в файле dano.txt = ', a1-1);
Close(f);
close (f1);
writeln (' Количество элементов в массиве dano.txt которые состоят из разных цифр = ',
kolvo_strok*trunc(a/5)-c_num );
readln;
end;
else
begin
writeln (' Неправильно ввели значение ...');
writeln (' Программа выполнена. Для продолжения нажмите любую клавишу...');
repeat until keypressed;
exit;
end;
end;
end.
Похожие вопросы
- Помогите решить задачу в Pascal!
- Помогите решить задачи на Pascal...
- Помогите решить задачу на Pascal!)
- Помогите решить задачу в Pascal.
- помогите решить задачи по Си. 2 неделю с ними бьюсь. выкладываю свое решение. скажите просто что не правильно
- Пожалуйста помогите решить задачу Pascal
- Помогите решить задачу через процедуры PASCAL
- Помогите решить задачи Pascal
- Помогите решить задачу Pascal
- Помогите решить задачу по Turbo Pascal пожалуста