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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2008, 21:14   #1
cuzo
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 11
По умолчанию Интересная задача в Pascal

Реализовать операцию сложения чисел в восьмеричной системе счисления. Перевод чисел в десятичную систему счисления не делать.
cuzo вне форума Ответить с цитированием
Старый 23.12.2008, 21:56   #2
cuzo
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 11
По умолчанию

При этом нельзя использовать массивы. Пользоваться нужно только строками. Может кто помочь?
cuzo вне форума Ответить с цитированием
Старый 25.12.2008, 16:53   #3
cuzo
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 11
По умолчанию

Аууууууууууу есть кто-нибудь живой?
cuzo вне форума Ответить с цитированием
Старый 25.12.2008, 19:16   #4
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

Код:
var
  a,b,sum,str:string;
  i,buff,v_ume:integer;
begin
write('a= ');
readln(a);
write('b= ');
readln(b);

str:='01234567';
v_ume:=0;
for i:=0 to Length(a)-1 do
begin
if v_ume<>0
  then
    begin
      buff:=strtoint(a[Length(a)-i])+StrToInt(b[Length(b)-i])+v_ume;
      v_ume:=0;
    end
  else buff:=strtoint(a[Length(a)-i])+StrToInt(b[Length(b)-i]);
if buff>7
  then
    begin
      v_ume:=v_ume+1;
      sum:=str[buff-7]+sum;
    end
  else sum:=IntToStr(buff)+sum;
end;
if v_ume<>0 then sum:=IntToStr(v_ume)+sum;
write(sum);

readln;
end.
попробуй так...
имеется ограничение.
если в числах разное кол-во символов, дополняй меньшее нулями...т.е. если складываешь 123 и 4, то записывай как 123 и 004.
rocklistener...

Последний раз редактировалось 5naip; 25.12.2008 в 19:18.
5naip вне форума Ответить с цитированием
Старый 28.12.2008, 11:04   #5
cuzo
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 11
По умолчанию

Нужно ли использовать модуль SysUtils?
cuzo вне форума Ответить с цитированием
Старый 28.12.2008, 11:25   #6
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Да надо ... + что б не вводить лишние 0 Можно дописать
Код:
if length(a)<length(b) then
 begin
 sstr:='';
 for i:=1 to length(b)-Length(a) do
  begin
   sstr:=sstr+'0';
  end;
 a:=sstr+a;
 end
else
 begin
   sstr:='';
 for i:=1 to length(a)-Length(b) do
  begin
   sstr:=sstr+'0';
  end;
 b:=sstr+b;
 end;
после ввода чисел =)еще допиши переменную sstr типа string; =)
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 28.12.2008, 12:27   #7
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

я сначала так же сделал
потом запутался в ИФах, потом пошел с досады покурить и решил обойтись нулями
rocklistener...

Последний раз редактировалось 5naip; 28.12.2008 в 12:34.
5naip вне форума Ответить с цитированием
Старый 28.12.2008, 12:32   #8
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

При упоминании, того что НЕЛЬЗЯ пользоваться массивами у меня в памяти что-то щелкнуло...полез в книгу по delphi и вот что нашел:
Цитата:
...каждая стока трактуется как одномерный массив символов...
Так что смело передавай преподу,что без массивов просто никак...
rocklistener...
5naip вне форума Ответить с цитированием
Старый 28.12.2008, 17:49   #9
cuzo
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 11
По умолчанию

Я думаю тут нужно описать функции.

Последний раз редактировалось cuzo; 28.12.2008 в 17:52.
cuzo вне форума Ответить с цитированием
Старый 28.12.2008, 17:50   #10
cuzo
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от cuzo Посмотреть сообщение
Uses crt;
function IntToStr(I: Integer): string;
var
S: string;
begin
Str(I, S);
IntToStr := S;
end;


function StrToInt(S: string): Integer;
var
I, Code: Integer;
begin
Val(S, I, Code);
StrToInt := I;
end;


var
a,b,sum,str:string;
i,j,buff,v_ume:integer;

begin
Repeat


buff:=0;
sum:='';
write('a= ');
readln(a);
write('b= ');
readln(b);

str:='01234567';
v_ume:=0;

if length(a)>length(b) then
for j:=1 to length(a)-length(b) do
b:='0'+b
else
for i:=1 to length(b)-length(a) do
a:='0'+a;
for i:=0 to Length(a)-1 do
begin
if v_ume<>0
then
begin
buff:=strtoint(a[Length(a)-i])+StrToInt(b[Length(b)-i])+v_ume;
v_ume:=0;
end
else buff:=strtoint(a[Length(a)-i])+StrToInt(b[Length(b)-i]);
if buff>7
then
begin
v_ume:=v_ume+1;
sum:=str[buff-7]+sum;
end
else sum:=IntToStr(buff)+sum;
end;
if v_ume<>0 then sum:=IntToStr(v_ume)+sum;
write(sum);

readln;
Until (a='') and(b='');
end.
Вот эта работает без дополнительных масиов. Спасибо.

Последний раз редактировалось cuzo; 28.12.2008 в 17:53.
cuzo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересная задача! - DannerDOS.kz Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2008 14:04
Интересная задача Ser Паскаль, Turbo Pascal, PascalABC.NET 3 27.02.2008 00:19
Интересная задача(MediaPlayer) PilGrim Компоненты Delphi 3 03.12.2007 08:46
интересная задача про DataTimePicker ГОСЕАН БД в Delphi 8 15.07.2007 16:37