Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
#1

Прочитать из типизированного файла целых чисел числа с заданными номерами

19.01.2018, 13:00. Просмотров 855. Ответов 19
Метки нет (Все метки)

Напишите программу, которая читает из типизированного файла целых чисел числа с номерами 1,3,5,7,2*n+1 и выводит их на экран.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2018, 13:00
Ответы с готовыми решениями:

Записать в типизированный файл несколько целых чисел, после чего вывести эти целые числа из типизированного файла на экран монитора
1. Создать или открыть текстовый (типизированный, нетипизированный) файл. 2....

Написать программу создания типизированного файла целых чисел
Необходимо написать программу создания типизированного файла с целыми числами....

Прочитать из текстового файла произвольную последовательность из 30 целых чисел
Напишите программу на языке Паскаль, которая читает из текстового файла...

Из типизированного файла, который содержит несколько целых чисел, вывести на экран монитора целое число с определенным порядковым номером.
Из типизированного файла, который содержит несколько целых чисел, вывести на...

Записать в типизированный файл несколько вещественных чисел, после чего вывести эти вещественные числа из типизированного файла на экран монитора.
Записать в типизированный файл несколько вещественных чисел, после чего вывести...

19
Cyborg Drone
Модератор
5273 / 3141 / 2440
Регистрация: 17.08.2012
Сообщений: 10,115
19.01.2018, 13:49 #2
Задание не вполне понятное. Буду считать, что требуется вывести все компоненты файла с нечётными индексами.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  f: file of integer;
  x: integer;
  i: longword;
 
begin
  assign(f, 'file.dat');
  reset(f);
  for i := 0 to (FileSize(f) - 1) div 2 do
    begin
      seek(f, i * 2 + 1);
      read(f, x);
      write(x:10)
    end;
  readln
end.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3759 / 2456 / 2035
Регистрация: 22.11.2013
Сообщений: 6,826
19.01.2018, 13:59 #3
Можно и без Seek():
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  f: file of Integer;
  x, t: integer;
  i: Longword;
begin
  Assign(f, 'file.dat');
  Reset(f); 
  Read(f, x); Write(x:10);
  for i := 1 to (FileSize(f) - 1) div 2 do
    begin
      Read(f, t, x);
      Write(x:10);
    end;
  ReadLn;
end.
0
Cyborg Drone
Модератор
5273 / 3141 / 2440
Регистрация: 17.08.2012
Сообщений: 10,115
19.01.2018, 14:33 #4
Можно и так. Правда, если считать, что индексация элементов файла начинается с 1, а не с 0, как положено. Но насчёт индексации вопрос спорный, вполне возможно, что в учебном заведении, где учится ТС, считается, что индексация в файле начинается с 1. Гримасы современного образования... Я уже перестаю удивляться.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3759 / 2456 / 2035
Регистрация: 22.11.2013
Сообщений: 6,826
19.01.2018, 16:45 #5
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Можно и так. Правда, если считать, что индексация элементов файла начинается с 1, а не с 0, как положено
С нуля, просто мы первый элемент уже до цикла прочитали. Читать парами Read(f,x,t) нельзя -- может быть нечетное количество элементов. Поэтому Read(f,x) перед циклом, а дальше пары Read(f,t,x).
0
Cyborg Drone
Модератор
5273 / 3141 / 2440
Регистрация: 17.08.2012
Сообщений: 10,115
20.01.2018, 00:50 #6
В 8 строке прочитали нулевой элемент и тут же распечатали. А не надо было: он чётный. И далее... 11, 12 строки: нечётные пропускаются, чётные печатаются.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3759 / 2456 / 2035
Регистрация: 22.11.2013
Сообщений: 6,826
20.01.2018, 10:23 #7
Cyborg Drone,
Ах, в этом смысле с 1.
Проблемы нет на самом деле, номера от 1, смещения от 0. Но если вдруг номера от 0, то все еще проще и чище
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  f: file of Integer;
  x, t: integer;
  i: Longword;
begin
  Assign(f, 'file.dat');
  Reset(f);
  for i := 0 to (FileSize(f) - 1) div 2 do
    begin
      Read(f, t, x);
      Write(x:10);
    end;
  ReadLn;
end.
0
Puporev
Модератор
54220 / 41853 / 28923
Регистрация: 18.05.2008
Сообщений: 98,533
20.01.2018, 11:44 #8
Нужно вывести
Цитата Сообщение от Kesha777 Посмотреть сообщение
числа с номерами 1,3,5,7,2*n+1
т.е. a[0],a[2],a[4].....
0
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
20.01.2018, 15:09  [ТС] #9
меня впринципе устроил этот вариант. Зачем усложнять?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Program zah1;
Var
F: text;
S: string;
I: integer;
Begin
Write(' Введите имя файла - '); readln(s);
Assign(f,s);
Reset(f);
While not eof(f) do begin read(f,I);
  If I mod 2 > 0 then write(' ', I); 
  End;
Close(f);
Readln
End.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3759 / 2456 / 2035
Регистрация: 22.11.2013
Сообщений: 6,826
20.01.2018, 17:57 #10
Kesha777,
будет смешно, если этот вариант (вывод нечетных чисел) устроит проверяющего (зачача-то о выводе чисел, стоящих на нечетных позициях).

Добавлено через 5 минут
Но да, ее можно переписать без FileSize:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  f: file of Integer;
  x, n: Integer;
begin
  Assign(f, 'file.dat'); Reset(f);
  while not EoF(f) do begin
    Read(f, x); Inc(n);
    if Odd(n) then Write(x:10);
  end;
  ReadLn;
end.
0
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
20.01.2018, 18:18  [ТС] #11
Ребят, а как вы располагаете числа то. Киньте свой тестовый файл .dat. У меня ни одна из ваших программ не работает.
0
Puporev
Модератор
54220 / 41853 / 28923
Регистрация: 18.05.2008
Сообщений: 98,533
20.01.2018, 18:50 #12
Цитата Сообщение от Kesha777 Посмотреть сообщение
Киньте свой тестовый файл .dat
Какой текстовый файл? Вам нужно создать типизированный файл, а потом его читать.
0
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
20.01.2018, 18:53  [ТС] #13
Puporev, Не текстовый а тестовый. Который и нужно создать. МОжет я не так создаю, что у меня не работает ничего.

Добавлено через 48 секунд
file.dat
что в нем должно быть записано что бы работало?
0
Puporev
Модератор
54220 / 41853 / 28923
Регистрация: 18.05.2008
Сообщений: 98,533
20.01.2018, 18:55 #14
Цитата Сообщение от Kesha777 Посмотреть сообщение
МОжет я не так создаю,
Ну так найдите тему про типизированные файлы и посмотрите как их создают. Напишите в начале программы создание файла, а потом уже его чтение.
0
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
20.01.2018, 19:10  [ТС] #15
Puporev, я имею ввиду руками создать как. В блокноте например и как расположить числа? в строчку через пробел, через запятую, или каждое число с новой строки или как?
0
Puporev
Модератор
54220 / 41853 / 28923
Регистрация: 18.05.2008
Сообщений: 98,533
20.01.2018, 19:11 #16
Типизированный файл можно создать только программно.
0
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
20.01.2018, 19:19  [ТС] #17
Puporev, ну помогите тогда, напишите как, пожалуйста. Именно к моей задаче.
0
Puporev
Модератор
54220 / 41853 / 28923
Регистрация: 18.05.2008
Сообщений: 98,533
20.01.2018, 19:26 #18
Лучший ответ Сообщение было отмечено Kesha777 как решение

Решение

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
var f:file of integer;
    x,i:integer;
begin
  assign(f, 'file.dat');
  rewrite(f);
  for i:=1 to 20 do
   begin
    x:=10+random(90);
    write(f,x);
   end;
  writeln('Исходный файл');
  reset(f);
  while not eof(f) do
   begin
    read(f,x);
    write(x:3);
   end;
  writeln;
  writeln('Элементы с нечетными номерами');
  reset(f);
  i:=0;
  while i<filesize(f) do
   begin
    seek(f,i);
    read(f,x);
    write(x:3);
    i:=i+2;
   end;
  close(f);
  end.
1
Cyborg Drone
Модератор
5273 / 3141 / 2440
Регистрация: 17.08.2012
Сообщений: 10,115
20.01.2018, 22:33 #19
Kesha777, типизированный файл в блокноте создать вряд ли удастся, поскольку в данном случае в файле хранится двоичное представление чисел, а не их представление в виде текста. Вот так можно создать:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  f: file of integer;
  x: integer;
  i, n: longword;
 
begin
  assign(f, 'file.dat');
  rewrite(f);
  write('n = ');
  readln(n);
  for i := 1 to n do
    begin
      write(i, ': ');
      readln(x);
      write(f, x)
    end;
  close(f)
end.
0
Kesha777
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 98
20.01.2018, 22:34  [ТС] #20
Cyborg Drone, спасибо. Забрал вариант Puporev с рандомом.
0
20.01.2018, 22:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2018, 22:34

Создать типизированный файл, который содержит несколько вещественных чисел, после чего вывести эти вещественные числа из типизированного файла на эк
Создать типизированный файл, который содержит несколько вещественных чисел,...

В одномерном массиве, состоящем из n целых чисел, заменить элементы с четными номерами нулем, а элементы с нечетными номерами - 1.
В одномерном массиве, состоящем из n целых чисел, заменить элементы с четными...

Компоненты типизированного файла – целые числа.
Компоненты типизированного файла – целые числа. Создать новый файл, в который...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru