Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
1 / 1 / 2
Регистрация: 10.04.2011
Сообщений: 40

Найти сумму двух многозначных чисел (числа хранятся в файле)

12.10.2014, 12:19. Показов 6484. Ответов 12

Студворк — интернет-сервис помощи студентам
Найти сумму двух многозначных чисел (числа хранятся в файле).
Примерное решение есть. Я вот не знаю, правильно или нет. По сути нет.
Т.к. если записать очень большое число, то оно выходит за рамки LongInt.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  f: Text;
  i, sum: LongInt;
 
begin
  assign(f, 'z1.txt');
  reset(f);
  repeat
    sum := 0;
    while not eoln(f) do 
    begin
      read(f, i);
      sum := sum + i;
    end;
    readln(f);
    WriteLn(sum);
  until eof(f);
  close(f);
end.
И подскажите пожалуйста, как переделать данное решение для разности двух чисел?
Заранее спасибо!
P.S. в программировании не силен!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2014, 12:19
Ответы с готовыми решениями:

Найти сумму чисел из первых двух цифр каждого числа
Ввести два числа. Найти сумму чисел из первых двух цифр каждого числа, используя процедуру , которая оставляет только первые две цифры...

С клавиатуры вводится N целых чисел a1, a2,….,aN. Найти сумму этих чисел. Найти номер первого четного числа последовательности чисел.
Решить задачу 3 способами: 1. Используя метки и оператор goto (не используя никакой цикл) 2. Используя цикл (repeat или while) 3....

Найти сумму двух наименьших чисел среди элементов двух файлов
Доброго времени суток, помогите с программой: есть два файла в них находятся числа нужно найти сумму наименьших из них. Я нашёл количество...

12
 Аватар для Антон1985
138 / 101 / 102
Регистрация: 03.02.2014
Сообщений: 427
12.10.2014, 12:38
Тема в помощь:
Найти сумму чисел строки

Добавлено через 3 минуты
Code
1
2
3
Из файла загружаешь цифры в память в массив. 
Складываешь. 
Результат сохраняешь в файл.
0
1 / 1 / 2
Регистрация: 10.04.2011
Сообщений: 40
12.10.2014, 12:45  [ТС]
Простите, Антон1985, но мои знания не настолько сильны!
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.10.2014, 13:48
Ссылка на ту тему вряд ли нужна. Задача на длинную арифметику. Если числа и результат не превысят 255 разрядов, то можно работать со строками, если больше, то только массивы.
Пример сложения можно посмотреть здесь.
Сложение длинных чисел

Добавлено через 3 минуты
Вот вычитание более длинных чисел с файлами
Вычитание двух длинных чисел

Добавлено через 27 секунд
Вообще используйте поиск по форуму.
1
1 / 1 / 2
Регистрация: 10.04.2011
Сообщений: 40
12.10.2014, 14:01  [ТС]
Puporev, я не могу этот код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses crt;
var   s1,s2,s3: string;
      mem,i,l,c: integer;
begin
  writeln('Enter first numb '); readln(s1);
  writeln('Enter second numb '); readln(s2);
  mem:=0;
  s3:='';
  if length(s1)>length(s2) then l:=length(s1)
  else                          l:=length(s2);
  if length(s1)>length(s2) then
    for i:=length(s2) to l-1 do
      Insert('0',s2,1);
  if length(s1)<length(s2) then
    for i:=length(s1) to l-1 do
  Insert('0',s1,1);
  for i:=l downto 1 do
   begin
    c:=strtoint(s1[i])+strtoint(s2[i])+mem;
    mem:=c div 10;
    insert(inttostr(c mod 10),s3,1);
   end;
  if mem>0 then insert('1',s3,1);
  write(s3);
  readln;
end.
подогнать под работу с файлами.
Тем более вдруг 2 числа в одной строке?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.10.2014, 14:08
Цитата Сообщение от LoL_KO Посмотреть сообщение
Тем более вдруг 2 числа в одной строке?
А это еще нафига? Тогда еще нужно знать разделитель чисел.
Pascal
1
2
3
4
5
6
7
8
9
10
var   f:text;
      s1,s2,s3: string;
      mem,i,l,c: integer;
begin
  assign(f,'input.txt');//файл в папке с программой
  reset(f);
  readln(f,s1);
  readln(f,s2);
  close(f);
  s3:='';
Добавлено через 2 минуты
Цитата Сообщение от LoL_KO Посмотреть сообщение
я не могу этот код подогнать под работу с файлами
Ну если ни хрена не знаете, то читайте, учите или просите написать программы за деньги, или бросайте учебу нафиг если тупой и ленивый.
0
1 / 1 / 2
Регистрация: 10.04.2011
Сообщений: 40
12.10.2014, 14:36  [ТС]
Puporev, числа хранятся в файле, а запись может быть в одну строку, либо в две.
т.е.
 
31231241413414124124124 312414124124134124

либо

 
31231241413414124124124
312414124124134124

Добавлено через 24 минуты
спасибо, остановился на этом варианте.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
  f: text;
  s1, s2, s3: string;
  mem, i, l, c: integer;
 
