Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2008, 18:35   #1
pakusya
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 23
По умолчанию работа с массивами и файлами (Pascal)

пожалуйста помогите с решениями задач.
1.создать программно файл ONE1. каждая строка файла-целое число. упорядочить строки файла по возрастанию.
2. слить в один файл два упорядоченных по возрастанию файла целых чисел. результирующий файл упорядочить по убыванию.
3. написать программу, в который вводится массив и вызывается процедура, упорядочивающая этот массив в зависимости от указанного ключа по возрастанию или по убыванию.
4. дана строка символов. написать процедуру удаления из строки всех кратных рядом стоящих символов.
pakusya вне форума Ответить с цитированием
Старый 01.12.2008, 18:47   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию 1

Код:
uses crt;
var f:text;
    a:array[1..100] of integer;
    i,j,temp:integer;
begin
clrscr;
randomize;
writeln('Init file -1');
writeln('Sort file -2');
case readkey of
'1': begin
        assign(f,'c:\ONE1.txt');
        rewrite(f);
        for i:=1 to 100 do
        writeln(f,random(100));
        close(f);
    end;
'2':begin
     Assign(f,'c:\ONE1.txt');
     reset(f);
     i:=0;
     while not eof(f) do
      begin
       inc(i);
       readln(f,a[i]);
      end;
    close(f);
    for i:=2 to 100 do
      for j:=100 downto i do
        if a[j]<a[j-1] then begin
                            temp:=a[j];
                            a[j]:=a[j-1];
                            a[j-1]:=temp;
                            end;
      assign(f,'c:\ONE1.txt');
        rewrite(f);
        for i:=1 to 100 do
        writeln(f,a[i]);
        close(f);
    end;
  end;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 01.12.2008, 19:11   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию 2

Код:
uses crt;
var f,f1:text;
    a,b:array[1..100] of integer;
    c:array[1..200] of integer;
    i,j,temp:integer;

begin
clrscr;
assign(f,'c:\ONE1.txt');
rewrite(f);
for i:=1 to 100 do
 a[i]:=random(100);
for i:=2 to 100 do
 for j:=100 downto i do
   if a[j]<a[j-1] then begin
                        temp:=a[j];
                        a[j]:=a[j-1];
                        a[j-1]:=temp;
                       end;
for i:=1 to 100 do
  writeln(f,a[i]);
  close(f);
assign(f,'c:\ONE2.txt');
rewrite(f);
for i:=1 to 100 do
 a[i]:=random(100);
for i:=2 to 100 do
 for j:=100 downto i do
   if a[j]<a[j-1] then begin
                        temp:=a[j];
                        a[j]:=a[j-1];
                        a[j-1]:=temp;
                       end;
for i:=1 to 100 do
  writeln(f,a[i]);
  close(f);
 assign(f1,'c:\ONE3.txt');
 rewrite(f1);
 assign(f,'c:\ONE1.txt');
 reset(f);
 while not eof(f) do
  begin
   readln(f,temp);
   writeln(f1,temp);
  end;
 close(f);
  assign(f,'c:\ONE2.txt');
 reset(f);
 while not eof(f) do
  begin
   readln(f,temp);
   writeln(f1,temp);
  end;
 close(f);
 close(f1);
 assign(f,'c:\ONE3.txt');
 reset(f);
 i:=0;
 while not(eof(f)) do
  begin
   inc(i);
   readln(f,c[i]);
  end;
  close(f);
for i:=2 to 200 do
 for j:=200 downto i do
   if c[j]>c[j-1] then begin
                        temp:=c[j];
                        c[j]:=c[j-1];
                        c[j-1]:=temp;
                       end;
 assign(f,'c:\ONE3.txt');
 rewrite(f);
 for i:=1 to 200 do
  writeln(f,c[i]);
 close(f);
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 01.12.2008, 19:18   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию 3

Код:
uses crt;
const n=20;
var a:array[1..n] of integer;
    i:integer;


procedure Sorting(var a:array of integer;x:byte);
var i,j,temp:integer;
begin
if x=1 then begin
            for i:=1 to n-1 do
              for j:=n-1 downto i do
                 if a[j]<a[j-1] then begin
                        temp:=a[j];
                        a[j]:=a[j-1];
                        a[j-1]:=temp;
                       end;
            end
   else begin
         for i:=1 to n-1 do
              for j:=n-1 downto i do
                 if a[j]>a[j-1] then begin
                        temp:=a[j];
                        a[j]:=a[j-1];
                        a[j-1]:=temp;
                       end;
        end;
