Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 07.05.2015, 16:57   #11
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,106
Репутация: 5675
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
И зачем темы были обьеденены?
Виталий, не ругайтесь. Ничего страшного не случилось!
Полина не нашла свою тему (после переименования) и создала ещё одну.
Поэтому я и слил темы воедино.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 07.05.2015, 16:58   #12
МиссПолина
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Растудытьтвоюжтуды!
Так шож ты не рассказала подробности?

И зачем темы были обьеденены? Тебе нужна реализация вычитания в столбик? Тогда мой код не катит.

Я честно, задачу совсем не поняла, нам препод поставил условия такие, что из этого условия, ну задачи, мы должны вычитать числовые строки из строк, ну я уже писала пример, там от 1234567 вычесть 1234 и получить ответ 1233333, также допустим от меньшего числа большее и получить отрицательное число, в основном все вычитание какие только можно))))
МиссПолина вне форума   Ответить с цитированием
Старый 07.05.2015, 17:01   #13
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,106
Репутация: 5675
По умолчанию

Цитата:
Сообщение от МиссПолина Посмотреть сообщение
Есть варианты, как решить?))))
да. берёте мой код, который Вы успешно копируете в каждой теме.
Вставляете туда выравнивание меньшего по длине числа нулями слева (совет от Аватара) и получаете решение задачи.

правда, надо ещё учесть, какое из двух чисел больше, но это уже вторая часть марлезонского балета. Сперва сделайте выравнивание!
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 07.05.2015, 17:02   #14
МиссПолина
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да. берёте мой код, который Вы успешно копируете в каждой теме.
Вставляете туда выравнивание меньшего по длине числа нулями слева (совет от Аватара) и получаете решение задачи.

правда, надо ещё учесть, какое из двух чисел больше, но это уже вторая часть марлезонского балета. Сперва сделайте выравнивание!

Эмммммммм))))))
МиссПолина вне форума   Ответить с цитированием
Старый 07.05.2015, 17:03   #15
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Цитата:
Ничего страшного не случилось!
Ну да! А вдруг из-за этого "Прогресс" и рухнул?
(щютк)
Цитата:
Я честно, задачу совсем не поняла
Вотэтзнач бигом к преподу за выяснением подробностей.
Иначе гадать будем на кофейной гуще долго, что ж на самом деле нужно. Одно дело - посчитать строку выражения, другое расписать расчет в столбик.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 07.05.2015, 17:05   #16
МиссПолина
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да. берёте мой код, который Вы успешно копируете в каждой теме.
Вставляете туда выравнивание меньшего по длине числа нулями слева (совет от Аватара) и получаете решение задачи.

правда, надо ещё учесть, какое из двух чисел больше, но это уже вторая часть марлезонского балета. Сперва сделайте выравнивание!


Serge, а можно вас попросить?))) Не могли бы вы, мне написать как это все можно сделать?))) Т.е как в программе все это прописать?))

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну да! А вдруг из-за этого "Прогресс" и рухнул?
(щютк)

Вотэтзнач бигом к преподу за выяснением подробностей.
Иначе гадать будем на кофейной гуще долго, что ж на самом деле нужно. Одно дело - посчитать строку выражения, другое расписать расчет в столбик.

Виталий, я сейчас описала все слова препода)) что он от нас потребовал))

Последний раз редактировалось Stilet; 07.05.2015 в 17:40.
МиссПолина вне форума   Ответить с цитированием
Старый 07.05.2015, 17:25   #17
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,106
Репутация: 5675
По умолчанию

Цитата:
Сообщение от МиссПолина Посмотреть сообщение
Виталий, я сейчас описала все слова препода)) что он от нас потребовал))
я ничего не знаю, я ничего не понимаю.
Я девочка, я не хочу Паскаль, я хочу пироженку...

я правильно понял Вас?

ладно.
держите код.
Хотя я реально не понимаю, зачем он Вам, если Вы ничего не хотите изучать и разбирать?!

Код:
program lab;
var
  n, n1, n2: string;
  i, t, p, t1, t2, d: integer;
  isN1Less : boolean;
  n3: string[1];
  code1, code2: integer;
begin
  Writeln('Input n1');
  //Readln(n1);
  n1 := '1240000';
  Writeln('Input n2');
  //Readln(n2);
  n2 := '1234';
  if length(n1)<>length(n2) then begin
    while length(n1)<length(n2) do n1 := '0'+n1;
    while length(n2)<length(n1) do n2 := '0'+n2;
  end;
  
  // сравним числа, первое должно быть НЕ МЕНЬШЕ второго
  isN1Less := false; {считаем, что не меньше}
  i:=1;
  while (i<=length(n1)) and Not(isN1Less) do 
    if n1[i]>n2[i] then break
    else 
      if n1[i]<n2[i] then isN1Less := true
      else Inc(i);
    
  // если второе число больше, поменяем числа местами, будем вычитать из большего меньшее
  if isN1Less then begin
     n := n1; n1 := n2; n2 := n
  end;
  
  p := 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}
    d := p + t1 - t2;   {operaciya vychitanya chisla s ostatkom}
    if d<0 then begin p:=-1; d:= d+10; end
    else p:=0;
    str(d, n3);
    n := n3 + n;
  end;
  Write('Результат = ');
  if isN1Less then Write('-'); {результат отрицательный}
  WriteLn(n);
  readln;
