Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
1

Записать в новый файл в порядке возрастания целые числа

05.03.2012, 08:15. Показов 3357. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Записать в файл N Целых чисел. Записать в новый файл в порядке возрастания целые числа, большие минимального элемента и меньшие максимального элемента исходного файла
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2012, 08:15
Ответы с готовыми решениями:

Вывести в порядке возрастания все целые числа, между A и B
Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, рас-положенные...

Вывести в порядке возрастания все целые числа расположенные между А и В
{Даны два целых числа А и В(АВ) Вывести в порядке возрастания все целые числа расположенные между...

Вывести в порядке возрастания все целые числа, расположенные между A и B
Integer10. Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем —...

Вывести в порядке возрастания все целые числа, расположенные между А и В
Даны два целых числа А и В (А < В). Вывести в порядке возрастания все целые числа, расположенные...

18
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.03.2012, 11:17 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
uses crt;
var f,g:file of integer;
    n,i,j,k,iv,a,b,mn,mx,x:integer;
begin
randomize;
assign(f,'fileF');
rewrite(f);
assign(g,'fileG');
rewrite(g);
write('Сколько чисел ввести n=');
read(n);
for i:=1 to n do
 begin
  a:=random(100);
  write(f,a);
 end;
writeln('Содержание исходного файла:');
reset(f);
read(f,mn);
write(mn,' ');
mx:=mn;
for i:=1 to filesize(f)-1 do
 begin
  read(f,a);
  write(a,' ');
  if a<mn then mn:=a;
  if a>mx then mx:=a;
 end;
writeln;
writeln;
writeln('Минимум=',mn,' максимум=',mx);
writeln;
seek(f,0);
for i:=0 to filesize(f)-1 do
 begin
  seek(f,i);
  read(f,a);
  if(a>mn)and(a<mx) then{если число из интервала}
   begin
    k:=0;
    iv:=-1;{пока нет}
    while(k<filesize(g))and(iv=-1) do
     begin
      seek(g,k);
      read(g,x);
      if x>a then iv:=k{нашли первое число больше данного}
      else k:=k+1;
     end;
    if iv=-1 then{если не нашли больше}
     begin
      seek(g,filesize(g));{записываем в конец}
      write(g,a);
     end
    else{если нашли}
     begin
      for j:=filesize(g) downto iv+1 do{сдвигаем элементы вниз на 1}
       begin
        seek(g,j-1);
        read(g,b);
        seek(g,j);
        write(g,b);
       end;
      seek(g,iv);
      write(g,a);{вставляем число}
     end;
   end;
 end;
close(f);
reset(g);
writeln('Содержание полученного файла:');
if filesize(g)=0 then write('Нет чисел, отличных от минимального и максимального')
else
 begin
  for i:=0 to filesize(g)-1 do
   begin
    read(g,a);
    write(a,' ');
   end;
 end;
close(g);
end.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.04.2012, 07:36 3
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
uses crt;
var f,g:file of integer;
    a,b,x,mn,mx:integer;
    n,i,j,i1,iv:integer;
    t:boolean;
begin
clrscr;
randomize;
assign(f,'file1');
rewrite(f);
assign(g,'file2');
rewrite(g);
write('Сколько чисел ввести n=');
readln(n);
for i:=1 to n do
 begin
  a:=random(100);
  write(f,a);
 end;
writeln('Содержание исходного файла:');
reset(f);
read(f,mn);{первое число пока мин и макс}
write(mn:4);
mx:=mn;
while not eof(f) do
 begin
  read(f,a);
  write(a:4);
  if a<mn then mn:=a;
  if a>mx then mx:=a;
 end;
writeln;
writeln('Минимальный=',mn);
writeln('Максимальный=',mx);
writeln;
{вставка элементов в новый файл по возрастанию}
{найдем первый элемент для вставки}
seek(f,0);
i1:=-1;
i:=0;
while(i<filesize(f))and(i1=-1)do
 begin
  seek(f,i);
  read(f,a);
  if(a>mn)and(a<mx) then i1:=i
  else i:=i+1;
 end;
if i1=-1 then
 begin
  write('В файле нет чисел больше минимального и меньше максимального');
  readln;
  close(f);
  exit
 end;
write(g,a);
reset(g);
{вставляем остальные}
seek(f,0);
for i:=i1+1 to filesize(f)-1 do
 begin
  seek(f,i);
  read(f,x);
  if(x>mn)and(x<mx) then
   begin
    t:=false;{пока нет места для вставки}
    seek(g,filesize(g)-1);{проверим не больше ли последнего}
    read(g,a);
    if a<=x then
     begin
      seek(g,filesize(g));
      write(g,x);
      t:=true;{вставили в конец}
     end
    else {если нет сравним с первым}
     begin
      seek(g,0);
      read(g,a);
      if a>=x then
       begin
        for j:=filesize(g) downto 1 do
         begin
          seek(g,j-1);
          read(g,b);
          seek(g,j);
          write(g,b);
         end;
        seek(g,0);
        write(g,x);
        t:=true;{вставили в начало}
       end
     end;
    if not t then {если нет будем искать куда вставить}
     begin
      j:=0;
      iv:=-1;
      while(j<filesize(g))and(iv=-1) do
       begin
        seek(g,j);
        read(g,a);
        if a>=x then iv:=j
        else j:=j+1;
       end;
      for j:=filesize(g) downto iv+1 do
       begin
        seek(g,j-1);
        read(g,b);
        seek(g,j);
        write(g,b);
       end;
      seek(g,iv);
      write(g,x);
     end;
   end;
 end;
close(f);
writeln('Содержание нового файла:');
seek(g,0);
for i:=0 to filesize(g)-1 do
 begin
  read(g,a);
  write(a:4);
 end;
close(g);
readln
end.
1
--\.founder./--
565 / 565 / 392
Регистрация: 20.10.2011
Сообщений: 867
25.04.2012, 12:22 4
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 var
 arr: array [1..100] of integer;
 t,p:text;
 i, j, g, n, max, min: integer;
 
 begin
 assign(t,'C:\in.txt');
 assign(p,'C:\out.txt');
 rewrite(t);
 rewrite(p);
 write('Ñêîëüêî ÷èñåë çàïèñàòü â ôàéë: '); readln(n);
 randomize;
 
 
 for i:=1 to n do
 begin
   arr[i]:=random(50);
   write(t,arr[i],' ');
 end;
 
 max:=arr[1];
 min:=arr[1];
 for i:=1 to n do
 begin
    if arr[i]>max then max:=arr[i];
    if arr[i]<min then min:=arr[i];
 end;
 
 for i:=1 to n do
 begin
     for j:=1 to n-1 do
     if arr[j]>arr[j+1] then
        begin
          g:=arr[j];
          arr[j]:=arr[j+1];
          arr[j+1]:=g;
        end;
 end;
     
 for i:=1 to n do
 begin
    if (arr[i]<max) and (arr[i]>min) then
       write(p,arr[i],' ');
 end;
 
 close(t);
 close(p);
 end.
1
тыдыщ
206 / 189 / 166
Регистрация: 19.01.2011
Сообщений: 483
25.04.2012, 12:36 5
WebMax 2.0, c возвращением!
0
WebMax 2.0
25.04.2012, 12:40
  #6

Не по теме:

klast, Привет! Да я так, мимо проходил . Сижу в разделе jQuery, JS

0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
28.04.2012, 11:03  [ТС] 7
эту пограмму чуть поменять надо.
например ряд чисел: 3 1 7 9 12 2 20
максимальное=20,минимальнное=1.
надо записать в файл: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19,тоесть все числа записать который фходят в данный промежуток,больше одного и меньше 20.
и обьясните что за чем идёт,если можно то программу полегче.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2012, 13:33 8
Цитата Сообщение от yulia2012 Посмотреть сообщение
эту пограмму чуть поменять надо.
А что не нравится в моей? Она именно то и делает, о чем написано в задании и что Вы пытаетесь мне объяснить. Вот скрин, что не так?
Миниатюры
Записать в новый файл в порядке возрастания целые числа  
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2012, 13:35 9
Цитата Сообщение от yulia2012 Посмотреть сообщение
и обьясните что за чем идёт,если можно то программу полегче.
А это уж мое дело, не запрягли, не указывайте, а программ, понятных Вам, наверное не существует в природе. Работа с типизированными файлами занятие не простое и написать программу "легче", типа для блонди, нельзя.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
09.05.2012, 15:00  [ТС] 10
дак числа в другом файле должны идти все,т.е порядок составить всех чисел которые входят в этот промежуток:например 3 2 6 8 12 10,минимальное 2 максимальное 12
другой файл:3 4 5 6 7 8 9 10 11,чтобы вот так получилось!!!!
а у тебя записываются только порядок из исходного файла,т.е не все числа
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.05.2012, 15:14 11
Задание нужно по человечески писать, а не с коленки переписывать, а потом рычать и сопли размазывать. Свободна как птица в полете.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
09.05.2012, 15:21  [ТС] 12
я тебе изначально так и написала задание,которое мне дали.
которую ты программу мне сделал,я её показала преподу,но она типа сказала что не правильно,не все числа записываются,вот я тебе и точнее написала,хотя задание то такое дано.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.05.2012, 15:27 13
значит препод тупой как баран. Это задача на умение работать с типизированными файлами и заключается в том чтобы
1-найти мин и макс
2-переписать из первого файла во второй только те числа, которые больше мин и меньше макс.
А чтобы просто написать числа из воздуха, то просто
Pascal
1
2
for i:=mn+1 to mx-1 do
write(g,i);
и думать вообще не нужно, что вероятно ни препод, ни Вы вообще не умеете.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
09.05.2012, 15:40  [ТС] 14
ну дак конечно,не все же такие умные как ты!
0
КонецСвета
09.05.2012, 16:20
  #15
 Комментарий модератора 
yulia2012, здесь, на форуме, уважающие друг друга и соблюдающие правила форума люди собрались, чтобы научиться нововму, чтобы помочь друг другу.
Вы не проявляете уважения ни к тем, кто стремится вам помочь, ни к правилам форума.
Вы создаете множество дублей, вынуждая уважаемых людей отвечать вам снова и снова.
На каждую вашу тему приходится по 5-7 дублей.
Впредь нарушение правил повлечет наказание. Это последнее предупреждение.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
10.05.2012, 14:43  [ТС] 16
приношу свои извинения)
0
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
10.05.2012, 15:40 17
yulia2012, спасибо за понимание...
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 48
15.05.2012, 19:16  [ТС] 18
помоги пожалуйста составить программу
0
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
15.05.2012, 20:40 19
yulia2012, а в чем проблема с программами Puporev и WebMax 2.0? не думаю, что у меня короче или проще получится... сложнее - можно =)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
uses crt;
var n,i,max,min: integer;
    f,g: file of integer;
