15.12.2013, 16:02 | #1 (permalink) |
Новичок
Регистрация: 17.09.2013
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите написать программу на Паскале
1. Выберите для представления длинных чисел подходящий тип (массив или строку). Помните, каждая из указанных структурн имеют преимущества и недостатки, которые будут влиять на реализацию алгоритмов обработки целых чисел в дальнейшем. 2. Объявите псевдоним TLong для представления типа целых чисел с числом разрядов не менее 255. В комментарии укажите, в каком порядке будут располагаться разряды длинного числа в вашем типе (в младших элементах - младшие разряды, или в младших элементах - старшие разряды). 3. Опишите процедуру инициализации переменной типа TLong: процедура должна иметь два параметра, один из которых - переменная для инициализации TLong, второй - строковое значение, которое содержит "естественную" запись длинного числа в виде последовательности цифр. Помните, что при использовании массива, следует обнулять его элементы, соответсвующие старшим разрядам длинного числа. 4. Опишите процедуру, которая осуществляет сложение двух длинных чисел. Подсказка: можно попробовать (не обязательно) использовать рекурсию - поразрядное сложение повторяющаяся регулярная операция. Не забудьте перенос в следующий разряд. 5. Опишите процедуру, которая выводит заданное длинное число на экран в "естественном" порядке. 6. Напишите программу, которая складывает длинные числа, хранящиеся в текстовом файле (количество чисел в файле неизвестно, но не менее одного). |
15.12.2013, 16:02 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На нашем форуме есть похожие темы, ознакомьтесь: Помогите написать программу в Паскале Помогите написать программу в Паскале |
15.12.2013, 21:12 | #2 (permalink) |
Новичок
Регистрация: 17.09.2013
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот числа которые находятся в файле middle.txt через ентер ( 928375892375972345729579824358
345872346782368462 873587136762347876826357678265 9837687874672). проблема в том программа выдает ошибку пишет, что индекс находится вне границ массива. и указывает на эту строчку: for i:=1 to u do s1[i]:=Chr(ch1[u-i+1]+48); Моежете помочь, как сделать что программа работала. Вот она сама. var s1,s2:string; ch1,ch2:array[1..255] of integer; fileIN: text; p,i,u:integer; begin Assign(fileIN,'C:\Users\hp-pc\Documents\Война и мир\middle.txt'); Reset(fileIn); readln(fileIN,s1); while not eof(fileIN) do begin readln(fileIN,s2); p:=0; for i:=1 to length(s1) do ch1[length(s1)-i+1]:=Ord(s1[i])-48; for i:=1 to length(s2) do ch2[length(s2)-i+1]:=Ord(s2[i])-48; if length(s1)>length(s2) then u:=length(s1) else u:=length(s2); for i:=1 to u do begin p:=p+ch1[i]+ch2[i]; ch1[i]:=p mod 10; p:= p div 10; end; if p>0 then begin inc(u); ch1[u]:=p; end; for i:=1 to u do s1[i]:=Chr(ch1[u-i+1]+48); end; for i:=u downto 1 do write(ch1[i]); close(fileIN); end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|