end;

begin
clrscr;
Writeln('Input ',n,' elements');
for i:=1 to n do
 read(a[i]);
writeln('Sort on vozr -1');
writeln('Sort on yb -2');
case readkey of
'1':Sorting(a,1);
'2':Sorting(a,2);
   end;
for i:=1 to n do
 write(a[i]:3);
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 01.12.2008, 19:20   #5
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
4. дана строка символов. написать процедуру удаления из строки всех кратных рядом стоящих символов.
Что такое кратный символ? Подряд идущий(aaabnmgj)?
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 01.12.2008, 20:46   #6
pakusya
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 23
По умолчанию

я сама не понимаю. может эти символы цифры.
можно попрасить еще:
как написать процедуру ввода-вывода элементов матрицы Т размерностью N строк на М столбцов.
спасибо за помощь.
pakusya вне форума Ответить с цитированием
Старый 02.12.2008, 09:40   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для решения второй задачи можно (и даже желательно) обойтись без чтения файлов в память.
вот, рекомедую ознакомится с моим решением здесь - Паскаль, создание одного упорядоченного массива из трех
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2012, 17:18   #8
Viwwna
Пользователь
 
Аватар для Viwwna
 
Регистрация: 18.11.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от alex_fcsm Посмотреть сообщение
Код:
uses crt;
var f,f1:text;
    a,b:array[1..100] of integer;
    c:array[1..200] of integer;
    i,j,temp:integer;

begin
clrscr;
assign(f,'c:\ONE1.txt');
rewrite(f);
for i:=1 to 100 do
 a[i]:=random(100);
for i:=2 to 100 do
 for j:=100 downto i do
   if a[j]<a[j-1] then begin
                        temp:=a[j];
                        a[j]:=a[j-1];
                        a[j-1]:=temp;
                       end;
for i:=1 to 100 do
  writeln(f,a[i]);
  close(f);
assign(f,'c:\ONE2.txt');
rewrite(f);
for i:=1 to 100 do
 a[i]:=random(100);
for i:=2 to 100 do
 for j:=100 downto i do
   if a[j]<a[j-1] then begin
                        temp:=a[j];
                        a[j]:=a[j-1];
                        a[j-1]:=temp;
                       end;
for i:=1 to 100 do
  writeln(f,a[i]);
  close(f);
 assign(f1,'c:\ONE3.txt');
 rewrite(f1);
 assign(f,'c:\ONE1.txt');
 reset(f);
 while not eof(f) do
  begin
   readln(f,temp);
   writeln(f1,temp);
  end;
 close(f);
  assign(f,'c:\ONE2.txt');
 reset(f);
 while not eof(f) do
  begin
   readln(f,temp);
   writeln(f1,temp);
  end;
 close(f);
 close(f1);
 assign(f,'c:\ONE3.txt');
 reset(f);
 i:=0;
 while not(eof(f)) do
  begin
   inc(i);
   readln(f,c[i]);
  end;
  close(f);
for i:=2 to 200 do
 for j:=200 downto i do
   if c[j]>c[j-1] then begin
                        temp:=c[j];
                        c[j]:=c[j-1];
                        c[j-1]:=temp;
                       end;
 assign(f,'c:\ONE3.txt');
 rewrite(f);
 for i:=1 to 200 do
  writeln(f,c[i]);
 close(f);
end.
А как сделать, что бы в файле ONE3, целые одинаковые цифры (повторяющиеся, например 5 5 5)включались только один раз?
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает программистов, презирающих программистов, которые презирают тех, кто их презирает.
Viwwna вне форума Ответить с цитированием
Старый 28.06.2012, 10:08   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А как сделать, что бы в файле ONE3, целые одинаковые цифры (повторяющиеся, например 5 5 5)включались только один раз?
проверять и, если они совпадают, не выводить их в файл ONE3.

ваш К.О.


А если серьёзно, то начните с того, что расскажите нам полностью ваши исходные условия задачи.
А потом уже можно поговорить о том, что у Вас не получается...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите дорешить задачу с массивами(Pascal) Дима82 Помощь студентам 4 23.05.2008 23:11
Работа с массивами в C# MaskEdit Общие вопросы .NET 3 17.05.2008 17:59
Pascal работа с текстовыми файлами Andrey89 Помощь студентам 3 25.12.2007 19:21
Turbo Pascal работа с файлами 34P434 Помощь студентам 2 24.01.2007 13:12