Как найти обратное число паскаль

Переворот числа

Просмотров 14.8к. Обновлено 26 сентября 2021

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

Если постепенно извлекать из первого числа последние цифры (и удалять их после этого из числа) и постепенно «дописывать» их в конец второго, то в итоге мы получим перевернутое первое число.

  • Для извлечения последней цифры числа надо найти остаток от деления его на 10.
  • Чтобы добавить цифру в конец числа, надо умножить число на 10 (сдвинуть разряды) и затем прибавить цифру-число (количество единиц).

Pascal

Язык Си

Python

КуМир

Basic-256

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

Здравствуйте, я, так сказать, новичок в программировании, но не суть, нужна ваша помощь
Суть задачи такова:
Для данного натурального числа найти обратное к нему и вычислить их сумму.
Например: для числа 1879 обратное 9781, а их сумма равна 11660.
Формат входных данных:
Входной файл INPUT.TXT содержит одно натуральное число N (1N10100).
Формат выходных данных:
Выходной файл OUTPUT.TXT должен содержать найденную сумму.

Написал программу, но не могу сделать сумму этих чисел (вывести обратное получилось), ниже код.

var
n,m:longint;
begin
writeln('введите целое число:');
readln(n);
M:=0;
while n>0 do begin
m:=m*10+(n mod 10);
N:=N div 10;
end;
writeln('полученное число:',M);
readln
end.

Как найти сумму двух чисел, уже и туда, и туда вставлял, вообще не понимаю)Помогите!)

Код к задаче: «Для данного натурального числа найти обратное к нему и вычислить их сумму»

textual

var
  n, m: String[101];
  i, c, d: Integer;
begin
  Assign(input,'input.txt'); Assign(output,'output.txt');
  Reset(input); Rewrite(output);
  ReadLn(n); m:=n; c:=0;
  for i:=Length(n) downto 1 do begin
    d:=Ord(n[i])+Ord(n[Length(n)-i+1])-2*Ord('0')+c;
    c:=d div 10; d:=d mod 10;
    m[i]:=Chr(d+Ord('0'));
  end;
  if c>0 then m:='1'+m;
  WriteLn(m);
end.

Полезно ли:

7   голосов , оценка 4.143 из 5

2 / 2 / 0

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

Сообщений: 272

1

Вывести число, противоположное заданному

26.01.2014, 15:45. Показов 12062. Ответов 11


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

Вывести число, противоположное заданному.
Входные данные:
Во входном потоке задано вещественное число А (-100000 <= A <= 100000).

Выходные данные:
В выходной поток вывести единственное вещественное число с точностью 4 знака после запятой.

Пример входного файла (input.txt):
4
Пример выходного файла (output.txt):
-4.0000



0



grikukan

66 / 66 / 54

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

Сообщений: 212

26.01.2014, 16:23

2

Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  a, b: real;
 
begin
  assign(input, 'input.txt');
  reset(input);
  assign(output, 'output.txt');
  rewrite(output);
  read(a);
  writeln(0-a);
end.



0



2 / 2 / 0

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

Сообщений: 272

26.01.2014, 16:32

 [ТС]

3

Ограничения [Время: 1000ms, Память: 128MB, Сложность: 1%]

Вывести число, противоположное заданному.
Входные данные:
Во входном потоке задано целое число А (-32768 <= A <= 32767)

Выходные данные:
В выходной поток вывести единственное целое число.

Пример входного файла (input.txt):
4
Пример выходного файла (output.txt):
-4

 Комментарий модератора 
Называйте темы осмысленно.



0



KOPOJI

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

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

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

Сообщений: 19,967

26.01.2014, 16:37

4

Pascal
1
2
3
4
5
6
7
8
program meaningful_title;
var
  n: Integer;
begin
  WriteLn('Введите n..');
  ReadLn(n);
  WriteLn(-n);
end;

На файлы сами переделайте



1



2 / 2 / 0

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

Сообщений: 272

26.01.2014, 16:45

 [ТС]

5

Получение файла:
Файл сохранен
Тип файла: sol/3060/Main.dpr: UTF-8 Unicode text, with CRLF line terminators
Длина файла: 122 byte
Сообщения компилятора:
Free Pascal Compiler version 2.4.4-3.1 [2012/01/04] for x86_64
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling Main.dpr
Main.dpr(8,4) Fatal: Syntax error, “.” expected but “;” found
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
Исполняемый файл не создан



0



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

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

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

Сообщений: 19,967

26.01.2014, 16:46

6

замените последнее “;” на точку



0



2 / 2 / 0

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

Сообщений: 272

26.01.2014, 16:50

 [ТС]

7

Получение файла:
Файл сохранен
Тип файла: sol/3060/Main.dpr: ASCII text, with CRLF line terminators
Длина файла: 166 byte
Сообщения компилятора:
Free Pascal Compiler version 2.4.4-3.1 [2012/01/04] for x86_64
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling Main.dpr
Main.dpr(2,6) Note: Local variable “b” not used
Linking Main
11 lines compiled, 0.1 sec
1 note(s) issued



0



66 / 66 / 54

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

Сообщений: 212

26.01.2014, 17:22

8

Ну а что Вам не нравится?



0



2 / 2 / 0

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

Сообщений: 272

26.01.2014, 17:25

 [ТС]

9

там гднто ошыбка



0



66 / 66 / 54

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

Сообщений: 212

26.01.2014, 17:26

10

