15:27

Неизвестный смайлик.
программирование в Паскале

@темы: Программирование (тема закрыта

Комментарии
29.01.2007 в 23:44

Скажу по секрету, Robot тоже мечтает занятся программированием. Так что, если вы тут начнете я берусь помочь).

П.С. а тебе до какого надо?
29.01.2007 в 23:52

В первой я не пойму в чем проблема

При вводе тебе надо проверять на соответствие типа переменную. пусть N -это введенное число

Ну а дальше организовываешь цикл от 2 до N (for i:=2 to N do)

и выводишь только те числа которые делятся на i без остатка (if (N mod i)=0 then writeln(i)

можно еще количество делителей счиать.
29.01.2007 в 23:56

Я одна, но всё же я есть. Я не могу сделать всё, но всё же могу сделать что-то. И я не откажусь сделать то немногое, что могу (c)
#Free world#

По секрету всему свету... Эх..

А время? Где взять время?! Я ж тебе говорила...

И потом мы с Паломником оптимизма в разных часовых поясах - когда у него утро, у меня уже ночь...
29.01.2007 в 23:58

Наверно как проверять не понятно?

Мне долго сейчас лазить по хелпам, могу рассказать алгоритм

При вводе переменная проверяется на правильность типа. т.е. если у тебя integer а ты введешь real то прогамма выдаст ошибку и прекратит выполнеение. Можно запретить это делать автоматически, а сделать это вручную.

эмм наверно попрежнему не понятно? ладно поищу пример в хелпе

30.01.2007 в 04:15

Неизвестный смайлик.
#Free world# Вот программа:



program deliteli;

var a, b, s : real;

k, n : integer;

begin

repeat

writeln ('Vvedite chislo (bolshe nula i cseloe): ');

readln (a);

b := frac(a)

until (a > 0) and (b = 0)

for k := 1 to n:= a do

begin

s := frac (a/k);

if s = 0 then writeln (k);

end;

end.



Блок repeat - until проверка входных данных. Именно поэтому "а", т.е. вводимое начальное число должно быть и отрицательным и не целым. Т.е. я ему присвоил Реал. Здесь то все нормуль. Но потом, когда идет просчет всех чисел от к := 1 до а, "а" здесь обязано быть целым! А как я к целому присвою вещественное? Диапазоны разные не поместятся. =(

Если бы убрать проверку "а" запихнуть в интегр, то программа работает. (правда, там еще надо условие про 1 и само число, но это легко)



Мне главный геморой - последняя третья задача.
30.01.2007 в 04:16

Неизвестный смайлик.
А про сроки.... Ну вообще-то хотелось бы сессию побыстрее закрыть так что чем быстрее тем лучше =)
30.01.2007 в 05:49

Неизвестный смайлик.
#Free world# Все. Проблема искоренена на корню =) Я забыл, что есть такая штука как round =)
30.01.2007 в 07:03

Неизвестный смайлик.
Вот первая задача:



program deliteli;

var b, s : real;

a, k, n : integer;

Begin

{Блок проверки входных данных}

repeat

writeln ('Vvedite chislo (bolshe nula i cseloe): ');

readln (a);

b := frac(a);

until (a > 0) and (b = 0);

{Сама программа}

n := round (a - 1);

for k := 2 to n do

Begin

s := frac(a/k);

if s = 0 then writeln(k);

end;

end.



А вот вторая задача:



program rekursia;

var x : real;

f : comp;

{Рекурсия}

function fact(x : real) : comp;

const num : word = 0;

begin

inc(num); writeln(num);

if (x <= 10e-6) then fact := 0 else

if (x = 0) or (x = exp(1)) then fact := 1

else fact := ln (x) + fact (ln (x));

end;

{Обращение к фунции}

begin

writeln('Vvedite x: ');

readln (x);

f := fact(x);

writeln (f:7:3);

end.



Так вот. Вторая программа вроде, что-то считает =) Но почему-то все значения исключительно целые. ПОЧЕМУ?

30.01.2007 в 07:07

Неизвестный смайлик.
Я дурак товарищи.

Написал, блин, comp и еще спрашиваю почему целое =)

Так что вторая задача тоже ушла в утиль, только скажите мне что это за рекурсия и обьясните почему она именно такая?
30.01.2007 в 11:22

что, именно такая?

Рекурсия это алгоритм в котором функция или процедура обращается сама к себе. Иногда незаменимая вещь.

В твоей программе я не вижу выхода из расчетов, функция зациклюется сама на себе. Может огрничешь количество обращений до какого-то значиние счетчика num? А ты уже пробывал компилировать? Почему у тебя num объявлена как константа?



А понял в чем дело твоя функция зациклюется при первом же обращении, а те целые числа что ты видишь это значения num.

30.01.2007 в 11:23

comp это вещественный тип если мне пять не изменяет
30.01.2007 в 11:29

Неизвестный смайлик.
#Free world# Нее все не так =)

num - это я вообще сделал для того что бы показано было колличество прохождений рекусивного потока.

Пробывал я компилировать - программу уже доработал всеми примочками (типа зависающего экрана) и т.п. Все работает. Мне бы ТРЕТЬЮ ЗАДАЧУ =(

ЗЫ comp то вещественный тип, но включает в себя только целые числа.
30.01.2007 в 11:31

Неизвестный смайлик.
Ах, да. На счет рекурсии, я ж написал, что рекурсия бывает трех видов: спуск, возврат, спуск-возврат. Какая в данном случае это рекурсия и почему?
30.01.2007 в 14:17

Я одна, но всё же я есть. Я не могу сделать всё, но всё же могу сделать что-то. И я не откажусь сделать то немногое, что могу (c)
Паломник Оптимизма

Просьба большая (я сейчас и в правилах это напишу) - не редактировать выложенные задания и не удалять их после выполнения. Может пригодиться другим, понимаешь? Например, первая программа... Лучше оффтопом жирно написать "Программа написана. Помощь по первому заданию не требуется"
30.01.2007 в 14:19

Неизвестный смайлик.
Robot Оки. Востановить?

Я сейчас таки со скрипом и лязгом вроде что-то вырисовывается по поводу третьей программы (на вас бяк даже надеяться не стоит =) ) решение потом выложить?
30.01.2007 в 14:28

Я одна, но всё же я есть. Я не могу сделать всё, но всё же могу сделать что-то. И я не откажусь сделать то немногое, что могу (c)
Паломник Оптимизма

Я думаю, восстановить. И решение, если можешь, выложи, пожалуйста. Спасибо заранее большое.

Бяка я , бяка, честно признаюсь, полный ноль в программировании. Каждому - свое))
30.01.2007 в 16:35

Неизвестный смайлик.
Меня это зае.... Просто в усмерть. Ну что этому нисчастному компилятору не нравится???

30.01.2007 в 16:47

Блин коммент не добавился или добавился но не там.

Повторюсь Паломник Оптимизма, не хочешь занятся программированием контроллеров на ассемблере и Си?

интересная вещь.



Выложи листинг программы которая не получается и номер ошибки компилятора. помогу чем смогу.

по третей задаче я сегодня полистаю букварь, с файлами практически никогда не работал
30.01.2007 в 16:48

Неизвестный смайлик.
#Free world# Я задачу выложил. И все расписал - в самом посте посмотри.
30.01.2007 в 17:09



readln (b);

--------------------------------------

seek (mainfile, b); Это что, так и в программе написано?

30.01.2007 в 17:47

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

Вот смотри:

seek (mainfile, b); ты поставил маркер в положение b+1 (нумерация начинается с нуля)

read (mainfile, f); теперь он сместился на единицу

write (mainfile, v); теперь записываем значение но на 2 ячейки правее

31.01.2007 в 03:55

Неизвестный смайлик.
#Free world# и чаво делать-то? =)
31.01.2007 в 04:13

чаво чаво, маркер ставить куда тебе нужно каждый раз перед запиьсю или чтением непосредственно

или как-то учитывать это
31.01.2007 в 04:31

Неизвестный смайлик.
#Free world# спасибо =)
31.01.2007 в 04:31

Неизвестный смайлик.
ФФФФФФФФФФФФФФФФФСЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ
31.01.2007 в 04:41

Неизвестный смайлик.
#Free world# вот почему в исходниках не написано, что маркер автоматически перескакивает на следующий? Я бы блин вчера бы еще сделал. А то три часа сидел тупил - что не так, почему не хочет...
31.01.2007 в 04:45

не знаю (пожимает плечами)

просто отлаживай программы по-шагово, а не всю сразу



П.С.

Я у тебя про контроллеры спрашивал

ты я так понимаю программист?
31.01.2007 в 04:51

Неизвестный смайлик.
#Free world# я еще учусь =) Куда мне...

А про контролеры. Я единственно, что знаю так это то, что асамблер - це язык программирования на который мой брат зело страшно ругается (не знаю правда почему), а про контролеры вообще ничего не знаю поэтому, что ответить.. =)

А на счет Си... Если посмотреть вправо то я увижу книжный шкаф в человеческий рост забитый книгами. Так вот тот уровень который как раз на уровне моей головы (в положении сидя) - полностью состоит из книг по Си++ и все возможных по ним вариаций. По прикидкам около полусотни штук =)
31.01.2007 в 05:00

Ну не стоит так пугаться.

микроконтроллер -- это такой маханький компьютер, в спичечный коробок с десяток влезит.

Ассемблер ну да трудноват в понимании чуток. Но можно и на Си и даже без ++ обычный Си он как и Паскаль

и компилятор такой же турбоС



программировать контроллеры может и школьник. Лишбы голова на месте стояли, ну и чуток руки прямые.



Ладно будет интересно скажешь.

31.01.2007 в 05:04

Неизвестный смайлик.
#Free world# мне уже интересно =)) Ты хоть бы сказал, что за контроллеры. Что они из себя представляют. Зачем нужны? Как програмируются? Как выглядят? Где применяются? Ну и т.д. =)