Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
Lord_of_Darkness сори там в у словии есть еще оговорка.
Цитата:
Одна дискета соит 11р 50к. Коробка содердит 12 дискет и стоит 114р. 50 к. Ящик содержит 12 коробок и стоит 1255р. Надо купить N дискет заплатив за это меньшую стоимость.
Известно что если надо купить 11 дискет выгоднее купить 1 корубку чем 11 дискет.
Lord_of_Darkness Блин, вот косяк... Как это работало, не пойму... Вот, поправил:
Код:
Function Divide(Y, X : String) : String; var digit, z, num, i : Integer; X1, result : String; begin If More(X, Y) then begin Divide := '0'; Exit; end; X1 := X; While not More(X1, Y) do X1 := X1 + '0'; Delete(X1, Length(X1), 1); If Length(X1) = Length(Y) then num := Length(Y) - Length(X) + 1 else num := Length(Y) - Length(X); result := ''; For z := 1 to num do begin X1 := X; For i := 1 to num-z do X1 := X1 + '0'; digit := 0; While not More(X1, Y) do begin Y := Sub(Y, X1); Inc(digit); end; result := result + ChrDigit(digit); end; Divide := result; end;
ЗЫ. Числа "нормальные", а не "перевёрнутые". Это я с другим попутал.
begin clrscr; write('Floppy count N = '); readln(N); CaseFDD := N div (CaseFDDCnt*BoxFDDCnt); BoxFDD := (N - CaseFDD*CaseFDDCnt*BoxFDDCnt) div BoxFDDCnt; FDD := N - CaseFDD*CaseFDDCnt*BoxFDDCnt - BoxFDD*BoxFDDCnt; if FDD*FDDCost>=FDDBoxCost then begin FDD:=0; BoxFDD:=BoxFDD+1; end; if BoxFDD*FDDBoxCost>=FDDCaseCost then begin BoxFDD:=0; CaseFDD:=CaseFDD+1; end; writeln(CaseFDD,' FDD Cases, ',BoxFDD,' FDD Boxes, and ',FDD,' FDD''s'); write('Cost = ',CaseFDD*FDDCaseCost+BoxFDD*FDDBoxCost+FDD*FDDCost:10:2,'RUR'); readln; end.
DarkEdem писал(а):
А я весь инет облазил, не смог найти как AND использовать нормально
зачем лазить неивестно где, если в прилепленном посте наверху есть ссылка на учебник по паскалю? Добавлено спустя 1 минуту, 34 секунды и index в BP тоже не просто так существует.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Пусть есть некоторое натуральное число. Найти сумму квадратов чисел это числа, получив новое число, а с этим новым числом проделать аналогичную процедуру. После конечного числа повторений этой процедуры получается либо число 1 либо число 4. На промежутке [1...N] найти числа и их колво, которое по завершению вышеописанной процедуры дают результат 1. (N<=30000)
Последний раз редактировалось Luga 22.10.2006 2:14, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 30.01.2006 Откуда: Минск
Вроде так получается.
Код:
var n,s,i,j,t:integer; begin write('Enter n='); readln(n); s:=0; for i:=1 to n do begin j:=i; while (j<>1) and (j<>4) do begin t:=j; j:=0; while t>0 do begin j:=j+sqr(t mod 10); t:=t div 10; end; end; if j=1 then begin writeln(i); inc(s); end; end; writeln(s); readln; end.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
ну и я выложу, раз уж написал
Код:
uses crt;
function DecompNum(num: integer): integer; var sum: longint; tnum: longint; begin if num=0 then DecompNum:=0 else begin tnum:=abs(num); repeat sum:=0; repeat sum:=sum+sqr(tnum mod 10); tnum:=tnum div 10; until tnum=0; tnum:=sum; until (sum=1) or (sum=4); DecompNum:=sum; end; end;
var i, N: integer; begin clrscr;
write('N = '); readln(N); writeln('Results:'); for i:=1 to N do if DecompNum(i)=1 then write(i,'; '); readln; end.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
E1dar
№1
Код:
uses crt; var x, t: real; zero: boolean; i, mlt: integer; begin clrscr; x:=4.222; mlt:=10; zero:=false; for i:=1 to 3 do begin t:=trunc(x*mlt) mod 10; mlt:=mlt*10; if t=0 then zero:=true; end;
if zero then write('Zero was found') else write('Zero not found');
readln; end.
№2
Код:
uses crt; const n = 3; var BrickParam: array [1..3] of real; {a, b, c} x, y: real; i, j: integer; compatible: boolean; begin clrscr; compatible:=false;
for i:=1 to n-1 do for j:=i+1 to n do if ((BrickParam[i]<=x) and (BrickParam[j]<=y) or (BrickParam[i]<=y) and (BrickParam[j]<=x)) then compatible:=true;
if compatible then write('Brick is compatible with hole') else write('Brick is not compatible with hole');
readln; end.
№4
Код:
uses crt;
function f(a:real):real; var arg: real; begin arg:=a - round(a/2)*2; f:=-sqr(arg)+1; end;
var x: real; begin clrscr; x:=-4.0; write('f(',x:5:2,') = ',f(x):5:2); readln; end.
3-е вообще не понимаю чего надо и что к чему относится, короче мрак какой-то. Объясни подробнее.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Последний раз редактировалось Lord_of_Darkness 24.10.2006 14:18, всего редактировалось 4 раз(а).
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
E1dar что-то странное это задание очень. Да и чисел там не 180, а 90 получается.
Чисто по описанию выходит так:
Код:
uses crt; var k, i, x: integer; begin clrscr; write('k = '); readln(k); if (k mod 2) = 0 then x:=trunc((0.9+0.1*(k div 2))*10) mod 10 else x:=trunc(0.9+0.1*(k div 2)); write('number is ',x); readln; end.
но смысл такого задания для меня загадка...
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
E1dar не надо мне объяснять, я и так прекрасно понимаю сколько чисел и сколько позиций. Я не понимаю смысла этого задания. Оно похоже на самодурство особо "умного" препода.
E1dar писал(а):
А можешь объяснить с функцией (№4)? не понял что там вообще делается
#77 на интервале -1..1 она задана некой формулой, раз период у нее 2, значит дальше она повторяется. Нужно просто привести заданный аргумент к интервалу -1..1 и посчитать значение функции. Берем остаток от деления аргумента на 2 (отбрасываем полные периоды), потом двигаем на -1 или на 1 в зависимости от знака аргумента. Понятно?
PS я эту поправил, она была немного некорректной. Теперь все нормально работает.
Добавлено спустя 8 минут, 16 секунд MW! с первыми двумя картинками какой-то косяк. они не грузятся.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Последний раз редактировалось Lord_of_Darkness 24.10.2006 14:20, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 30.01.2006 Откуда: Минск
MW! 1
Код:
{$N+} var x,y,y2,eps:extended; num:integer; begin write('Enter x='); readln(x); write('Enter error eps='); readln(eps); y:=x/2; repeat y2:=y; y:=0.5*(x+y*y); until abs(y-y2)<eps; num:=0; while eps<1 do begin inc(num); eps:=eps*10; end; writeln('Limit:',y:num+2:num); readln end.
Насчет второго- точно такое условие? Если да, то эта сумма равна m*sin((1/x)^n), смысл её в цикле как сумму считать? По идее, там как-то должно быть
задействовало j.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
MW! №2
Код:
uses crt; var x, A, B, dx, sum, max : real; i, j, n, m: integer; begin clrscr; write('A = '); readln(A); write('B = '); readln(B); write('n = '); readln(n); write('m = '); readln(m); dx:=abs((A-B)/9); x:=A; for i:=1 to 10 do begin sum:=1; for j:=1 to n do sum:=sum*1/x; sum:=m*sin(sum); if i=1 then max:=sum else if sum>max then max:=sum; writeln('sum[',i,'] = ',sum:5:2); x:=x+dx; end; writeln('max = ',max:5:2); readln; end.
Alex12 там ведь еще максимум найти нужно, так что вложенных циклов не избежать.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Дан текст. Если слово чётной длины - вставить в его середину "-".
Я написал программу, немного попотрошив преподавателя.... Но чего-то должным образом не работает:(...
Всё пересмотрел, уже вешаться собрался...
Код:
Program PR6; USES CRT; Const S1='-'; Var S:string; D,i,K,n,R:integer; c:char; Begin clrscr; Read(S); For i:=1 to Length(S) do If (S[i]=' ') and (S[i+1]<>' ') then Begin K:=i; n:=0; While (S[n]=' ') and (S[n+1]<>' ') do If Length(S) mod 2=0 then Begin D:=Length(S); R:=D div 2; insert(S1,S,R) End; n:=n-1; End Else read(S); Writeln(S); C:READKEY; End.
Я вообще не пойму, зачем здесь нужен "K", но препод сказал "надо".
Знающие люди, скажите, у меня незначительная ошибка, или ошибка "в ДНК", Все перебивать прейдётся?
Спасибо.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
-=DIN=-
зачем такие бешеные отступы? делай поменьше.
Вобщем накрутил ты там здорово, ошибок логических куча, объяснять не буду. Должно быть так:
Код:
Program PR6; USES CRT; Const S1='-'; Var S:string; D,i,K,n,R:integer; c:char; Begin clrscr; {Read(S);} S:='slovo1 and slovo2 a slovo3';
n:=1; K:=0; while (i<=Length(S)) do begin If ((S[i]=' ') and (S[i+1]<>' ')) or (i=Length(S)) then Begin if (i-1) > n then begin if i=Length(S) then inc(i); if ((i-n) mod 2) = 0 then begin insert(S1,S,n+((i-n) div 2)); inc(K); end; end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения