|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
05.01.2016, 20:09 | #1 (permalink) |
Member
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Создание программы. Тема: типизированные файлы. Pascal ABC
|
05.01.2016, 20:09 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посоветую уделить немного времени прочтению схожих постов Создание программы на языке С++ Типизированные файлы, Паскаль Типизированные файлы Помогите решить задачу по Pascal. Тема - массивы |
05.01.2016, 20:11 | #2 (permalink) |
Member
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Я, создала файл и нашла в нем максимум, а вот как считывать по 5 элементов и находить конкретно в нем максимум не могу догадаться.
const n = 15; var f, g: file of integer; A: array[1..n] of integer; //M: array[1..5] of integer; max, B: integer; i: integer; begin Assign(f, 'd:/f.dat'); Rewrite(f); Randomize; for i := 1 to n do A[i] := random(50) - 20; for i := 1 to n do begin Write(f, A[i]); Write(' ', A[i]); end; Writeln; close(f); Assign(f, 'D://f.dat'); Assign(g, 'D://g.dat'); Reset(f); Rewrite(g); For i:=1 to n do Read(f, B); max := A[1]; for i := 1 to n do begin if max < A[i] then begin max := A[i];end; end; Write(g, max); Write(' ', max); close(g); close(f); end. |
05.01.2016, 21:30 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Пожалуйста, например, так:
Код:
Const n = 48; Var f,g: file of integer; A: array[1..n] of integer; max,B,m: integer; i,j: integer; Begin Assign(f, 'd:\f.dat'); Rewrite(f); Randomize; for i := 1 to n do begin B:=-20+random(50); write(f,B); end; close(f); Reset(f); for i := 1 to n do begin Read(f,A[i]); write(A[i]:4); end; Close(f); Writeln; Writeln; Assign(g, 'D:\g.dat'); Rewrite(g); m:=n div 5; for i:=1 to m do begin Max:=-100; for j:=5*(i-1)+1 to 5*i do if A[j]>Max then Max:=A[j]; write(g,Max); write(Max:4); end; Max:=-100; for j:=5*m+1 to n do if A[j]>Max then Max:=A[j]; write(g,Max); write(Max:4); Close(g); Readln End. В путях файлов употребляются ОБРАТНЫЕ слэши, причем ОДИНАРНЫЕ!!! |
05.01.2016, 21:35 | #4 (permalink) |
Member
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Спасибо, Владимир. Я поняла, ход вашей мысли. Вы гений, а я какие варианты только не писала уже ничего не могла сделать . Обязательно воспользуюсь вашим советом)
|
05.01.2016, 21:42 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
05.01.2016, 22:30 | #6 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Черт, выявил-таки один ляп: если n кратно 5 (напр. не 48, а 45), то в конце вылезает -100. Поэтому самый последний блок надо так:
Код:
if (n mod 5)>0 then begin Max:=-100; for j:=5*m+1 to n do if A[j]>Max then Max:=A[j]; write(g,Max); write(Max:4); end; |
06.01.2016, 00:01 | #8 (permalink) |
Member
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Спасибо за помощь)))
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|