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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2015, 11:18   #1
Dasha Strogova
Новичок
Джуниор
 
Регистрация: 09.06.2015
Сообщений: 1
Печаль Работа с файлом, системы счисления.

Помогите пожалуйста написать код программы.
Исходный файл содержит числа в восьмеричной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для каждого такого числа из заданного диапазона после знака равенства указывает его значение в десятичной системе счисления, дополнительном коде или его инверсию по выбору пользователя, например:

10000=4096, 23=19 и т.д.

Результат требуется записать в сам исходный файл.

Я тут пробовала сама сделать, не получается.
Код:
Var
 chs: integer;
 f:text;
 s, m, c, rd, rd2: string;
 ch: char;
 i, dig, num, cur: integer;
 Procedure ToDec;
  begin
  assign(f, 'c:\Test.txt');
   Reset(f);
   m:='';
    while not EOF(f) do
     begin
      Read(f, ch);
      c:=ch+m;
      s:=s+c;
     end;
    Close(f);
  num:=0;
   for i:=1 to length(s[i]) do
    begin
     if (s[i]=',') or (s[i]='.') then
      begin
      write(rd, '=', num, ',');
      num:=0;
      end
     else
     begin
     dig:=Ord(s[i])-48;
     num:=num*8+dig;
     rd:=s[i]+m;
     rd2:=rd+m;
     end
    end
   end;
 Begin
  while (true) do
    begin
     writeln('1 - Start');
     writeln('0 - Close');
     readln(chs);
      case (chs) of
       1: ToDec;
       0: Halt;
     end;
   end
 End.

Последний раз редактировалось Stilet; 09.06.2015 в 12:04.
Dasha Strogova вне форума Ответить с цитированием
Старый 09.06.2015, 14:49   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

вроде как-то так, не проверял.
Код:
..................................
while not EOF(f) do
 begin
      Readln(f, st);
      s:=s+st;
 end;
.............
s:=s+','
...........
while pos(',',s)<>0  // цикл пока есть запятые
 begin
       s1:=copy(s,1,(pos(',',s)-1)); // копируем в переменную s1 число
       delete(s,1,pos(',',s));  // удаляем число с запятой
       for i:=1 to length(s1) do // цикл для перевода из 8 в 10-ричную систему
        begin
             val((s1[i]),chislo); // переводим цифру из строки в число
             {переводим из 8 в 10-ричную систему }
             chislo:=chislo*( Exp(length(s1)-i)*Ln(chislo)); 
             chislo1:=chislo1+chislo;
        end; 
       s2:=s2+s1+'='+str(chislo1)+','; //записываем конечную строку
 end;
................
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 09.06.2015 в 14:52.
Dvoishnik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает преобразование кода из одной системы счисления в ID в другой системе счисления Ultran PHP 1 09.11.2013 21:15
Системы счисления kspower C++ Builder 6 22.04.2011 06:25
Системы счисления.10->5-7. Corpinccom Помощь студентам 0 22.09.2010 12:54
Системы счисления alexmikt Фриланс 2 27.02.2010 02:52
Системы счисления glupayastudentka Помощь студентам 3 28.06.2009 21:13