Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите написать прогу на паскале

Gomer Gomerius Ученик (127), закрыт 7 лет назад
Дано целое N - разрядное число. Поменять местами первую цифру с последней в записи числа. (Задача)
Написать нужно прогу на паскале, чтоб можно было менять местами цифры и отрицательные и положительные.
Дополнен 7 лет назад
Сразу говорю писал раз 100, получается только для положительных)
program Change;
var
s1, s2, s, k, n, i: Integer;
begin
Readln(n);
If n<=9 then writeln(n)
Else begin
k:=n;
i:=1;
while k<>0 do begin
k:=k div 10;
i:=i*10;
end;
i:=i div 10;
s2:= n div i;
s1:= n mod 10;
s:= (n mod i) div 10;
n:=s1*i + s2 + s*10;
If s1=0 then writeln('0',n) else writeln(n)
End;
end.
Дополнен 7 лет назад
Строчный вариант не подходит!!!
Циклами нужно)
Лучший ответ
Остальные ответы
Gennady Гений (60210) 7 лет назад
Если нет обязательного требования использовать операции целочисленного деления и получения остатка, то проще всего сделать преобразовав число в строку.

Затем анализируем первый символ. Если он "-", то меняем местами S[2] с S[Length(S)]. Если нет, то вместо S[2] берем S[1]. После всего этого преобразовываем строку обратно в число.

Если надо циклами :), то так

....
Readln(n);
Negative := n < 0;
n := Abs(n);
....
n:=s1*i + s2 + s*10;
if Negative then n := -n;
....

Negative - переменная логического типа.
Gomer GomeriusУченик (127) 7 лет назад
Строчный вариант не подходит, нужен цикл!
Gennady Гений (60210) Значит анализируется исходное число и если оно отрицательное, запоминается сей факт. Затем берется абсолютная величина и выполняются преобразования (вы говорите, что для положительных все работает). В конце если число было отрицательным умножаете его на -1. Вроде все.
Бегзод Джуманиязов Ученик (185) 7 лет назад
Нужно написать программу на паскале вот про что: найти в каждой строке матрицы максимальные и минимальные элементы и поместить их на место первого и последнего элемента строки соответсвтенно. Матрицу напечатать в общепринятом виде. N=20, M=10.
Т. к в паскале не селён прошу вашей помощи, простые задачи ещё сам могу написать, а эту не как не получается.
__________________
Саша Воробьев Ученик (9) 7 лет назад
Спроси у сообщество или форумах
Соколов Максим Мастер (1758) 7 лет назад
program prg;

function ChangeDigits(a: integer): integer;
var t, r, dgs: integer;
neg: boolean;
begin
if a < 0 then begin neg := true; a := -a; end // убираем знак
else neg := false;

t := 0;
dgs := 1; // разряды числа
r := a;
while true do begin // делим до первой цифры
r := r div 10;
if r = 0 then break;
t := r mod 10; // будет последней цифрой
dgs := dgs * 10;
end;

// переписываем все цифры, кроме последней
r := (a mod 10) * dgs; // старшая цифра нового числа
dgs := dgs div 10;
while dgs > 1 do begin
r := r + ((a div dgs) mod 10) * dgs;
dgs := dgs div 10;
end;
r := r + t; // последнюю цифру

if neg then r := -r; // возвращаем знак
ChangeDigits := r;
end;

var a, b: integer;
begin
readln(a);
b := ChangeDigits(a);
writeln(b);
end.
Соколов МаксимМастер (1758) 7 лет назад
Как вариант, можно и в вашем коде лишь дописать код, убирающий знак, и всё, что далее выполнить для положительного числа.

program Change;
var s1, s2, s, k, n, i: Integer;
begin
Readln(n);
if n<0 then begin write('-'); n:=-n end;
If n<=9 then writeln(n)
Else begin
k:=n;
i:=1;
while k<>0 do begin
k:=k div 10;
i:=i*10;
end;
i:=i div 10;
s2:= n div i;
s1:= n mod 10;
s:= (n mod i) div 10;
n:=s1*i + s2 + s*10;
If s1=0 then writeln('0',n) else writeln(n)
End;
end.
ZhenyaVyazovova Знаток (447) 7 лет назад
паскаль устарелый язык
Alihan Aryntai...Ученик (190) 7 лет назад
Почему устарелый? ты что новый язык создал?
Андрей Бильченко Ученик (194) 7 лет назад
Если работает только для положительных чисел, тогда и используй только положительные числа. abs() - модуль числа. В конце проверяй число > 0 или < 0 Если меньше умножай на -1 и выводи
devellopah Гуру (2560) 7 лет назад
function switchFirstWithLast(n) {
if(typeof n !== 'number' || Number.isNaN(n)) return 'Give me a number';
var s = n.toString();
if(s.length === 1) return Number(s);
var last = s.slice(-1),
first = s.slice(0, 1),
middle = s.slice(1, s.length - 1);
return Number(last + middle + first);
}

switchFirstWithLast(3465); // 5463
Alihan Aryntai... Ученик (190) 7 лет назад
изи же пишешь так
function switchFirstWithLast(n) {
if(typeof n !== 'number' || Number.isNaN(n)) return 'Give me a number';
var s = n.toString();
if(s.length === 1) return Number(s);
var last = s.slice(-1),
first = s.slice(0, 1),
middle = s.slice(1, s.length - 1);
return Number(last + middle + first);
}

switchFirstWithLast(3465); // 5463
Даниил Кульчинский Ученик (104) 7 лет назад
program Chanche;
var d1, d2, d3, d4, n, n2: integer;
begin
writeln (' Введите двузначное число ');
readln (n);
d1:=n mod 10;
d2:=n-d1;
d3:=d2 div 10;
d4:=d1*10;
n2:=d3+d4;
writeln (n2);
end.
Похожие вопросы