Стоп.Так вы вводите с клавиатуры или с файла?



0



2 / 2 / 0

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

Сообщений: 272

26.01.2014, 17:30

 [ТС]

11

с клавиатуры



0



volvo

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32548 / 21023 / 8127

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

Сообщений: 36,295

Записей в блоге: 7

26.01.2014, 18:38

12

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

Решение

Цитата
Сообщение от некит434
Посмотреть сообщение

там гднто ошыбка

Ошибка и замечание – это очень разные вещи.

Pascal
1
2
3
4
5
6
7
var
  a: real;
 
begin
  read(a);
  writeln(-a:0:4);
end.



1



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

26.01.2014, 18:38

Помогаю со студенческими работами здесь

Число,противоположное данному
Напишите программу, которая считывает с клавиатуры одно дробное число и выводит обратное ему. Если…

Вывести число, обратное заданному
Помогите сделать

Числа Фибоначчи: вывести число по заданному n
При запуске программа просто-напросто вылетает, хотя скомпилирована успешно.
Может, бред написан,…

Дано три числа, если сумма их положительная, изменить второе число на противоположное
Дано три числа, если сумма их положительная, изменить второе число на противоположное.

Код…

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

Или воспользуйтесь поиском по форуму:

12

У меня проблемы с программой на паскале.

Мне нужно ввести число, а затем мне нужно, чтобы программа написала сложение обратного значения этого числа. Это должно быть примерно так: допустим, число 5 (n = 5), тогда мне нужно, чтобы моя программа записывала 1/1 + 1/2 + 1/3 + 1/4 + 1/5, и в результате этого добавления мне нужно использовать for,to,do, чтобы получить решение, так что если бы кто-то мог мне помочь, я был бы очень благодарен. Я пробовал что-то вроде этого:

 program reciprocaladdition;
 var x : integer:
 begin
 writeln('enter number');
 readln(x);
 for x:=1 to x do writeln(1/x:0:2)
 readln
end.

Но это не дает мне того, что мне нужно, так что если кто-то может мне помочь, я буду благодарен.

1 ответ

Лучший ответ

У вас есть пара опечаток:

Двоеточие после integer должно быть точкой с запятой; а также

Writeln нуждается в точке с запятой после него, потому что после него стоит другой оператор (readln).

Кроме того, он компилируется и отлично работает в Lazarus + FPC. В исправленной версии ниже я добавил код для вычисления и отображения суммы промежуточных значений.

program reciprocals;

var
  x : integer;
  Sum : Double;  //  a floating-point datatype

begin
  writeln('enter number');
  readln(x);

  Sum := 0;
  for x:=1 to x do begin
    writeln(1/x:0:2);
    Sum := Sum + 1/x;
  end;
  writeln('Sum: ', Sum:0:2);
 readln
end.           

Это производит вывод

enter number
3
1.00
0.50
0.33
Sum: 1.83

Делает ли это то, что вы хотите? Если нет, скажите, почему.


1

MartynA
10 Ноя 2019 в 18:08

Условие задачи: Написать программу, которая будет выводить запись числа в обратном порядке. Число вводит пользователь.

Сложность: легкая.

Естественно сначала стоит сказать как мы будем решать эту задачу. Мы воспользуемся операциями mod и div.

Информация div — находит целую часть от деления
mod — находит остаток от деления

Сразу примерчик. Допустим у нас есть число 234. Занесем его в переменную например number. Теперь применим к нему операцию mod чтобы оторвать от него последнюю цифру и эту цифру тоже занесем в переменную.

Выглядеть это будет так :

number :=
234
;
i := number
mod
10
;
{теперь в переменной i будет число 4}

Из этой переменной i мы и будем составлять наше число.

Создадим переменную для нашего перевернутого числа , пусть она называется conv , сокращенно от conversely что в переводе с англ. наоборот.

Смотрите что я сейчас сделаю :

conv :=
0
;
number :=
234
;
i := number
mod
10
;
conv := conv*
10
+ i ;

И что у нас получиться, если мы подставим 3? Переменная conv у нас и будет равняться 3. Еще осталось два числа. Нам нужно из переменной number убрать лишнее число, т.е. последнее, т.к. нам уже нужна следующая цифра.

Тут нам поможет операция div. Пишем :

number := number
div
10
;
{теперь тут будет число 23}

Вот код который у нас на данный момент :

number :=
234
;
i := number
mod
10
;
{теперь в переменной i будет число 4}
conv := conv*
10
+ i ;
number := number
div
10
;

Теперь нужно добавить цикл, чтобы эти операции выполнялись несколько раз, но сколько ? Они у нас будет выполняться пока наше число number будет иметь какие-то цифры, т.е. будет больше нуля.

Пишем :

number :=
234
;
while
(number >
0
)
do

begin

i := number
mod
10
;

conv := conv*
10
+ i ;

number := number
div
10
;

end
;

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

Весь код программы :

uses
crt;
var

number, conv, i :
integer
;
begin
write
(
'Введите число : '
); readln(number);
conv :=
0
;
while
(number >
0
)
do

begin

i := number
mod
10
;

conv := conv*
10
+ i ;

number := number
div
10
;

end
;
writeln
(
'Обратная запись числа: '
, conv);
readln;
end
.

Предыдущая

ПрограммированиеЗадачи по Pascal. Степень числа 3.

Следующая

ПрограммированиеЗадачи по Pascal. Первая цифра числа.

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