Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2013, 22:21   #1
alexey961
Новичок
Джуниор
 
Регистрация: 08.10.2013
Сообщений: 1
По умолчанию ввод строки в СС16 и перевод в СС10 и вывод введеной строки после перевода с СС10

Знаковый перевод строки из 16-тиричной СС в десятичную и обратно в строку, у мну так получилось, но с byte там проблемы, "ожидалаось 10 элементов" такая ошибка, проверял на паксаль авс, на турбо не проверял

Код:
var Chislo,Value,ost: integer;
    Ch:char;
    Znak:(Minus,Plus); {вместо смайлика тут двоеточие стоит}
    Stroka:string[16];
    const AllDigit:array['0'..'9','A'..'F','a'..'f']{}
    of byte=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);{}
begin
  write('vedi stroky:');
{  Stroka:='';}
  Read(Ch);
  Znak:=Plus;
  if Ch='-'then
     Znak:=Minus;
  if Ch in ['+','-'] then
    Read (Ch);
  Chislo :=0;
  while Ch in ['0'..'9','A'..'F','a'..'f']{=AllDigit} do begin {}
    Value := AllDigit[Ch];
    Chislo:=Chislo*16+Value;
    Read(Ch);
  end;
  if Znak=Minus then
  begin
  Chislo:=-Chislo;end;
  writeln('chislo:=',Chislo);
   
   repeat
    ost:=Chislo mod 16;
    Chislo:=Chislo div 16;
    Ch:=Chr(ord('0')-ost);
    Stroka:=Ch+Stroka;
  until
    Chislo=0;
    begin
     { Chislo -> Srtoku }
  repeat
    ost:=Chislo mod 16;
    Chislo:=Chislo div 16;
    Ch:=Chr(ord('0')+ost);
    Stroka:=Ch+Stroka;
  until
    Chislo=0;
    end;
    if Znak=Minus then
    Stroka:='-'+Stroka;
  Readln;
  Writeln('veli stroky:',Stroka);
  Readln;
end.

Последний раз редактировалось Stilet; 08.10.2013 в 22:49.
alexey961 вне форума Ответить с цитированием
Старый 09.10.2013, 10:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
   const AllDigit:array['0'..'9','A'..'F','a'..'f']{}
    of byte=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);{}
такая запись недопустима.
Во-первых, вы пытаетесь описать 22 элемента, а задаёте только 16, но главное не это. главное, что когда Вы пишете array[1..2,1..10] то это создание ДВУХМЕРНОГО массива 2x10. А Вы вообще ТРЁХмерный описываете массив!

в качестве варианта решения предлагаю выкинуть ваш массив AllDigit
и цикл записать так:
Код:
  Chislo :=0;
  while Ch in ['0'..'9','A'..'F','a'..'f'] do begin
    case Ch of
     '0'..'9': Value := ord(ch)-ord('0');
     'A'..'F': Value := ord(ch)-ord('A')+10;
     'a'..'f': Value := ord(ch)-ord('a')+10;
    end;
    Chislo:=Chislo*16+Value;
    Read(Ch);
  end;
p.s. остальную логику программы я не трогал, хотя мне и не понравилось, как Вы в цикле читаете знак и как читаете само шестнадцатеричное число. Раз Вы так написали, значит, Вы так понимаете и/или Вам так нужно.
Успехов!

Последний раз редактировалось Serge_Bliznykov; 09.10.2013 в 10:08.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод и вывод строки в ASM 8086 eugrita Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 13.05.2013 10:48
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Ввод строки и числа, вывод усеченной подстроки - как? olgasssssss Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 08.12.2010 17:28
Вывод символа перевода строки из МЕМО в текст. файл (Delphi) ChEaTeR-abc Помощь студентам 5 02.07.2010 20:43
Файловый Ввод-вывод и строки coll3ctor Общие вопросы C/C++ 17 02.05.2010 11:02