Самая длинная программа паскаль

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

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

Задача сложения

Алгоритм решения

Задача решается таким же образом, как и при сложении в столбик. Производим сложение по каждому разряду отдельно. Если сумма больше 9, берем остаток от деления числа на 10 и не забываем прибавить количество десятков к следующему по старшинству разряду

Программный код

program A+B; var s1,s2:string; a,b:array[1..100] of integer; len,i,c:integer; f1,f2:text; begin Assign(f1,’INPUT.TXT’); Reset(f1); Assign(f2,’OUTPUT.TXT’); ReWrite(f2); c:=0; ReadLn(f1,s1); ReadLn(f1,s2); close(f1); len:=length(s1); for i:=1 to len do a[len-i+1]:=Ord(s1[i])-48; len:=length(s2); for i:=1 to len do b[len-i+1]:=Ord(s2[i])-48; if length(s1)>length(s2) then len:=length(s1) else len:=length(s2); for i:=1 to len do begin c:=c+a[i]+b[i]; a[i]:=c mod 10; c:=c div 10; end; if c>0 then begin len:=len+1; a[len]:=c; end; for i:=len downto 1 do Write(f2,a[i]); close(f2); end.

Задача вычитания

Данная программа осуществляет нахождения разности двух целых чисел не позволяющих хранить их в переменных допустимых типов какого-либо языка программирования.

Программа -тест на языке паскаль

Читайте также:
Какие системные программы можно удалить

Алгоритм решения

В отличии от задачи сложения, мы не можем выбирать по длине какого числа будем двигаться, поэтому прежде требует проверить конечный результат на его знак. Это освобождает от дальнейших трудностей. Непосредственно нахождения разности ничем не отличается от нахождения разности путем «вычитания в столбик».

Программный код

program A-B; Function CompLong(s1,s2:string):integer; var a,len1,len2,i:integer; b:boolean; begin a:=0; b:=true; len1:=length(s1); len2:=length(s2); if len1>len2 then begin a:= 1; b:=false; end; if len1Ord(s2[i])-48 then begin a:= 1; break; end; if s1[i] if c < 10 then c:=-1 else c:=0; end; while (a[len]=0) and (len>1) do len:=len-1; for i:=len downto 1 do Write(f2,a[i]); close(f2) end.

Задача умножения

Программный код

program A*B; var f1,f2:text; s1:string; b,i,c:integer; a:array[0..105] of integer; begin Assign(f1,’INPUT.TXT’); Reset(f1); Assign(f2,’OUTPUT.TXT’); ReWrite(f2); c:=0; ReadLn(f1,s1); ReadLn(f1,b); close(f1); a[0]:=length(s1); for i:=1 to a[0] do a[a[0]-i+1]:=Ord(s1[i])-48; for i:=1 to a[0] do begin a[i]:=c+a[i]*b; c:=a[i] div 10; a[i]:=a[i] mod 10; end; While c>0 do begin a[0]:=a[0]+1; a[a[0]]:=c mod 10; c:=c div 10; end; if a[a[0]]=0 then Write(f2,0) else for i:=a[0] downto 1 do Write(f2,a[i]); close(f2); end.

Примечание

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

Самая лёгкая программа на Pascal.ABS

Источник: synset.com

Самое длинное слово в строке

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

Следует ввести счетчик букв в слове. В цикле по символам строки пока очередной символ не пробел, счетчик увеличивается. Как только встречается пробел, следует сравнить значение счетчика со значением, записанным в переменной для хранения размера самого длинного слова. Если слово, которое сейчас было «измерено», длиннее, то записать его длину в эту переменную.

Читайте также:
Программа чтобы менять разрешение экрана

Кроме того, надо запомнить индекс начала этого слова. Он определяется вычитанием длины слова из текущего индекса.

После того, как очередное слово было обработано, надо сбросить счетчик букв на 0.

Поскольку последнее слово может не оканчиваться пробелом, то оно будет не учтено. Поэтому после цикла надо проверить текущее значение счетчика букв.

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

Pascal

Вывести самое длинное слово в строке паскаль

var
s: string;
i, id, len, max, count: byte;

begin
readln(s);
len := length(s);
max := 0; // длина самого длинного слова
id := 0; // индекс начала самого длинного слова
count := 0;
for i:=1 to len do
if s[i] <> ‘ ‘ then
count := count + 1
else begin
if count > max then begin
max := count;
id := i — count;
end;
count := 0
end;

if count > max then begin // проверка последнего слова
max := count;
id := len — count + 1;
end;

writeln(copy(s,id,max));
end.

one two three four five six seven
three

Язык Си

#include < stdio.h>
#include < string.h>
main() char s[100];
int i, id, max, count, len;
gets(s);
len = strlen(s);
max = 0;
/> count = 0;
for (i=0; i < len; i++)
if (s[i] != ‘ ‘) count += 1;
else if (count > max) max = count;
— count;
>
count = 0;
>

if (count > max) max = count;
— count;
>
max += id;
for (i=id; i < max; i++)
putchar(s[i]);
printf(«n»);
>

Читайте также:
Каково содержание понятия имре лакатоса исследовательская программа

Python

найти самое длинное слово в строке python (питон)

# Вариант 1 — классический алгоритм
s = input()
l = len(s)
m = 0
ind = 0
count = 0
for i in range(l):
if s[i] != ‘ ‘:
count += 1
else:
if count > m:
m = count
ind = i — count
count = 0

if count > m:
m = count
ind = i — count + 1

print(s[ind:ind+m])

# Вариант 2 — с помощью встроенных функций и методов
s = input()
s = s.split()
print(max(s, key=len))

КуМир

алг самое длиное слово
нач
лит s
цел i,id,len,mx,count
ввод s
len := длин(s)
mx := 0
id := 0
count := 0
нц для i от 1 до len
если s[i] <> » » то
count := count + 1
иначе
если count > mx то
mx := count
id := i — count
все
count := 0
все
кц
если count > mx то
mx := count
id := len — count
все
вывод s[id:id+mx]
кон

Basic-256

input s$
l = length(s$)
m = 0
id = 0
c = 0
for i=1 to l
b$ = mid(s$,i,1)
if b$ <> » » then
c = c + 1
else
if c > m then
m = c
id = i -c
endif
c = 0
endif
next i

if c > m then
m = c
id = i-c
endif

print mid(s$,id,m)

Источник: gospodaretsva.com

Дана строка. Подсчитать самую длинную последовательность подряд идущих букв «а». (программа Паскаль)

Дана строка. Подсчитать самую длинную последовательность подряд идущих букв «а».

Ответ эксперта

uses crt;
var i,sum,max:integer;
s:string;
begin
clrscr;
writeln(‘Vvedite stroku ‘);
readln(s);
for i:=1 to length(s) do
sum:=0;
max:=0;
if s[i]=’a’ then sum:=sum+1
else
begin
if sum>max then max:=sum;
sum:=0;
end;
writeln(max);
readln;

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru