Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2008, 17:45   #1
polukrovka
Пользователь
 
Аватар для polukrovka
 
Регистрация: 20.08.2007
Сообщений: 10
Вопрос Помогите решить две задачи

1)Дано целое число N. Определить, является ли оно палиндромом (например, число 2332) без использования
строковых типов.

2)В квадратной целочисленной матрице A переставить элементы главной и побочной диагоналей относительно вертикальной оси.

PS: Заранее спасибо!
polukrovka вне форума Ответить с цитированием
Старый 21.10.2008, 18:59   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
№1.
uses crt;
var N,M:longint;
    i,k:integer;
    b:array[1..10] of byte;
begin
clrscr;
write('Vvedite naturalnoe chislo N=');
readln(N);
M:=N; {запоминаем число}
k:=0;
while M>0 do {пока число больше ноля}
  begin
    i:=M mod 10;{отделяем последнюю цифру}
    k:=k+1;  {считаем}
    b[k]:=i;  {заносим в массив}
    M:=M div 10;{пишем число без последней цифры}
  end;
for i:=1 to k do
M:=M*10+b[i];  {собираем цифры в новое число}
if M=N then write('Palindrom')
else write('Ne palindrom');
readln
end.

№2.
uses crt;
var a:array[1..10,1..10]of integer;
    n,i,j,x:integer;
begin
clrscr;
write('n=');readln(n);
writeln('Ishodnyj massiv:');
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         a[i,j]:=10*i+j;
         write(a[i,j]:4);
       end;
     writeln;
   end;
for i:=1 to n do
   begin
     x:=a[i,i]; {простой обмен заданных элементов [i,i]-главная диагональ}
     a[i,i]:=a[i,n-i+1];  {[i,n-i+1] - побочная диагональ}
     a[i,n-i+1]:=x;
   end;
writeln('Rezultat:');
for i:=1 to n do
   begin
     for j:=1 to n do
     write(a[i,j]:4);
     writeln;
   end;
readln
end.
puporev вне форума Ответить с цитированием
Старый 22.10.2008, 00:31   #3
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

2.
Код:
uses crt;
const n=5;
var a: array [1..n,1..n] of integer;
i,j :integer;
begin
clrscr;
for i:=1 to n do
for j:=1 to n do
a[i][j]:=random(10);
writeln('Do');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i][j],' ');
  writeln;
 end;
for i:=1 to n do
 begin
 a[i][i]:=a[i][i]+a[i][n-i+1];
 a[i][n-i+1]:=a[i][i]-a[i][n-i+1];
 a[i][i]:=a[i][i]-a[i][n-i+1];
 end;
writeln('Posle');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i][j],' ');
  writeln;
 end;
end.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 22.10.2008, 07:45   #4
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

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

Код:
var n,m,k:longint;
begin
  readln(n);
  m:=n;k:=0;
  while m<>0 do
    begin
      k:=k*10+m mod 10;
      m:=m div 10;    
    end;
  //writeln(k);
  if n=k then writeln('Полиндром')
         else writeln('Не полиндром');
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 22.10.2008, 11:06   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
без использования
строковых типов.
Строковый тип это например String, а его я не использовал, хотя с ним проще, прочитал строку сзаду наперед и сравнил с исходной. По существу решения с Вами согласен.
puporev вне форума Ответить с цитированием
Старый 22.10.2008, 11:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Plague
а строки это и есть массив.
нет, это не так. Вы не правы.
Хотя решение у Вас безусловно красивее и эффективнее! :-)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2008, 11:36   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
а строки это и есть массив.
Согласен, но отсюда не следует что любой массив есть строка.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите решить две задачи очень надо! Sabber Паскаль, Turbo Pascal, PascalABC.NET 6 22.10.2008 13:57
помогите решить две задачки Виталька Помощь студентам 13 13.06.2008 11:56
Помогите решить две задачи на С/С++ Сема Помощь студентам 3 24.12.2007 07:31
Помогите решить две задачи с массивами SHiZiK Помощь студентам 3 21.12.2007 10:01
Помогите решить две задачи! очень прошу... DmT Фриланс 1 23.10.2007 23:19