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


Ответ
 
Опции темы Опции просмотра
Старый 13.03.2015, 19:58   #1 (permalink)
Over77over
Member
 
Регистрация: 13.03.2015
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile Перевести числа из текста, записанные в 6-ной системе счисления, в 10-ную

Помогите пожалуйста решить задачу:
Выделить из текста целые числа, записанные в 6-ной системе счисления (считать, что они положительны и в тексте встречаются в виде отдельных "слов") и перевести их в 10-ную систему счисления.

character str*20,st*20,sl*15
integer ns,ks,i,dl,ch
logical p
write (*,*) 'Vvedite stroku'
read(*,'(A20)')str
st=adjustl(str)
L=len_trim(st)
ns=1
ks=index(st,' ')
do while (ks<=L+1)
sl=st(ns:ks)
dl=ks-ns
p=.true.
do i=1,dl,1
if (sl(i:i)<'0'.or.sl(i:i)>'5') then
p=.false.
write(*,*) 'Slovo ne yavlyatesa chislom'
end if
end do

!perevod iz 6-noi systemi v 10-nyu systemy
if (p) then
write (*,*) 'Slovo yavlyaetsa chislom'
read(sl,'(I10)')ch
end if
ns=ks+1
ks=ks+index(st(ks+1:),' ')
write(*,16)st(ns:ks)
16 format (1x,A)
pause
end do
end
Over77over вне форума   Ответить с цитированием

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

По содержанию ваш топик аналогичен данным темам

В двоичном представлении числа инвертировать две последние цифры числа
Перевести следующие числа из десятичной системы счисления в двоичную
Перевести следующие числа из десятичной системы счисления в двоичную
Системы счисления
Не могу просмотреть фильмы записанные на компьютер

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

А что это за ЯП? Извините, что-то не могу сообразить. Фортран?
Vladimir_S вне форума   Ответить с цитированием
Старый 13.03.2015, 22:53   #3 (permalink)
Over77over
Member
 
Регистрация: 13.03.2015
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
А что это за ЯП? Извините, что-то не могу сообразить. Фортран?
Да это фортран.
Over77over вне форума   Ответить с цитированием
Старый 13.03.2015, 23:04   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Over77over Посмотреть сообщение
Да это фортран.
В таком случае - сожалею, но могу лишь дать ссылку на собственный пост: Потсфиксная форма логического выражения в Fortran.
Другой язык не устроит? Паскаль, например?
Vladimir_S вне форума   Ответить с цитированием
Старый 13.03.2015, 23:18   #5 (permalink)
Over77over
Member
 
Регистрация: 13.03.2015
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Хотелось бы на фортране конечно же. Но пожалуй сойдет, попробую по аналогии перевести на фортран
Over77over вне форума   Ответить с цитированием
Ads

Яндекс

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

Цитата:
Сообщение от Over77over Посмотреть сообщение
Но пожалуй сойдет, попробую по аналогии перевести на фортран
Не знаю, сколь Вам это поможет, но вот программа на Паскале:
Код:
Var
 S,W:String;
 i,R,Code:Integer;

Function Six2Ten(N:Integer):Integer;
Var
 M,Q,p:Integer;
begin
 Q:=N;
 p:=1;
 M:=Q mod 10;
 Repeat
  Q:=Q div 10;
  if Q>0 then
   begin
    p:=p*6;
    M:=M+(Q mod 10)*p;
   end;
 Until Q=0;
 Six2Ten:=M;
end;

Begin
 Writeln('Enter the string:');
 ReadLn(S);
 i:=0;
 Repeat
  i:=i+1;
  if i<=Length(S) then
   begin
    if (i=1) or ((i>1) and (S[i-1]=' ') and
       ((Ord(S[i])>47) and (Ord(S[i])<54))) then
     begin
      W:='';
      repeat
       W:=W+S[i];
       i:=i+1;
      until (i>Length(S)) or (Ord(S[i])<48) or (Ord(S[i])>53);
      if (i>Length(S)) or (S[i]=' ') then
       begin
        Val(W,R,Code);
        Writeln;
        Write('Six_based: ',R,'   Ten_based: ',Six2Ten(R));
       end;
     end;
   end;
 Until i>=Length(S);
 Readln
End.
На всякий случай:
Val(S,N,Code) - преобразует строку в число. Code - просто флажок корректности операции.
Ord(C) - возвращает код символа C.
div - целочисленное деление.
mod - остаток от деления.
Миниатюры
aa01.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 14.03.2015, 13:42   #7 (permalink)
Over77over
Member
 
Регистрация: 13.03.2015
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо. На фортране пишет при любом раскладе "слово не является числом" не знаете с чем это может быть связано?
Over77over вне форума   Ответить с цитированием
Старый 14.03.2015, 14:36   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Over77over Посмотреть сообщение
На фортране пишет при любом раскладе "слово не является числом" не знаете с чем это может быть связано?
Знаете... перефразируя слова д'Артаньяна (он, правда, говорил о латыни), "я успел позабыть ту малость Фортрана, которой, впрочем, никогда и не знал". Так что извините.
P.S. Как видите, моя программа справляется "на ура". Попробуйте в ней разобраться.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.03.2015, 16:13   #9 (permalink)
mike_
VIP user
 
Аватар для mike_
 
Регистрация: 15.01.2014
Сообщений: 1,828
Сказал(а) спасибо: 242
Поблагодарили 15 раз(а) в 11 сообщениях
Репутация: 26010
По умолчанию

Цитата:
Сообщение от Over77over Посмотреть сообщение
"слово не является числом"
Цитата:
Сообщение от mike
"я успел позабыть ту малость Фортрана, которой, впрочем, никогда и не знал"
Наверное ето связано с тем, что нужно перевести с String в Integer, например в Java:
String s="44";
Int ss=Integer.parseInt(s);
mike_ вне форума   Ответить с цитированием
Старый 15.03.2015, 14:01   #10 (permalink)
Over77over
Member
 
Регистрация: 13.03.2015
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от mike_ Посмотреть сообщение
Наверное ето связано с тем, что нужно перевести с String в Integer, например в Java:
String s="44";
Int ss=Integer.parseInt(s);
read(sl,'(I10)')ch
Переводит слова строки в числа

Проблема вообщем то в том, что я обозначаю p=.true. (т.е. в строке есть слова-являющиеся цифрами). По идее при вводе строки, состоящей из слов и чисел - на экране появится результат: "слово является числом". Но такого не происходит. Какого бы вида строку я не вводил - пишет, что "слово не является числом" (т.е. p=.false.). Естественно, если слово не является числом, соответственно переводить в систему счисления будет нечего.
Over77over вне форума   Ответить с цитированием
Ads

Яндекс

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

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

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

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




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

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