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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2014, 16:06   #1
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию Решить задачи, включив требуемые процедуры и функции в состав модуля Unit.

Составить функцию для нахождения точного значения суммы натуральных чисел, в десятичной записи которых более 20 знаков.Pascal ABC
Veronika_13 вне форума Ответить с цитированием
Старый 29.03.2014, 16:25   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Длинная арифметика в помощь. Сложение - самая легкая операция из возможных. Наработки какие-нибудь есть?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 30.03.2014, 23:38   #3
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

Код:
program lab_5;
uses crt, modd;
var
n,n1:byte;
sum,y,err:integer;
begin clrscr;randomize;
writeln('1 chislo =');
read(n);
writeln('2 chislo =');
read(n1);
writeln('1 sformirovannoe = ');
zvezda(n);
writeln('2 sformirovannoe = ');
zvezda(n1);
sum:=y+n1;;
writeln('Summa =',y);
readkey
end.
Код:
unit mod1;
interface
var i:integer;
    s:string[80];
    n,n1:byte;
sum,y,err:integer;
function zvezda(n:byte):real;
implementation
function zvezda(n:byte):real;
    begin
     i:=1;
     s:='';
      while i<=n do
       begin
        s:=s+'1';
         inc(i);
       end;
     writeln(s);  Val(s[80],y,err);
    end;
end.

Последний раз редактировалось Stilet; 31.03.2014 в 15:28.
Veronika_13 вне форума Ответить с цитированием
Старый 30.03.2014, 23:41   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Ничего не понял. Что по Вашей задумке должен делать этот код?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 30.03.2014, 23:48   #5
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

просто сложить, но как тут пристроит функцию не знаю, поэтому что-то выдумала
Veronika_13 вне форума Ответить с цитированием
Старый 31.03.2014, 00:00   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
var
  s1, s2, res: string;
  k, p, i, j, z: integer;
  
function max(a, b: integer): integer;
begin
  if a > b then
    max := a
  else
    max := b;
end;

begin
  readln(s1);
  readln(s2);
  k := max(length(s1), length(s2));
  p := k - length(s1);
  for i := 1 to p do
    s1 := '0' + s1;
  p := k - length(s2);
  for i := 1 to p do
    s2 := '0' + s2; 
  res := '';
  z := ord('0');
  p := 0;
  for i := k downto 1 do
  begin
    j := ord(s1[i]) + ord(s2[i]) - 2 * z + p;
    res := chr(j mod 10 + z) + res;
    p := j div 10;
  end;
  if p > 0 then
    res := chr(p + z) + res;
  writeln(res);
end.
Вот на коленке набросанный код для сложения двух строк-чисел.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 31.03.2014, 00:05   #7
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

а что делать с " у которых больше 20 знаков". с проверкой вот этого.
Veronika_13 вне форума Ответить с цитированием
Старый 31.03.2014, 01:00   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Из справки Pascal ABC:
Цитата:
Строки в Pascal ABC имеют тип string и состоят из не более чем 255 символов.
Так что результат может иметь максимальную длину в 255 символов.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 31.03.2014 в 01:03.
BDA вне форума Ответить с цитированием
Старый 31.03.2014, 14:58   #9
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

Спасибо большое

как изменить код,что бы складывалось не только два числа, а столько сколько задать с клавиатуры?
Код:
program lab_5;
uses crt, modul;
var a: array [1..50] of integer;
   res: string;
  k,l ,p,n, i, j, z: integer;

begin

writeln('Ââåäèòå êîëè÷åñòâî
 ýëåìåíòîâ');
readln(n);
  writeln('Ââåäèòå ýëåìåíòû');
  for  l:=1 to n do
  readln(a[l]);
  k := max(length(s1), length(s2));
  p := k - length(s1);
  for i := 1 to p do
    s1 := '0' + s1;
  p := k - length(s2);
  for i := 1 to p do
    s2 := '0' + s2;
  res := '';
  z := ord('0');
  p := 0;
  for i := k downto 1 do
  begin
    j := ord(s1[i]) + ord(s2[i]) - 2 * z + p;
    res := chr(j mod 10 + z) + res;
    p := j div 10;
  end;
  if p > 0 then
    res := chr(p + z) + res;
  write('ðåçóëüòàò:',res);
end.

Последний раз редактировалось Stilet; 06.04.2014 в 22:25.
Veronika_13 вне форума Ответить с цитированием
Старый 06.04.2014, 14:55   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

2 пути:
1) оформить код сложения в виде функции и вызывать с нужными параметрами
Код:
var
  s1, s2: string;
  
function max(a, b: integer): integer;
begin
  if a > b then
    max := a
  else
    max := b;
end;

function add(s1, s2: string): string;
var
  res: string;
  k, p, i, j, z: integer;
begin
  k := max(length(s1), length(s2));
  p := k - length(s1);
  for i := 1 to p do
    s1 := '0' + s1;
  p := k - length(s2);
  for i := 1 to p do
    s2 := '0' + s2; 
  res := '';
  z := ord('0');
  p := 0;
  for i := k downto 1 do
  begin
    j := ord(s1[i]) + ord(s2[i]) - 2 * z + p;
    res := chr(j mod 10 + z) + res;
    p := j div 10;
  end;
  if p > 0 then
    res := chr(p + z) + res;
  add := res;
end;

begin
  readln(s1);
  readln(s2);
  writeln(add(s1, s2));
end.
Код:
var
  sum, a: string;
  n, i: integer;
...
begin
  readln(n);
  sum := '0';
  for i := 1 to n do
  begin
    readln(a);
    sum := add(sum, a);
  end;
  writeln(sum);
end.
2) правильно "сплести" операцию сложения и цикл считывания новых чисел
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 06.04.2014 в 14:57.
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции модуля GRAPH Ника-Вероника Паскаль, Turbo Pascal, PascalABC.NET 0 13.03.2012 19:04
процедуры и функции модуля CRT ВалерОК Помощь студентам 3 23.01.2012 19:16
Процедуры и функции модуля CRT 1010011010 Паскаль, Turbo Pascal, PascalABC.NET 0 22.12.2010 03:45
Процедуры и функции модуля CRT малы6ка Помощь студентам 2 17.09.2010 11:36
Помогите решить задачи в паскале! Файлы, функции и процедуры... Регинка-АРМ Помощь студентам 4 22.04.2009 19:32