end.

p.s. по хорошему в ответе ещё нужно убрать ведущие (незначащие) нули.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 07.05.2015, 17:42   #18
МиссПолина
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я ничего не знаю, я ничего не понимаю.
Я девочка, я не хочу Паскаль, я хочу пироженку...

я правильно понял Вас?

ладно.
держите код.
Хотя я реально не понимаю, зачем он Вам, если Вы ничего не хотите изучать и разбирать?!

Код:
program lab;
var
  n, n1, n2: string;
  i, t, p, t1, t2, d: integer;
  isN1Less : boolean;
  n3: string[1];
  code1, code2: integer;
begin
  Writeln('Input n1');
  //Readln(n1);
  n1 := '1240000';
  Writeln('Input n2');
  //Readln(n2);
  n2 := '1234';
  if length(n1)<>length(n2) then begin
    while length(n1)<length(n2) do n1 := '0'+n1;
    while length(n2)<length(n1) do n2 := '0'+n2;
  end;
  
  // сравним числа, первое должно быть НЕ МЕНЬШЕ второго
  isN1Less := false; {считаем, что не меньше}
  i:=1;
  while (i<=length(n1)) and Not(isN1Less) do 
    if n1[i]>n2[i] then break
    else 
      if n1[i]<n2[i] then isN1Less := true
      else Inc(i);
    
  // если второе число больше, поменяем числа местами, будем вычитать из большего меньшее
  if isN1Less then begin
     n := n1; n1 := n2; n2 := n
  end;
  
  p := 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}
    d := p + t1 - t2;   {operaciya vychitanya chisla s ostatkom}
    if d<0 then begin p:=-1; d:= d+10; end
    else p:=0;
    str(d, n3);
    n := n3 + n;
  end;
  Write('Результат = ');
  if isN1Less then Write('-'); {результат отрицательный}
  WriteLn(n);
  readln;
end.

p.s. по хорошему в ответе ещё нужно убрать ведущие (незначащие) нули.
Serge, на носу диплом, 2 года балду пинали, не кому было нас учить, тут последний курс, поставили препода, ну и естественно он ничего в голову нам не вбил, так как часы не выданные по другим предметам зажимали, извините))))
МиссПолина вне форума   Ответить с цитированием
Старый 07.05.2015, 17:49   #19
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Цитата:
2 года балду пинали
А надо было пинать учебники.
Цитата:
не кому было нас учить
Не кому березу поламати )))
Это как в тех мемах на Живых мертвецов: "Мы в универе в библиотеки ходили. В БИБЛИОТЕКИ!!!! КАРЛ!!!!"
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 10.05.2015, 13:54   #20
МиссПолина
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я ничего не знаю, я ничего не понимаю.
Я девочка, я не хочу Паскаль, я хочу пироженку...

я правильно понял Вас?

ладно.
держите код.
Хотя я реально не понимаю, зачем он Вам, если Вы ничего не хотите изучать и разбирать?!

Код:
program lab;
var
  n, n1, n2: string;
  i, t, p, t1, t2, d: integer;
  isN1Less : boolean;
  n3: string[1];
  code1, code2: integer;
begin
  Writeln('Input n1');
  //Readln(n1);
  n1 := '1240000';
  Writeln('Input n2');
  //Readln(n2);
  n2 := '1234';
  if length(n1)<>length(n2) then begin
    while length(n1)<length(n2) do n1 := '0'+n1;
    while length(n2)<length(n1) do n2 := '0'+n2;
  end;
  
  // сравним числа, первое должно быть НЕ МЕНЬШЕ второго
  isN1Less := false; {считаем, что не меньше}
  i:=1;
  while (i<=length(n1)) and Not(isN1Less) do 
    if n1[i]>n2[i] then break
    else 
      if n1[i]<n2[i] then isN1Less := true
      else Inc(i);
    
  // если второе число больше, поменяем числа местами, будем вычитать из большего меньшее
  if isN1Less then begin
     n := n1; n1 := n2; n2 := n
  end;
  
  p := 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}
    d := p + t1 - t2;   {operaciya vychitanya chisla s ostatkom}
    if d<0 then begin p:=-1; d:= d+10; end
    else p:=0;
    str(d, n3);
    n := n3 + n;
  end;
  Write('Результат = ');
  if isN1Less then Write('-'); {результат отрицательный}
  WriteLn(n);
  readln;
end.

p.s. по хорошему в ответе ещё нужно убрать ведущие (незначащие) нули.
Serge, Здравствуйте! А подскажите, что означает "isN1Less"?
И еще, а программа у вас работает? У меня ошибки выдает)))
МиссПолина вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа читает из файла <data.txt> 10 чисел, перемножает их. решить задачу на турбо паскале bikmai4ik Помощь студентам 2 05.12.2013 13:06
вычитание неупакованных BCD-чисел Танчик007 Assembler 0 09.04.2011 17:29
Выполнить вычитание чисел MapK Паскаль 0 06.12.2010 22:08
Деление целых чисел(dw) через вычитание Alex1991 Assembler 7 12.11.2010 15:50
Вычитание чисел по основанию 4 и 16. Stager Общие вопросы C/C++ 1 21.01.2009 01:13


16:38.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.