begin                                       //ассоциирую переменную с файлом
assign(f,'C:\in.dta');
assign(g,'C:\out.dta');
rewrite(f);                                 //открываю для записи
for i:=1 to 20+random(20) do                //в цикле с параметрами заполняю случайными числами
    begin
    n:=random(199)-99;
    write(f,n);
    end;
writeln('Компоненты исходного файла');
reset(f);                                       //открывааю для чтения
read(f,n);                                      //считываю первый компонент, присваиваю его значение
max:=n; min:=n;                                  //и максимуму и минимуму
reset(f);
while not (eof(f)) do                          //в цикле с предусловием пока не закончится файл
      begin
      read(f,n);                              //считываю переменные, сравниваю с мин и макс если больше, то меняю на новое значение макс, если меньше, то наоборот
      write(n:5);
      if n>max then max:=n;
      if n< min then min:=n;
      end;
writeln;
writeln('Максимальный элемент ',max);
writeln('Mинимальный элемент  ',min);
rewrite(g);
for i:=min+1 to max-1 do                       //в цикле с параметром от минимального до максимального не включительно для каждого значения счетчика i
    begin
    reset(f);                                  //открываю файл для чтения
    while not (eof(f)) do
          begin                               //считываю переменную
          read(f,n);                          //если совпадает со счетчиком,
          if n=i then write(g,i);            //заношу в новый файл
          end;
    end;
writeln;
writeln('Компоненты итогового файла');
reset(g);                                   //открываю для чтения
while not (eof(g)) do                       //в цикле с предусловием
      begin
      read(g,n);                            //считываю и вывожу компоненты нового файла
      write(n:5);
      end;
close(f);                                 //закрываю
close(g);
end.
пс решение нерациональное =) очень...
1
15.05.2012, 20:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2012, 20:40
Помогаю со студенческими работами здесь

Вывести в порядке возрастания все целые числа, расположенные между A и B
Даны два целых числа A и B (A&lt;B). Вывести в порядке возрастания все целые числа, ...

В порядке возрастания напечатать все целые числа, которые представимы в заданном виде
в порядке возрастания напечатать все целые числа,которые представимы в виде 3ij+1,но непредставимы...

Получите в порядке возрастания все целые числа из интервала, которые не входят в последовательность
Пусть даны целые числа a1,a2..an .Пусть M-наибольшее ,m- наименьшее из них. получите в порядке...

Вывести в порядке возрастания все целые числа, расположенные между А и В, а также количество N этих чисел
Даны два целых числа А и В (А&lt;В). Вывести в порядке возрастания все целые числа , расположенные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru