Паскаль как найти сумму кодов

Формулировка задачи:

Коды букв имеют значения: A-1, B-2, C-3, D-4, E-5, F-6, G-7, H-8, I-9, J-10, K-11, L-12, M-13, N-14, O-15, P-16, Q-17, R-18, S-19, T-20, U-21, V-22, W-23, X-24, Y-25, Z-26.
Заранее спасибо!

Код к задаче: «Посчитать сумму кодов букв, составляющих данное слово. Коды букв заданы»

textual

Uses crt;
Var A:array['A'..'Z'] of integer; s:string; i,j,sum:integer; c:char;
Begin
ClrScr; Write('Input word:'); Readln(s); j:=0; sum:=0;
For c:='A' to 'Z' do            {в массив с символьными индексами заносим коды букв}
 Begin
  inc(j);                            {увеличиваем значение кода на 1}
  A[c]:=j;
 End;
For i:=1 to length(s) do         {проходим по слову}
 For c:='A' to 'Z' do                {проходим по массиву}
  If s[i]=c then sum:=sum+A[c];   {если буква из слова и индекс совпадают, берём элемент соответствующий данному индексу}
Writeln(sum);
Readln;
End.

Полезно ли:

8   голосов , оценка 4.500 из 5

5 / 5 / 2

Регистрация: 13.09.2012

Сообщений: 36

1

Подсчет суммы кодов всех элементов в веденной строке

16.09.2012, 18:12. Показов 1471. Ответов 1


Студворк — интернет-сервис помощи студентам

Подскажите пожалуйста, как сосчитать сумму кодов( например код буквы G=71 по ascii таблице) всех элементов в веденной строке. Распишите по подробнее, если не сложно



0



КонецСвета

Почетный модератор

7966 / 3937 / 2464

Регистрация: 30.10.2011

Сообщений: 5,377

16.09.2012, 18:33

2

Лучший ответ Сообщение было отмечено LifeWind как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
uses crt;
var sum: integer;
    i: byte;
    s: string;
begin
write('s='); readln(s);      //запрашиваем и считываем строку
for i:=1 to length(s) do      //в цикле с параметром перебираем все элементы строки (length- функция определения длины строки)
    inc(sum,ord(s[i]));       //увеличиваем сумму на значение кода символа в таблице ASCII (inc - процедура увеличения, ord - возвращает номер символа)
writeln('Cумма=',sum);        //вывод результата
readln;
end.



1



Лучший ответ

Наталья

Гений

(63507)


14 лет назад

Var
St:String
s,i:Integer;
Begin
Readln(St);
s:=0;
For i:=1 To Length(St) Do
s:=s+Ord(St[ i ]);
Writeln(s);
Readln
End.

Остальные ответы

ФГУП СКБ Титан НИО ПАС

Мыслитель

(9291)


14 лет назад

str:String;
ch:char;
i,num:byte;
count:word;
begin
for i :=1 to Length(str)
begin
ch := str[ i ];
num := Ord(ch);
count := count + num;
end;
WriteLn (count);
end.

Сергей

Мыслитель

(7082)


14 лет назад

function CutA(S:String):String;
begin
while Pos(‘A’,UpperCase(s))>0 do
begin
Delete(s,Pos(‘A’,UpperCase(s)),1);
end;
Result:=s;
end;

Программа на Паскале “Вычисление суммы цифр”

🔁 Использование циклов. Сумма положительных элементов массива. Циклы for, while, repeat. Шесть примеров решения задачи на языке Паскаль. Варианты для Turbo/Borland/FreePascal и PascalABC.NET

Σ Сумма элементов массива. 🔁 Циклы for, while, repeat. Пять примеров решения задачи на языке Паскаль. В некоторых вариантах используется синтаксис для PascalABC.NET

Σ Сумма случайных чисел. 🔁 Циклы for, while. Три задачи на нахождение суммы случайно сгенерированных элементов. Для каждой задачи приведено два варианта – классический синтаксис (Turbo/Borland Pascal) и PascalABC.NET


Задачи по информатике и основам программирования на языке Паскаль. В двух решениях используется оператор целочисленного деления, в двух других – используется преобразование числа к строке и цикл for, последнее решение учитывает рекомендации PascalABC.NET.

Программа “Сумма цифр трёхзначного числа”

Задание:
Введите трёхзначное число. Найдите сумму цифр. Выведите результат на экран.

Program SummaTsifr1;
Var X, Y1, Y2, Y3, Summa : Integer;
begin
writeln(‘Программа вычисления суммы цифр’);
write(‘Введите трёхзначное число X ‘);
readln(X);
Y1 := X div 100;
Y2 := (X – Y1 * 100) div 10;
Y3 := X – Y1 * 100 – Y2 * 10;
Summa := Y1 + Y2 + Y3;
writeln(‘Сумма цифр ‘, Y1:3, Y2:3, Y3:3, ‘ = ‘, Summa: 3)
end.

Замечание:
В процедуре вывода writeln используется форматированный вывод переменной. Например, Y1:3 обозначает, что для вывода значения переменной Y1 будут использоваться три позиции, т.е. в случае однозначного числа, перед ним будет добавлено два пробела, в случае двухзначного числа – добавлен один пробел. При этом если число будет содержать 4 или больше цифр, то оно будет выведено полностью.

Программа “Сумма цифр пятизначного числа”

Задание:
Введите пятизначное число. Найдите сумму цифр. Выведите результат на экран.

Program SummaTsifr2;
Var X, Y1, Y2, Y3, Y4, Y5, Summa : Integer;
begin
writeln(‘Программа вычисления суммы цифр ‘);
write(‘Введите пятизначное число X ‘);
readln(X);
Y1 := X div 10000;
Y2 := (X – Y1 * 10000) div 1000;
Y3 := (X – Y1 * 10000 – Y2 * 1000) div 100;
Y4 := (X – Y1 * 10000 – Y2 * 1000 – Y3 * 100) div 10;
Y5 := X – Y1 * 10000 – Y2 * 1000 – Y3 * 100 – Y4 * 10;
Summa := Y1 + Y2 + Y3 + Y4 + Y5;
writeln(‘Сумма цифр ‘, Summa)
end.

Замечание:
В процедуре вывода writeln используется форматированный вывод переменной. Например, Y1:3 обозначает, что для вывода значения переменной Y1 будут использоваться три позиции, т.е. в случае однозначного числа, перед ним будет добавлено два пробела, в случае двухзначного числа – добавлен один пробел. При этом если число будет содержать 4 или больше цифр, то оно будет выведено полностью.

Тема “Использование цикла for”. Программа “Сумма цифр числа”

Задание:
Введите число. Найдите сумму цифр. Для решения задачи используйте цикл for и функции работы со строками. Выведите результат на экран.

Program SumNumbers1;
Var
Y : Array[1..20] of Byte; { Массив для сохранения цифр исходного числа }
Xs : String;
Xr, Summa : Real;
J, N, Err : Integer;
begin
writeln(‘Программа вычисления суммы цифр ‘);
write(‘Введите число X (не более 20 цифр)’);
readln(Xr);
Str(Xr, Xs); { Преобразовать число в строку }
N := Length(Xs); { Вычислить длину строки }
for J := 1 to N do Val(Xs[J], Y[J], Err); { Преобразовать каждый символ строки к числу и записать в массив }
Summa := 0;
for J := 1 to N do Summa := Summa + Y[J];
writeln(‘Сумма цифр ‘, Summa)
end.

Замечание:
procedure Str(i: integer; var s: string); Преобразует целое значение i к строковому представлению и записывает результат в s
procedure Val(s: string; var value: byte; var err: integer); Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
function Length(s: string): integer; Возвращает длину строки

Тема “Использование цикла for”. Вариант программы “Сумма цифр числа” без использования массива

Задание:
Введите число. Найдите сумму цифр. Для решения задачи используйте цикл for и функции работы со строками. Выведите результат на экран.

Program SumNumbers2;
Var
Y : Byte;
Xs : String;
Xr, Summa : Real;
J, N, Err : Integer;
begin
writeln(‘Программа вычисления суммы цифр ‘);
write(‘Введите число X ‘);
readln(Xr);
Str(Xr, Xs); { Преобразовать число в строку }
N := Length(Xs); { Вычислить длину строки }
Summa := 0;
for J := 1 to N do begin
Val(Xs[J], Y, Err); { Преобразовать каждый символ строки к числу }
Summa := Summa + Y;
end;
writeln(‘Сумма цифр ‘, Summa)
end.

Программа вычисления суммы цифр. Вариант решения на PascalABC.NET

  • В программе отсутствуют устаревшие в PascalABC.NET конструкции.
  • В программе используются следующие рекомендованные конструкции PascalABC.NET:

  • Используются внутриблочные описания переменных: 6 раз
  • Используется инициализация при описании: 3 раза
  • Для ввода используется функция вида ReadInteger,ReadReal: 1 раз
  • Используется расширенное присваивание: 1 раз
  • Для вывода использована Print: 2 раза

Задание:
Введите с клавиатуры целое число. Найдите сумму цифр.

(*
Вариант для PascalABC.NET
*)
begin
var Y, Err : Integer;
Var Xs : String;
Println(‘Программа вычисления суммы цифр’);
var Xr := ReadInteger(‘Введите целое число X ‘);
Str(Xr, Xs); { Преобразовать число в строку }
var N := Length(Xs); { Вычислить длину строки }
var Summa : Integer := 0;
for var J := 1 to N do begin
Val(Xs[J], Y, Err); { Преобразовать каждый символ строки к числу }
Summa += Y;
end;
Println(‘Сумма цифр ‘, Summa)
end.


🔁 Использование циклов. Сумма положительных элементов массива. Циклы for, while, repeat. Шесть примеров решения задачи на языке Паскаль. Варианты для Turbo/Borland/FreePascal и PascalABC.NET

Σ Сумма элементов массива. 🔁 Циклы for, while, repeat. Пять примеров решения задачи на языке Паскаль. В некоторых вариантах используется синтаксис для PascalABC.NET

Σ Сумма случайных чисел. 🔁 Циклы for, while. Три задачи на нахождение суммы случайно сгенерированных элементов. Для каждой задачи приведено два варианта – классический синтаксис (Turbo/Borland Pascal) и PascalABC.NET

Рекламный блок

Информационный блок

§ 3.3. Программирование линейных алгоритмов

Информатика. 8 класса. Босова Л.Л. Оглавление


Ключевые слова:

• вещественный тип данных
• целочисленный тип данных
• символьный тип данных
• строковый тип данных
• логический тип данных

Программы, реализующие линейные алгоритмы, являются простейшими. Все имеющиеся в них операторы выполняются последовательно, один за другим.

Программируя линейные алгоритмы, рассмотрим более подробно целочисленные, логические, символьные и строковые типы данных.

3.3.1. Числовые типы данных

Вы уже знакомы с основными числовыми типами данных integer и real. К ним применимы стандартные функции, часть из которых приведена в табл. 3.3.

Таблица 3.3

Стандартные функции Паскаля

Программирование линейных алгоритмов

Исследуем работу функций roundint и frас, применив их к некоторому вещественному х. Соответствующая программа будет иметь вид:

Программирование линейных алгоритмов

Запустите программу несколько раз для каждого х ? {10,2; 10,8; -10,2; -10,8}. Что вы можете сказать о типе результата каждой из этих функций?

3.3.2. Целочисленный тип данных

Над целыми числами в языке Паскаль выполняются следующие операции: сложение (+), вычитание (-), умножение (*), получение целого частного (div), получение целого остатка деления (mod) и деление (/). Результаты первых пяти операций — целые числа. Результатом операции деления может быть вещественное число.

Рассмотрим пример использования операций div и mod, записав на языке Паскаль программу нахождения суммы цифр вводимого с клавиатуры натурального трёхзначного числа.

Используем тот факт, что положительное трёхзначное число можно представить в виде следующей суммы: х — а*100 + 6*10 + с, где а,Ь,с — цифры числа.

Программирование линейных алгоритмов

Чему равна сумма цифр числа 123? А числа -123? Совпадают ли ваши результаты с результатами работы программы? Как можно объяснить и исправить ошибку в программе?

3.3.3. Символьный и строковый типы данных

Значением символьной величины (тип char) в языке Паскаль является любой из символов, который можно получить на экране нажатием на клавиатуре одной из клавиш или комбинации клавиш, а также некоторых других символов, в том числе и невидимых. Множество таких символов состоит из 256 элементов, каждому из которых согласно используемой кодовой таблице поставлен в соответствие код — число 0 до 255.

Символы, соответствующие первым 32 кодам, являются управляющими, а остальные — изображаемыми. К изображаемым символам относится и пробел, имеющий код 32.

Знакам препинания, знакам арифметических операций, цифрам, прописным и строчным латинским буквам соответствуют коды от 33 до 127. Буквам национального алфавита соответствуют коды с номерами 128 и далее.

В тексте программы константу символьного типа можно задать, заключив любой изображаемый символ в апострофы: ‘5’, ‘В’, ‘*’.

Если значение символьной переменной считывается с клавиатуры, то его следует набирать без апострофов.

Чтобы найти код символа, используют функцию ord, где в качестве параметра задают символ.

Чтобы по коду узнать символ, используют функцию chr, где в качестве параметра указывают код символа.

Значением строковой величины (тип string) является произвольная последовательность символов, заключенная в апострофы. В Паскале (как и в алгоритмическом языке) строки можно сцеплять.

Пример. Запишем на языке Паскаль программу, в которой для введённой с клавиатуры буквы на экран выводится её код. Затем на экран выводится строка, представляющая собой последовательность из трёх букв используемой кодовой таблицы: буквы, предшествующей исходной; исходной буквы; буквы, следующей за исходной.

Программирование линейных алгоритмов

3.3.4, Логический тип данных

Как известно, величины логического типа принимают всего два значения; в Паскале это false и true. Эти константы определены так, что false < true.

Логические значения получаются в результате выполнения операций сравнения числовых, символьных, строковых и логических выражений. Поэтому в Паскале логической переменной можно присваивать результат операции сравнения.

Пример. Напишем программу, определяющую истинность высказывания «Число п является чётным» для произвольного целого числа n.

Пусть ans — логическая переменная, а n — целая переменная. Тогда в результате выполнения оператора присваивания

ans:=n mod 2 = 0

переменной ans будет присвоено значение true при любом чётном n и false в противном случае.

Программирование линейных алгоритмов

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

Пример. Напишем программу, определяющую истинность высказывания «Треугольник с длинами сторон а, b, с является равнобедренным» для произвольных целых чисел а, Ь, с.

Программирование линейных алгоритмов


САМОЕ ГЛАВНОЕ

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


Вопросы и задания

1. Для заданного х вычислите у по формуле у = х3 + 2,5х— х + 1.

2По заданным координатам точек А и В вычислите длину отрезка АВ.

3Известны длины сторон треугольника а, b, с. Напишите программу, вычисляющую площадь этого треугольника.

4Известны координаты вершин А, В, С треугольника. Напишите программу, вычисляющую площадь этого треугольника.

5. Если сумма налога исчисляется в рублях и копейках, то налоговая служба округляет её до ближайшего рубля (до 50 копеек — с недостатком, свыше 50 копеек (включая 50) — с избытком). Используйте компьютер, чтобы ввести точную сумму налога и вывести, сколько следует уплатить.

6. Исследуйте работу функции random, запустив многократно на выполнение программу:  program n_8;var х, n: integer; beginwriteln (‘Исследование функции random’);        randomize (*для генерации различных случайных чисел при каждом запуске программы *) ;         write (‘Введите х» ‘) ;         readln (х);        write (‘Введите n»’);         readln (n);        writeln ( ‘random (‘, х, ‘) =’, random ( х ));         writeln ( ‘random ( ‘, к, ‘) + ‘, n, ‘ = ‘, random (x) + n) end.Как можно получить случайное число из промежутка (0; х)? Как можно получить случайное число из промежутка (0; х]? Как можно получить случайное число из промежутка (n; х + n)?

7. Одна компания выпустила лотерейные билеты трёх разрядов: для молодежи, для взрослых и для стариков. Номера билетов каждого разряда лежат в пределах: для молодёжи — от 1 до 100;     для взрослых — от 101 до 200;     для стариков — от 201 до 250. С помощью компьютера выберите случайным образом лотерейный билет в каждом разряде.

8. Запишите на языке Паскаль программу, которая для произвольного двузначного числа определяет:
а) сумму и произведение его цифр; б) число, образованное перестановкой цифр исходного числа.

9. Запишите на языке Паскаль программу, реализующую алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим количеством банкнот по 500 (k500), 100 (k100), 50 (k50) и 10 (k10) рублей.

10. Идёт k-я секунда суток. Разработайте программу, которая по введённой k-й секунде суток определяет, сколько целых часов h и целых минут m прошло с начала суток.

11. Запишите на языке Паскаль программу, которая вычисляет сумму кодов букв в слове БАЙТ.

12. Запишите на языке Паскаль программу, которая выводит на экран строку символов, коды которых равны 66, 69, 71, 73, 78.

13. Разработайте программу, которая запрашивает три строковые величины — взаимосвязанные прилагательное, существительное и глагол, а затем печатает все варианты фраз с использованием введённых слов.

14. Даны значения целочисленных переменных: а = 10, b = 20. Чему будет равно значение логической переменной rez после выполнения операции присваивания? а) rez:=(а=10) or (b>10)    б) rez:=(а>5) and (b>5) and (a<20) and (b<30)    в) rez: = (not (a<15)) or (b>20)

15. Составьте программу, вводящую true, если высказывание является истинным, и false в противном случае: а) сумма цифр трёхзначного числа х является чётным числом; б) треугольник со сторонами а, b, с является разносторонним.


Оглавление

§ 3.2. Организация ввода и вывода данных

§ 3.3. Программирование линейных алгоритмов

§ 3.4. Программирование разветвляющихся алгоритмов


Добавить комментарий