0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
1

Процедура вычисляющие сумму 2 целых чисел

29.03.2023, 16:38. Показов 740. Ответов 11

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужна помощь, мне нужно вывести результат полученный при помощью процедуры и потом разделить это число на 2. Как это нужно сделать подскажите пожалуйста.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program Psum;
var result,a,b: integer;
 
procedure sum (var n1, n2: integer);
var
result:integer;
begin
result:=n1+n2;
end;
 
begin
write ('Первое число');
read(a);
write ('‚Второе число');
read(b);
sum(a,b);
write('‘Сумма 2 целых чисел равна=­  ', result);
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2023, 16:38
Ответы с готовыми решениями:

Сформировать массив из целых чисел от 2 до N, подсчитать сумму квадpатов четных и сумму квадратов нечетных чисел
Сформировать в программе массив из целых чисел от 2 до N. Подсчитать сумму квадpатов четных и сумму...

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

Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно
(For) Даны два целых числа A и B (A &lt; B). Найти сумму всех целых чисел от A до B включительно.

Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно
Желательно сделать в Pascal или Delphi

Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно
Помогите, пожалуйста.

11
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
30.03.2023, 09:35 2
ну, формально, (подчёркиваю - ФОРМАЛЬНО) это можно сделать, просто выбросив описание локальной переменной result внутри процедуры sum:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var result,a,b: integer;
 
procedure sum (var n1, n2: integer);
begin
   result:=n1+n2;
end;
 
begin
  write ('Первое число');
  readln(a);
  write ('Второе число');
  readln(b);
  sum(a,b);
  write('‘Сумма 2 целых чисел равна=­  ', result);
end.
но, честное слово, я бы руки повыдёргивал из того места, где они вставлены, чтобы такой код не видеть никогда!

если нужно возвращать значение из процедуры (такое бывает, хотя функция специально для таких целей придумана!),
тогда описывается ещё один параметр, через который и возвращается значение.
Примерно так это должно быть:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
procedure sum (n1, n2: integer; var pSum : integer);
begin
  pSum := n1+n2;
end;
 
var a,b, MySum: integer;
begin
  write ('Первое число: ');
  readln(a);
  write ('Второе число: ');
  readln(b);
  sum(a,b, MySum);
   write('‘Сумма 2 целых чисел равна=­  ', MySum);
end.
1
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
30.03.2023, 10:29  [ТС] 3
mr-Crocodile,
Признаюсь что это делала я, можете мне оторвать руки.
0
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
30.03.2023, 11:12 4
Lari76, не буду, если обещаешь так больше не делать!
Учись делать правильно и не учись делать плохо. И всё с ручками твоими будет в порядке!

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

Рекомендую такой "лайфхак" - всегда описывать переменные после всех функций и процедур, непосредственно перед главным begin (это тот begin, который завершается парным end с точкой - конец программы).
Тогда шансы случайно использовать глобальную переменную уменьшаются.
Обрати внимание, что я в своём втором примере перенёс описание переменных вниз. Вот я про это.

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

Вот, например, в твоём случае локальная переменная с тем же именем "перекрывает" видимость глобальной переменной, что и привело к тому, что программа не работала, хотя ошибок (синтаксических), в ней нет.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.04.2023, 10:16  [ТС] 5
mr-Crocodile,
Спасибо, у меня еще вопрос, я хочу чтоб этот результат который я получила (без добавление других процедур и функций) разделила на число которое я (пользователь) ввожу, как лучше это прописать чтоб опять не возникли проблемы с переменными?
0
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
07.04.2023, 11:20 6
Цитата Сообщение от Lari76 Посмотреть сообщение
(без добавление других процедур и функций)
это что означает, прости, не понял?

Цитата Сообщение от Lari76 Посмотреть сообщение
разделила на число которое я (пользователь) ввожу
Pascal
1
2
3
4
5
6
7
8
9
10
ReadLn(MyDivider);
.....
sum(a,b, MySum);
MySum := MySum div MyDivider; 
 
{можно и деление с плавающей запятой использовать, 
   но тогда нужно изменить тип переменной MySum на тип с плавающей запятой
    на Double, например: MySum : Double 
 
тогда можно написать MySum := MySum / MyDivider }
крайне желательно перед делением проверять число на ноль:
Pascal
1
2
if MyDivider<>0 then 
   MySum := MySum div MyDivider;   {MySum := MySum / MyDivider;}
если логически оправдано алгоритмом, то можно делить прямо в процедуре.
тогда в процедуру нужно передать не два значения, а три:

