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


Ответ
 
Опции темы Опции просмотра
Старый 25.11.2014, 15:22   #1 (permalink)
letka
Новичок
 
Регистрация: 22.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программа на Паскале

В файле numbers.dat записаны два числа: одно в восьмеричной системе, а другое — в шестнадцатеричной. Причем в первой строке файла расположено число 1<=N<=1000 — количество восьмеричных цифр в первом числе, во второй строке — само восьмеричное число, в третьей строке записано число M — количество шестнадцатеричных цифр во втором числе, в четвертой строке — само шестнадцатеричное число (данные корректны). Цифры, большие 9, при этом обозначаются заглавными латинскими буквами A, B, C и т.д. Требуется написать программу, которая будет сравнивать данные числа между собой и выводить на экран знак <, > или =, в зависимости от результата сравнения.
Например, если входной файл был таким:
2
13
1
C
то результат должен быть следующим:
<
letka вне форума   Ответить с цитированием

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

Советую вам сразу обратить внимание на похожие обсуждения

Программа на Паскале
Программа в Паскале
Программа на Паскале

Старый 25.11.2014, 20:14   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А 1000-зачное число - не жирно будет? Откровенно говоря, даже не знаю, как с такими строками управиться в Паскале. Но если устроят максимально 255-значные числа, то, например, так:
Код:
Var
 S8,S16:String;
 N8,N16:Byte;
 R8,R16:Real;
 f:Text;

Function N8to10(L:Byte; S:String):Real;
var
 k:Byte;
 N10,p,r:Real;
begin
 k:=0;
 p:=1;
 N10:=0;
 Repeat
  Case S[L-k] of
   '0': r:=0;
   '1': r:=1;
   '2': r:=2;
   '3': r:=3;
   '4': r:=4;
   '5': r:=5;
   '6': r:=6;
   '7': r:=7;
  end;
  N10:=N10+r*p;
  Inc(k);
  p:=p*8;
 Until k=L;
 N8to10:=N10;
end;

Function N16to10(L:Byte; S:String):Real;
var
 k:Byte;
 N16,p,r:Real;
begin
 k:=0;
 p:=1;
 N16:=0;
 Repeat
  Case S[L-k] of
   '0': r:= 0;
   '1': r:= 1;
   '2': r:= 2;
   '3': r:= 3;
   '4': r:= 4;
   '5': r:= 5;
   '6': r:= 6;
   '7': r:= 7;
   '8': r:= 8;
   '9': r:= 9;
   'A': r:=10;
   'B': r:=11;
   'C': r:=12;
   'D': r:=13;
   'E': r:=14;
   'F': r:=15;
  end;
  N16:=N16+r*p;
  Inc(k);
  p:=p*16;
 Until k=L;
 N16to10:=N16;
end;

Begin
 Assign(f,'numbers.dat');
 Reset(f);
 Readln(f,N8);
 Readln(f,S8);
 Readln(f,N16);
 Readln(f,S16);
 Close(f);
 R8:=N8to10(N8,S8);
 R16:=N16to10(N16,S16);
 if R8>R16 then writeln('>') else
 if R8<R16 then writeln('<') else
 writeln('=');
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.11.2014, 15:09   #3 (permalink)
letka
Новичок
 
Регистрация: 22.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Пишет Встречено 'Var', а ожидалось procedure
letka вне форума   Ответить с цитированием
Старый 26.11.2014, 16:09   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от letka Посмотреть сообщение
Пишет Встречено 'Var', а ожидалось procedure
Та-ак. АВС, конечно? Тогда добавьте первую строку
Program TTTT;
(имя, конечно, поставьте своё, какое нравится). В нормальном Паскале это не требуется.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.11.2014, 17:07   #5 (permalink)
letka
Новичок
 
Регистрация: 22.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

набираю в нормальном- пишет файл не найден напротив Reset(f);
Не может найти путь?
letka вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 26.11.2014, 19:45   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от letka Посмотреть сообщение
набираю в нормальном- пишет файл не найден напротив Reset(f);
Не может найти путь?
А Вы файл-то создали? Это нужно сделать заранее. И желательно прописать к нему полный путь в команде Assign.
Vladimir_S вне форума   Ответить с цитированием
Старый 27.11.2014, 18:05   #7 (permalink)
letka
Новичок
 
Регистрация: 22.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

БООльшое спасибо! Вы меня спасли)
letka вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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