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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2009, 20:07   #1
bliz
 
Регистрация: 11.01.2009
Сообщений: 4
Восклицание Помогите решить на Паскале задачки

Доброго всем время суток
Помогите с задачками на паскале:
1.ЗАДАЧА НА МОДУЛИ.В основной программе найти сумму обратных дробей. (то есть cделать так чтобы модуль переворачивал дробь, а в основной программе ввести n-количество дробей и посчитать сумму обратных дробей.)
2.РЕШИТЬ С ПОМОШЬЮ РЕКУРСИ. Дано натуральное число. Проверьте, является ли оно палиндромом.
заранее Спасибо


Первая задача не работат может найдете ощибку(если канешно может вобще всё неправелно)
МОДУЛЬ:
unit droby;
interface
type
nat=1..high(longint);
frac=record
p:longint;
q:nat
end;
procedure perev(a:frac;var c:frac);
implementation
procedure perev;
begin
c.q:=a.p;
c.p:=a.q;
end;
begin;
end.
ОСНОВНАЯ ПРОГРАММА:
Uses droby;
type
nat=1..high(longint);
frac=record
p:longint;
q:nat
end;
Var a:array[1..100] of frac;
N,i:integer;
S:frac;
procedure summa(a,b:frac;var c:frac);
begin
c.q:= (a.q*b.q);
c.p:=a.p*b.q+b.p*a.q;
end;
Begin
Writeln;
Readln(n);
s.p:=0;s.q:=1;
for i:=1 to n do
begin
write; readln(a[i].p);
write; readln(a[i].q);
summa(a[i],s,s);
end;
writeln('сумма=',s.p,'/',s.q);
end.


Ко второй задаче написал программrу,но она без рекурсии.
var s:string; i:integer; x:boolean;
begin
readln(s);
x:=true;
for i:=1 to length(s) do
if s[i]<>s[length(s)-i+1] then x:=false;
writeln(x);
end.

Последний раз редактировалось bliz; 11.01.2009 в 21:48.
bliz вне форума Ответить с цитированием
Старый 11.01.2009, 21:09   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию 1 задачу сделал проще :) Не забудь отзыв!! xD

Это модуль:
Код:
unit droby;
interface
 function obr (a : real) : real;
implementation

 function obr;
 begin
   if a=0 then obr:=0
   else obr:=1/a
 end;

end.
А это программа, использующая этот модуль:
Код:
program prog;
uses droby;
var
 a : real;
 m, n : integer;
 sum : real;
begin
  sum:=0;
  repeat
    write ('Vvedite 4islitel'': ');
    readln (m);
    write ('Vvedite znamenatel'': ');
    readln (n);
    if n=0 then break;
    a:=m/n;
    sum:=sum+a+obr(a);
  until n=0;
    writeln ('Summa= ',sum:0:2);
    readln
end.
Если есть вопросы - обращайся - да и советую прочитать про структуру построения модулей - есть определенные правила писания модулей - почитай - у тебя есть недочеты в написании модуля

Последний раз редактировалось capta1n; 11.01.2009 в 21:51.
capta1n вне форума Ответить с цитированием
Старый 11.01.2009, 21:11   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Да и frac - Это одна из стандартных функций паскаля, возвращающая дробную часть от числа - ее нельзя использовать в своих названиях, как допустим у тебя она использована как имя записи
capta1n вне форума Ответить с цитированием
Старый 11.01.2009, 21:22   #4
bliz
 
Регистрация: 11.01.2009
Сообщений: 4
По умолчанию

Так проще ,но не совсем то, что мне надо. Я немножко неправильно постановку задачи написал. Мне нужно ввести n-количество дробей, в модуле перевернуть их, а в основной программе посчитать сумму, вот.

Последний раз редактировалось bliz; 11.01.2009 в 21:24.
bliz вне форума Ответить с цитированием
Старый 11.01.2009, 21:47   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

сча исправим за 15 секунд )
capta1n вне форума Ответить с цитированием
Старый 11.01.2009, 21:51   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

исправил ) чтобы выйти из цикла достаточно ввести знаменатель, равный нулю, что сразу убьет двух зайцев - мы избежим ошибки и выйдем из цикла )
capta1n вне форума Ответить с цитированием
Старый 11.01.2009, 22:04   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Вторая задача - прошу с отзывом
Код:
program lala;
var
n,m : string;
i : byte;

 function pp ( st : string; i : byte ) : string;
 begin
  if i=1 then pp:=st[1]
  else pp:=st[i]+pp(st,i-1)
 end;
begin
writeln ('vvedite 4islo');
readln (n);
m:=pp(n,length(n));
if m=n then
writeln ('palindrom')
else
writeln ('NE PALINDROM');
readln;
end.
capta1n вне форума Ответить с цитированием
Старый 12.01.2009, 06:37   #8
bliz
 
Регистрация: 11.01.2009
Сообщений: 4
По умолчанию

Проверил все две задачи всё робит, аш не верится, благодаря тебе теперь у меня есть допуск к экзамену.
Спасибо тебе добрый человек за помощь, с новым годом да хранит тебя жёлтый бык
bliz вне форума Ответить с цитированием
Старый 12.01.2009, 06:43   #9
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Отзыв не забудь! Для тебя важна решенная задача, а для меня - набор опыта, помощь людям и отзывы )))
capta1n вне форума Ответить с цитированием
Старый 12.01.2009, 08:17   #10
bliz
 
Регистрация: 11.01.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от capta1n Посмотреть сообщение
Отзыв не забудь! Для тебя важна решенная задача, а для меня - набор опыта, помощь людям и отзывы )))

Или чёта и меня глючит или с форумом неладное вроде дабавел отзыв, а репутации не прибавилось.
bliz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачки!!!! Jereme Паскаль, Turbo Pascal, PascalABC.NET 2 19.12.2008 20:45
Помогите решить 3 задачки... Goldberg Паскаль, Turbo Pascal, PascalABC.NET 8 08.11.2008 16:36
Помогите пожалуйста решить задачки в Паскале(Массив-Сортировка) VisTBacK Помощь студентам 1 14.10.2008 02:20
Помогите решить 2 задачки на С++ KnDmPetr Фриланс 3 11.03.2008 00:15