Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 01.11.2011, 11:41   #1 (permalink)
Kristi
Новичок
 
Регистрация: 01.11.2011
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Файл, файловый тип, Turbo Pascal

Помогите, пожалуйста, с программами... Я так понимаю, что надо сделать, а как это записать не соображу(((
1 программа
Создайте типизированный файл из 10 Записей. В полях записи отдельно хранятся целая и дробная часть вещественного числа. Целая часть двухзначная, дробная-трехзначная. Значение целой и дробной частей числа выработать Random.
2 программа
Вывести из файла на экран в форме таблицы целые и дробные части чисел. Объединить в единое целое соответствующие целые и дробные части. Выведите вещественные числа в одну строку. Отдельной строкой выведите на экран, вещественные числа кратные 3.
Kristi вне форума   Ответить с цитированием

Старый 01.11.2011, 11:41
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

В данных темах наверняка есть ответы которые прояснят ситуацию

Turbo Pascal 8, дано натуральное число n
Cтек, Turbo Pascal
Turbo Pascal. Оператор CASE
Синтаксический анализатор. Turbo Pascal
Помогите решить задачи в Turbo Pascal

Старый 02.11.2011, 23:30   #2 (permalink)
Kristi
Новичок
 
Регистрация: 01.11.2011
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Это первая программа. Исправьте, пожалуйста
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[I]:=Random(10000);
End;
Close(FP1);
End.
Kristi вне форума   Ответить с цитированием
Старый 03.11.2011, 11:26   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Kristi Посмотреть сообщение
Это первая программа. Исправьте, пожалуйста
Хорошо, приступаю. Сразу скажу - ошибка на ошибке! И начну с формулировки условия задачи:
Цитата:
Сообщение от Kristi Посмотреть сообщение
Отдельной строкой выведите на экран, вещественные числа кратные 3.
Видите ли, вещественное число не может быть кратно чему бы то ни было, это - свойство исключительно целых чисел. Значит, в условии - брёх.
Поехали дальше.
Цитата:
Сообщение от Kristi Посмотреть сообщение
Type Chislo=Record
Cch: String[2];
Dch:=String[3];
End;
Во-первых, строковый тип здесь абсолютно ни к чему, нужен числовой целый, во-вторых, в строке, где Dch, знак присваивания недопустим, нужно двоеточие.
Цитата:
Сообщение от Kristi Посмотреть сообщение
I,J,K:Real;
Переменные циклов могут быть только целочисленного формата, а у Вас - вещественный.
Цитата:
Сообщение от Kristi Посмотреть сообщение
Assign (FP1,'C:/Landguage/TP/GAN.010');
Судя по "C:" у Вас OC Windows, а не Linux, а в таком случае в путях применяются слэши типа "\". Кроме того, странное название папки - "Landguage". Конечно, папку можно обозвать, как угодно, но может быть всё-таки "Language" - язык (англ.)?
Цитата:
Сообщение от Kristi Посмотреть сообщение
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[I]:=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.
Vladimir_S вне форума   Ответить с цитированием
Старый 03.11.2011, 11:41   #4 (permalink)
Kristi
Новичок
 
Регистрация: 01.11.2011
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое!!! Условие преподаватель давал, так что на счет него ничего не могу сказать...
Kristi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:45.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.