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

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

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

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

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

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

letka

Ученик
Регистрация
22 Ноя 2014
Сообщения
5
Реакции
0
Баллы
0
Программа на Паскале

В файле numbers.dat записаны два числа: одно в восьмеричной системе, а другое — в шестнадцатеричной. Причем в первой строке файла расположено число 1<=N<=1000 — количество восьмеричных цифр в первом числе, во второй строке — само восьмеричное число, в третьей строке записано число M — количество шестнадцатеричных цифр во втором числе, в четвертой строке — само шестнадцатеричное число (данные корректны). Цифры, большие 9, при этом обозначаются заглавными латинскими буквами A, B, C и т.д. Требуется написать программу, которая будет сравнивать данные числа между собой и выводить на экран знак <, > или =, в зависимости от результата сравнения.
Например, если входной файл был таким:
2
13
1
C
то результат должен быть следующим:
<
 
А 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.
 
Пишет Встречено 'Var', а ожидалось procedure
 
Пишет Встречено 'Var', а ожидалось procedure
Та-ак. АВС, конечно? Тогда добавьте первую строку
Program TTTT;
(имя, конечно, поставьте своё, какое нравится). В нормальном Паскале это не требуется.
 
набираю в нормальном- пишет файл не найден напротив Reset(f);
Не может найти путь?
 
набираю в нормальном- пишет файл не найден напротив Reset(f);
Не может найти путь?
А Вы файл-то создали? Это нужно сделать заранее. И желательно прописать к нему полный путь в команде Assign.
 
БООльшое спасибо! Вы меня спасли)tehnobanka
 
Назад
Сверху