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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2013, 13:03   #1
Екатерина 123
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 33
По умолчанию расчетно-графическая работа "перевод числа из разных систем счисления в десятичную" (Pascal, среда разработки lazarus)

Помогите пожалуйста доработать исходный код программы перевода чисел из разных систем счисления в десятичную и составить блок-схему.Среда разработки lazarus.
Заранее благодарю за помощь.

Код:
program project1;
uses
  cthreads, Classes, math;
var
  s: string; i,b,a: integer;
  d,k: double; f,e: boolean; c: char;
begin
Writeln('*****************************************************************');
Writeln('********eta programma perevodit chisla iz raznih sistem v 10-ichnuu********');
Writeln('*****************************************************************');
Writeln(' ');
Writeln('*********************************');
Writeln('*** vvedite osnovanie sistemi ***');
Writeln('*********************************');
ReadLn(b);
e:=b<=1;
if e then begin
         Writeln('************************************************');
         WriteLn('oshibka: osnovanie sistemi doljno bit ne menee 2');
         Writeln('************************************************')
         end
else begin
       Writeln('*********************************************');
       Writeln('vvedite chislo v sisteme s osnovaniem ',b,': ');
       Writeln('*********************************************');
       ReadLn(s);
       f:=false; k:=1;
       for i:=1 to Length(s) do begin
                                              if f then k:=k/b;
                                              c:=UpCase(s[i]);
                                              a:=-1;
                                                       case c of
                                                       '0'..'9': a:=Ord(c)-48;
                                                       'A'..'Z': a:=Ord(c)-55;
                                                       '.',',': if f then e:=true else f:=true;
                                                       else f:=true
                                                       end;
e:=e or (a>=b);
if e then break;
if a>=0 then d:=d*b+a; end;
if e then WriteLn('oshibka v zapisi chisla ')
else Writeln('*******************************************');
     WriteLn('znachenie v desiatichnoi sisteme: ');
     WriteLn(d*k:6:2);
     Writeln('*******************************************'); 
     end;
ReadLn; 
end.
Екатерина 123 вне форума Ответить с цитированием
Старый 15.05.2013, 14:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://delphiworld.narod.ru/base/base_convert.html
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.05.2013, 08:07   #3
Екатерина 123
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 33
По умолчанию

Спасибо, но мне не очень понятна та программа, которую вы скинули, я только начинаю программировать и мне бы хотелось найти ошибки в моем коде. А вы можете помочь мою программу доработать, она при тестировании в некоторых местах косячит, и блок-схему к ней нарисовать?
Екатерина 123 вне форума Ответить с цитированием
Старый 20.05.2013, 13:18   #4
Екатерина 123
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 33
По умолчанию

Очень прошу помощи в моей работе!!!!Для меня это невероятно важно!!!
Екатерина 123 вне форума Ответить с цитированием
Старый 20.05.2013, 17:21   #5
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
А вы можете помочь мою программу доработать, она при тестировании в некоторых местах косячит
А какие это косяки и при каких исходных данных они появляются конечно же мы сами должны понять.
Бегло протестировал Вашу программу на переводе из 2-ой, 8-ой и 16-ой СС. Считает правильно и сама программа не падает.
Единственное, что заметил это процесс проверки на ошибку можно чуть проще сделать
Код:
 e:=e or (a>=b);
       if e then
       Begin
         WriteLn('oshibka v zapisi chisla ');
         Readln;
         Exit;
       End;
       if a>=0 then d:=d*b+a;
    end;
      Writeln('*******************************************');
      WriteLn('znachenie v desiatichnoi sisteme: ');
      WriteLn(d*k:6:2);
      Writeln('*******************************************');
   end;
   ReadLn;
Если Lazarus понимает функцию Exit.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 22.05.2013, 05:25   #6
Екатерина 123
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 33
По умолчанию

спасибо!!большое!!
Екатерина 123 вне форума Ответить с цитированием
Старый 22.05.2013, 08:15   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если Lazarus понимает функцию Exit.
Куда он денется )

Катюша, пожалуйста не делай кросспосты. Насчет блок схемы:http://yandex.ua/yandsearch?text=FCE...oc=10&lr=20554
Говорят хорошая программа.
I'm learning to live...

Последний раз редактировалось Stilet; 22.05.2013 в 08:19.
Stilet вне форума Ответить с цитированием
Старый 22.05.2013, 15:05   #8
Екатерина 123
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 33
По умолчанию

спасибо огромное!!!!))))))

я не могу разобраться,там все по английски понять не могу((

[QUOTE=Говорят хорошая программа.[/QUOTE]
Спасибо, только осталась одна проблема нерешенная в этой программе, помогите пожалуйста сделать так, чтоб эта программа еще и отрицательные числа переводила!!! заранее оооочень-очень благодарна

Последний раз редактировалось Stilet; 23.05.2013 в 21:16.
Екатерина 123 вне форума Ответить с цитированием
Старый 23.05.2013, 21:14   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Екатерина 123 Посмотреть сообщение
Спасибо, только осталась одна проблема нерешенная в этой программе, помогите пожалуйста сделать так, чтоб эта программа еще и отрицательные числа переводила!!! заранее оооочень-очень благодарна
Самое простое:
1. Сначала проверить, есть ли перед числом минус. Если есть, запомнить этот факт и удалить минус.
2. Перевести как обычное положительное число.
3. Вспомнить, был ли минус. Если был - добавить его перед числом.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2013, 09:15   #10
Екатерина 123
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 33
По умолчанию

спасибо большое))))
Екатерина 123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод числа из четверичной системы счисления в десятичную. Асичка Помощь студентам 2 30.01.2013 11:23
Перевод числа из восьмеричной системы счисления в десятичную.С++ Алексей008 Помощь студентам 0 13.12.2012 15:13
перевод числа из шестнадцатеричной системы счисления в десятичную Едік Паскаль, Turbo Pascal, PascalABC.NET 10 27.12.2011 16:21
Pascal ABC. Перевод из двоичной в десятичную систему счисления. ARTEM_KA Помощь студентам 4 17.11.2010 22:15
перевод из разных систем счисления mego4el Помощь студентам 0 29.10.2010 21:20