begin
  assign(f, 'z1.txt');
  reset(f);
  readln(f, s1);
  readln(f, s2);
  close(f);
  s3 := '';
  if length(s1) > length(s2) then l := length(s1)
  else l := length(s2);
  if length(s1) > length(s2) then
    for i := length(s2) to l - 1 do
      insert('0', s2, 1);
  if length(s1) < length(s2) then
    for i := length(s1) to l - 1 do
      insert('0', s1, 1);
  for i := l downto 1 do
  begin
    c := strtoint(s1[i]) + strtoint(s2[i]) + mem;
    mem := c div 10;
    insert(inttostr(c mod 10), s3, 1);
  end;
  if mem > 0 then insert('1', s3, 1);
  write(s3);
  readln;
end.
Цитата Сообщение от Puporev Посмотреть сообщение
Ну если ни хрена не знаете, то читайте, учите или просите написать программы за деньги, или бросайте учебу нафиг если тупой и ленивый.
а это тут причем? я чуть не так написал, а вы меня уже приравняли к тупым и ленивым.
Цитата Сообщение от Puporev Посмотреть сообщение
Сообщение от LoL_KO
я не могу этот код подогнать под работу с файлами
потому что в ходе компиляции была ошибка! я не заметил символа табуляции после 1-го числа в строке файла!
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.10.2014, 14:46
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Если записаны в 1 строку через пробел или в 2 строки
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var   f:text;
      s1,s2: string;
      ch:char;
begin
  assign(f,'input.txt');//ôàéë â ïàïêå ñ ïðîãðàììîé
  reset(f);
  s1:='';
  s2:='';
  ch:=#0;
  while not eoln(f) and(ch<>' ') do
   begin
    read(f,ch);
    s1:=s1+ch;
   end;
  while not seekeof(f) do
   begin
    read(f,ch);
    s2:=s2+ch
   end;
  close(f);
Добавлено через 5 минут
Вернее так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
s1:='';
  s2:='';
  ch:=#0;
  while not eoln(f) and(ch<>' ') do
   begin
    read(f,ch);
    if not(ch in [' ',#10,#13])then  s1:=s1+ch;
   end;
  while not seekeof(f) do
   begin
    read(f,ch);
    if not(ch in [' ',#10,#13])then  s2:=s2+ch
   end;
1
1 / 1 / 2
Регистрация: 10.04.2011
Сообщений: 40
12.10.2014, 14:57  [ТС]
Puporev, спасибо огромное! Всё работает на ура!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var
  f: text;
  s1, s2: string;
  ch: char;
  sum: integer;
 
begin
  assign(f, 'z1.txt');//файл в папке с программой
  reset(f);
  s1 := '';
  s2 := '';
  ch := #0;
  while not eoln(f) and (ch <> ' ') do
  begin
    read(f, ch);
    if not (ch in [' ', #10, #13]) then  s1 := s1 + ch;
  end;
  while not seekeof(f) do
  begin
    read(f, ch);
    if not (ch in [' ', #10, #13]) then  s2 := s2 + ch
  end;
  sum := strtoint(s1) + strtoint(s2);
  writeln(sum);
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.10.2014, 15:06
Но только тут нужно добавить самую малость, длинную арифметику...
1
1 / 1 / 2
Регистрация: 10.04.2011
Сообщений: 40
12.10.2014, 15:22  [ТС]
не тот вариант скопировал)
вот.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var
  f: text;
  s1, s2, s3: string;
  ch: char;
  mem, i, l, c: integer;
 
begin
  assign(f, 'z1.txt');//файл в папке с программой
  reset(f);
  s1 := '';
  s2 := '';
  ch := #0;
  while not eoln(f) and (ch <> ' ') do
  begin
    read(f, ch);
    if not (ch in [' ', #10, #13]) then  s1 := s1 + ch;
  end;
  while not seekeof(f) do
  begin
    read(f, ch);
    if not (ch in [' ', #10, #13]) then  s2 := s2 + ch
  end;
  s3 := '';
  if length(s1) > length(s2) then l := length(s1)
  else l := length(s2);
  if length(s1) > length(s2) then
    for i := length(s2) to l - 1 do
      insert('0', s2, 1);
  if length(s1) < length(s2) then
    for i := length(s1) to l - 1 do
      insert('0', s1, 1);
  for i := l downto 1 do
  begin
    c := strtoint(s1[i]) + strtoint(s2[i]) + mem;
    mem := c div 10;
    insert(inttostr(c mod 10), s3, 1);
  end;
  if mem > 0 then insert('1', s3, 1);
  write(s3);
  readln;
  close(f);
end.
1
0 / 0 / 1
Регистрация: 24.11.2010
Сообщений: 55
08.01.2016, 20:39
Как подогнать данное решение под разность двух чисел?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.01.2016, 21:29
В посте номер 4 есть ссылка
Вычитание двух длинных чисел
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.01.2016, 21:29
Помогаю со студенческими работами здесь

Найти сумму десятков двух чисел и сумму их единиц
1.)Даны два числа. Найти сумму их десятков и сумму их единиц. 2.)Дано число. Проверить, делится ли оно на 2, на 3 или на 5. ...

Задача с использованием структуры «текстовый файл» (в файле хранятся целые числа)
Дан файл, содержащий положительные целые числа. Напишите программу, которая находит в этом файле количество локальных минимумов. Локальным...

Найти сумму нечётных чисел и количество чётных чисел в двух массивах
Пусть дано 2 массива. Составить программу для нахождения суммы нечетных чисел и количества четных чисел в обоих массивах. Заполнение, вывод...

Найти сумму чисел в файле и вывести на экран числа и полученную сумму
11.записать в файл любые 10 чисел,найти сумму этих чисел и вывести на экран числа и полученную сумму

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru