• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Файл, файловый тип, Turbo Pascal

  • Автор темы Автор темы Kristi
  • Дата начала Дата начала

Kristi

Ученик
Регистрация
1 Ноя 2011
Сообщения
11
Реакции
0
Баллы
0
Файл, файловый тип, Turbo Pascal

Помогите, пожалуйста, с программами... Я так понимаю, что надо сделать, а как это записать не соображу(((
1 программа
Создайте типизированный файл из 10 Записей. В полях записи отдельно хранятся целая и дробная часть вещественного числа. Целая часть двухзначная, дробная-трехзначная. Значение целой и дробной частей числа выработать Random.
2 программа
Вывести из файла на экран в форме таблицы целые и дробные части чисел. Объединить в единое целое соответствующие целые и дробные части. Выведите вещественные числа в одну строку. Отдельной строкой выведите на экран, вещественные числа кратные 3.
 
Это первая программа. Исправьте, пожалуйста
Program pr;
Type Chislo=Record
Cch: String[2];
Dch:=String[3];
End;
Var FP1:File Of Chislo;
PP1:Chislo;
I,J,K:Real;
Begin
Randomize;
Assign (FP1,'C:/Landguage/TP/GAN.010');
Rewrite(FP1);
For K:=1 To 10 Do Begin
ReadLn(PP1.Cch:=Int(J));
ReadLn(PP1.Dch:=Frac(I));
For J:=1 To 10 Do PP1.Cch[J]:=Random(10000);
For I:=1 To 10 Do PP1.Dch:=Random(10000);
End;
Close(FP1);
End.
 
Это первая программа. Исправьте, пожалуйста
Хорошо, приступаю. Сразу скажу - ошибка на ошибке! И начну с формулировки условия задачи:
Отдельной строкой выведите на экран, вещественные числа кратные 3.
Видите ли, вещественное число не может быть кратно чему бы то ни было, это - свойство исключительно целых чисел. Значит, в условии - брёх.
Поехали дальше.
Type Chislo=Record
Cch: String[2];
Dch:=String[3];
End;
Во-первых, строковый тип здесь абсолютно ни к чему, нужен числовой целый, во-вторых, в строке, где Dch, знак присваивания недопустим, нужно двоеточие.
Переменные циклов могут быть только целочисленного формата, а у Вас - вещественный.
Assign (FP1,'C:/Landguage/TP/GAN.010');
Судя по "C:" у Вас OC Windows, а не Linux, а в таком случае в путях применяются слэши типа "\". Кроме того, странное название папки - "Landguage". Конечно, папку можно обозвать, как угодно, но может быть всё-таки "Language" - язык (англ.)?
For K:=1 To 10 Do Begin
ReadLn(PP1.Cch:=Int(J));
ReadLn(PP1.Dch:=Frac(I));
For J:=1 To 10 Do PP1.Cch[J]:=Random(10000);
For I:=1 To 10 Do PP1.Dch:=Random(10000);
End;
Ну тут - целый букет ошибок. Во-первых, зачем Вам двойные циклы - внешний по K и внутренние по I,J? Полная бессмыслица. Во-вторых, смысл строк, начинающихся с ReadLn вовсе непонятен, не говоря уже о том, что операции присваивания ":=" в теле оператора ReadLn делать абсолютно нечего. Паскаль подобных конструкций не допускает.
В общем, вот отлаженная программа (путь к файлу поправьте на свой вкус):
Код:
Type Chislo=Record
      Cch:Word;
      Dch:Word;
     End;
Var
 FP1:File Of Chislo;
 PP1:Chislo;
 PPR:Real;
 K:Integer;
Begin
 Randomize;
 Assign (FP1,'D:\GAN.010');
 Rewrite(FP1);
 For K:=1 To 10 Do
  Begin
   PP1.Cch:=Random(90)+10;
   PP1.Dch:=Random(900)+100;
   Write(FP1,PP1);
  End;
 Close(FP1);
 Reset(FP1);
 For K:=1 To 10 Do
  Begin
   Read(FP1,PP1);
   PPR:=1.0*PP1.Cch+PP1.Dch/1000;
   Writeln(K:2,PP1.Cch:7, PP1.Dch:8,PPR:12:3);
  End;
 Close(FP1);
 Readln
End.
 
Спасибо большое!!! Условие преподаватель давал, так что на счет него ничего не могу сказать...
 
Назад
Сверху