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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 09:54   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

LiptonICE,

1) ВНИМАТЕЛЬНО прочитайте задание. не может быть там так написано! Это же не по русски! Или пропущен глагол (например, "составить программу для сложения n-разрядных чисел" или вообще фраза по другому построена.
2) язык, судя по приведённому коду, у Вас Pascal
3) делайте на основе кода из #6 рабочую программу (там алгоритм примерный набросан, только с ошибками!)
DoDge_VipeR прав. Вам нужна длинная арифметика на основе строк.
Можете поискать (тут на форуме были примеры реализации).
А можете и сами написать.. если делать только сложение (и вычитание) - то это совсем несложно!
столбиком складывать умеете? вот, представьте, есть две строчки n1 := '12345' и n2 := '28889999'
надо их выровнять по правому краю (начинать сложение справа налево) и складывать по элементно, учитывая возникающий перенос. результаты записывать в третью строку.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2010, 10:00   #12
LiptonICE
Пользователь
 
Регистрация: 05.05.2010
Сообщений: 34
По умолчанию

Спасибо, Вы правы наверно пропущен глагол...
LiptonICE вне форума Ответить с цитированием
Старый 05.05.2010, 10:24   #13
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Полагаю он имеет в виду написать программу-калькулятор, которая будет производить простейшие арифметические вычисления, как то: сложить, вычесть, умножить с n-мерными числами ( в том числе очень большой разрядности). Причем числа представляются в виде строк.

Приведенный им пример, делает как раз это, хотя он и некорректен по синтаксису :

var n,n1,n2:string;
i,t1,t2,d:byte;
begin
n:=0;
d:=0;
k:=lenght[n1];

for i:=k downto 1 do // перебираем число-строку справа-налево
t1:=val(n1[i], code1); // превращаем очередной символ в цифру
t2:=val(n2[i], code2); // превращаем очередной символ в цифру
t:=d+t1+t2; // Операция сложения. Складываем вышеполученные цифры и прибавляем к ранее полученному остатку
d:=t mod 10
p:=t div 10 // Остаток
n3:=str(p); // назад цифру в символ
n:=n+n3 // конкатенация
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 05.05.2010, 11:48   #14
LiptonICE
Пользователь
 
Регистрация: 05.05.2010
Сообщений: 34
По умолчанию

А что с синтаксисом?

Парни а как конец ввывести?

Код:
Program lab;
var 
n,n1,n2:string;
i,t1,t2,d:byte;
n3:string[1];
code1,code2:integer;
begin
Writeln('Input n1');
Readln(n1);
Writeln('Input n2');
Readln(n2);
d:=0;
n:=' ';
k:=lenght[n1];
for i:=k downto 1 do 
{perebiraem chislo-stroki spravo-nalevo}
Val(n1[i],t1 code1);
Val(n2[i],t2 code2);
{prevrachaem simvol cifru}
t:=ed+t1+t2;
ed:=t mod 10
p:=t div 10
{operaciya slogeniya chisla s ostatkom}
str(ed,n3);
n:=n+n3;
end;
writeln(n);
readln;
end.
Cкажите, плиз ошибку.... синтаксически прога оформелена норм, а вот не так щитает она.

Последний раз редактировалось Stilet; 06.05.2010 в 09:07.
LiptonICE вне форума Ответить с цитированием
Старый 05.05.2010, 22:15   #15
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

...............................
Skype: CODERua

Последний раз редактировалось [CODER]; 05.05.2010 в 22:18.
[CODER] вне форума Ответить с цитированием
Старый 06.05.2010, 01:12   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Cкажите, плиз ошибку.... синтаксически прога оформелена норм, а вот не так щитает она.
кто Вам сказал это?! Вас нагло обманули...

ладно. разбирайтесь!
Код:
program lab;
var
  n, n1, n2: string;
  i, t, p, t1, t2, d: byte;
  n3: string[1];
  code1, code2: integer;
begin
  Writeln('Input n1');
  Readln(n1);
  Writeln('Input n2');
  Readln(n2);
  if length(n1)<>length(n2) then begin
    Writeln('Извините. Но пока ещё программист '+
            'не сделал сложение чисел разной длины.');
    readln;
    Halt(1);
  end;
  d := 0;
  n := '';
  for i := length(n1) downto 1 do begin
    {perebiraem chislo-stroki spravo-nalevo}
    Val(n1[i], t1, code1);
    Val(n2[i], t2, code2);
    {prevrachaem simvol cifru}
    t := p + t1 + t2;
    d := t mod 10;
    p := t div 10;
    {operaciya slogeniya chisla s ostatkom}
    str(d, n3);
    n := n3 + n;
  end;
  if p<>0 then begin
    str(p, n3);
    n := n3 + n;
  end;
  Writeln('Результат = ',n);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.05.2010, 08:19   #17
LiptonICE
Пользователь
 
Регистрация: 05.05.2010
Сообщений: 34
По умолчанию

if p<>0 then begin это условие неясно, и что это? Halt(1);
LiptonICE вне форума Ответить с цитированием
Старый 06.05.2010, 09:08   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от LiptonICE Посмотреть сообщение
if p<>0 then begin это условие неясно
когда мы закончили цикл суммирования, у нас может остаться перенос, вот это и учитывается!
ну к примеру для 97 + 21 цикл выполнится два раза
получим строку n: 18 (а единичка уйдёт в перенос)
потом if p<>0 then .... и n станет 118

Цитата:
Сообщение от LiptonICE Посмотреть сообщение
и что это? Halt(1);
безусловное и безогоровочное прерывание работы приложение и выход в операционнку. 1 - это необязательный параметер - формируется код ошибки, с которым приложение завершилось.... Вам это не обязательно знать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.05.2010, 09:08   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Halt(1);
Это команда досрочного выхода из программы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу которая находит индекс числа в массиве случайных чисел MadNikys Помощь студентам 9 03.03.2010 20:52
ассемблер: "Составить программу умножающую каждый элемент массива из 15 чисел на на 5. Naruto63 Помощь студентам 4 19.10.2009 13:37
Сложение двух 64-х разрядных чисел в Ассемблере Fataller Помощь студентам 1 14.10.2009 22:16
Составить программу, определяющую количество чисел, делящихся без остатка на три phoenixSV Паскаль, Turbo Pascal, PascalABC.NET 2 05.12.2008 15:05
умножение 16-разрядных чисел deeeman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.12.2007 13:26