Pascal
1
2
3
4
5
Procedure SumAndDiv (n1, n2, n3: integer; var pRes : integer);
begin
  pRes := n1+n2;
  if n3<>0 then pRes := pRes / n3
end;
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.04.2023, 11:56  [ТС] 7
mr-Crocodile,
Спасибо что показали и объяснили как это можно сделать, по поводу без добавление других процедур и функций, я имела ввиду что в коде будет только одна процедура.(а деление должно произойти не в самой процедуре).
Извините что неправильно сформулировала текст.
0
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
07.04.2023, 12:04 8
Lari76, ничего, всё нормально. Главное, что разобрались вместе с твоим затруднением.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.04.2023, 12:25  [ТС] 9
Сейчас я на телефоне попробовала такой вариант деления (у меня так получилось что ноутбук перестал работать стабильно и он сейчас в ремонте), можете пожалуйста посмотреть на наличие ошибок?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Program Psum
Var Mysum: double; a,b:integer
procedure sum (n1, n2: integer; var pSum : integer);
begin
  pSum := n1+n2;
end;
 
var a,b, MySum: integer;
begin
  write ('Первое число: ');
  readln(a);
  write ('Второе число: ');
  readln(b);
  write ('Число для деления: ');
 readln (MyDivider);
sum(a,b, MySum);
   write('Сумма 2 целых чисел равна=­  ', MySum);
MySumDiv := MySum / MyDivider;
write ('Число деленная на'MyDivider 'равно':= MySumDiv);
end.
0
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
07.04.2023, 14:35 10
Лучший ответ Сообщение было отмечено Lari76 как решение

Решение

ошибки
1) нет точки с запятой в конце первой строки (и, кстати, можно уже вообще не писать строчку Program XXXX - она не несёт ничего полезного)

2) не описана переменная MySumDiv (явно во второй строчке ты её хотела описать, но опечталась)

3) не описана переменная MyDivider

4) дважды описаны переменные a b - до описания процедуры и в конце.

5) строчка write в 19 строке нет запятых, и точка-равно не в кавычках

И почему нет проверки на то, что ввели ноль? Не боишься делить на ноль?


И ещё, не ошибка совсем, но я бы рекомендовал все не глобальные переменные описывать перед основным begin (внизу, после описания процедур/функций...


итого, в сухом остатке
код
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
procedure sum (n1, n2: integer; var pSum : integer);
begin
  pSum := n1+n2;
end;
 
var 
  a,b, MySum, MyDivider: integer;
  MysumDiv : double;
begin
  write ('Первое число: ');
  readln(a);
  write ('Второе число: ');
  readln(b);
  write ('Число для деления: ');
  readln (MyDivider);
  sum(a,b, MySum);
  writeln('Сумма 2 целых чисел равна ', MySum);
  if MyDivider=0 then 
     WriteLn('На ноль делить нельзя')
  else begin
     MySumDiv := MySum / MyDivider;
     writeln ('Результат деления суммы на число ',MyDivider, ' равен ', MySumDiv);
  end;
end.
1
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
25.04.2023, 23:26  [ТС] 11
mr-Crocodile, Большое спасибо, можно еще вопрос?
Я попробовала также сделать код , но использовала использовала функцию выполняющие ту же задачу, что и процедура.
Возникла ошибка Operation is not overloaded : Constant string = SmallInt.
Не могу понять ,как исправить эту ошибку?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var x,y,c,s:integer;
function f(a,b:integer):integer;
begin
  f:= a+b;
end;
begin
 writeln('первое число:');
 readln(x);
 writeln('второе число:');
 readln(y);
 writeln('‘Сумма ',f(x,y));
 readln;
 writeln('число для деления:');
 readln(c);
  s:=f(x,y) div c;
  writeln('Деленная сумма '= s);
  readln;
  end.
0
594 / 914 / 149
Регистрация: 10.08.2015
Сообщений: 4,796
26.04.2023, 00:02 12
Pascal
1
writeln('Деленная сумма =', s);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2023, 00:02
Помогаю со студенческими работами здесь

Даны два целых числа A и B (A < B). Найти сумму синусов всех целых чисел от A до B включительно
НЕОБХОДИМО Найти сумму синусов всех целых чисел от A до B включительно .(Даны два целых числа A и B...

Найти сумму всех целых положительных чисел, больших 20, меньших 100 и кратных 3Найти сумму всех целых положительных чисе
Найти сумму всех целых положительных чисел, больших 20, меньших 100 и кратных 3. И выдать всю...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru