Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Перевести числа из текста, записанные в 6-ной системе счисления, в 10-ную (http://www.tehnari.ru/f41/t101544/)

Over77over 13.03.2015 19:58

Перевести числа из текста, записанные в 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

Vladimir_S 13.03.2015 20:07

А что это за ЯП? Извините, что-то не могу сообразить. Фортран?

Over77over 13.03.2015 22:53

Цитата:

Сообщение от Vladimir_S (Сообщение 1112569)
А что это за ЯП? Извините, что-то не могу сообразить. Фортран?

Да это фортран.

Vladimir_S 13.03.2015 23:04

Цитата:

Сообщение от Over77over (Сообщение 1112613)
Да это фортран.

В таком случае - сожалею, но могу лишь дать ссылку на собственный пост: http://www.tehnari.ru/f41/t100183/#post1089539.
Другой язык не устроит? Паскаль, например?

Over77over 13.03.2015 23:18

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

Vladimir_S 14.03.2015 09:35

Вложений: 1
Цитата:

Сообщение от Over77over (Сообщение 1112620)
Но пожалуй сойдет, попробую по аналогии перевести на фортран

Не знаю, сколь Вам это поможет, но вот программа на Паскале:
Код:

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 - остаток от деления.

Over77over 14.03.2015 13:42

Спасибо. На фортране пишет при любом раскладе "слово не является числом" не знаете с чем это может быть связано?

Vladimir_S 14.03.2015 14:36

Цитата:

Сообщение от Over77over (Сообщение 1112729)
На фортране пишет при любом раскладе "слово не является числом" не знаете с чем это может быть связано?

Знаете... перефразируя слова д'Артаньяна (он, правда, говорил о латыни), "я успел позабыть ту малость Фортрана, которой, впрочем, никогда и не знал". Так что извините.
P.S. Как видите, моя программа справляется "на ура". Попробуйте в ней разобраться.

mike_ 14.03.2015 16:13

Цитата:

Сообщение от Over77over (Сообщение 1112729)
"слово не является числом"

Цитата:

Сообщение от mike
"я успел позабыть ту малость Фортрана, которой, впрочем, никогда и не знал"

Наверное ето связано с тем, что нужно перевести с String в Integer, например в Java:
String s="44";
Int ss=Integer.parseInt(s);

Over77over 15.03.2015 14:01

Цитата:

Сообщение от mike_ (Сообщение 1112761)
Наверное ето связано с тем, что нужно перевести с String в Integer, например в Java:
String s="44";
Int ss=Integer.parseInt(s);

read(sl,'(I10)')ch
Переводит слова строки в числа

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


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.