Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 2
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]
Модераторы: paradise, KMA
  

Krest Sasha


Новичок

Помогите плз
Дано натуральное число К.Определить является ли оно степенью числа 3, или нет.

Всего сообщений: 1 | Присоединился: декабрь 2008 | Отправлено: 11 дек. 2008 17:02 | IP
SneGG


Новичок

Здравствуйте. Есть вот такая вот задача:
Дано натуральное число N.
Вычислить: P=(cos1! + sin2!) * (cos3! + sin4!) *  ...  * (cos(n-1)! + sin(n)!)

И вот такое решение к ней:
program Unit_3;
uses WinCrt;
var
N,i:integer;
P,f:real;  {2*2+2*6=4+12= 16 байт}
begin
{Ввод исходных данных}
write('Введите N->> ');readln(N);
{Проверка на четность параметра N}
if ((N<2) or (N mod 2>2)) then
 begin
   writeln('N должно быть целым четным числом больше 2');
   exit;
 end;
P:=1; {Инициализируем мультипликатор}
f:=1; {Инициализируем переменную под значение факториала}
i:=2; {Счетчик}
while i<= N do
 begin
   f:=f*(i-1);              {Расчет факториала (N-1)!}
   P:=P*(cos(f)+sin(f*i));  {Умножаем на очередной член ряда}
   f:=f*i;                  {Расчет факториала  N!}
   i:=i+2;                  {Увеличиваем значение счетчика}
 end;
writeln('P = ',P:6:3);     {Вывод результата}
end.

Теперь суть: при P=(cos1! + sin2!) * (cos3! + sin4!) *.... работает, а препод задал вопрос, что надо сделать,чтоб работало при P=(cos1! + sin3!) * (cos3! + sin5!) *....
Как объяснила алгоритм не правильный, и работать не будет при изменении. А я же в свою очередь, в паскале не очень. И целью этого поста является не просто получить решение с новыми данными, а еще и понять что да как, и суметь толково объяснить это преподу, ибо по другому тут никак походу)))
Если нужно,то можно и ссылки скинуть на рассшифровку решения задачи и алгоритма. Заранее спасибо,если ответите)

(Сообщение отредактировал SneGG 11 дек. 2008 19:57)

Всего сообщений: 1 | Присоединился: декабрь 2008 | Отправлено: 11 дек. 2008 19:47 | IP
HosT



Новичок

Дан текст из 60  символов. Напечатать этот текст, подчёр-
  кивая  (ставя минусы  в  соответствующих  позициях следу-
  ющей строки) все входящие в него гласные.
program 9;
uses crt;
var str:string[60];
   str1:string[10];
   str2:string[60];
   str_:string;
   j,i,a,s,z,x,c,v,b,n,m:byte;
begin
clrscr;
str_:='_';
writeln('введите строку');
read(str);
str1:='яиюэоаыуе';
for i:=1 to 60 do
begin
 j:=1;
  repeat
   if str1      =str[j]
    then
     begin
      insert (str_,str2,i);
      j:=j+1;
      end;
  until j=length(str);
write (str1);
write (str_);
end;
end.


ошибка в строке    until j=length(str); не знаю че такое

(Сообщение отредактировал HosT 11 дек. 2008 20:02)


(Сообщение отредактировал HosT 11 дек. 2008 20:03)


(Сообщение отредактировал HosT 11 дек. 2008 20:04)


(Сообщение отредактировал HosT 11 дек. 2008 20:04)


(Сообщение отредактировал HosT 11 дек. 2008 20:04)

Всего сообщений: 5 | Присоединился: декабрь 2008 | Отправлено: 11 дек. 2008 20:01 | IP
HosT



Новичок

 if str1=str[j] вот так но не отображет чаго то

Всего сообщений: 5 | Присоединился: декабрь 2008 | Отправлено: 11 дек. 2008 20:05 | IP
HosT



Новичок

почему не отображеет после str1 номер символа на вашем форуме у меня там i в квадратных скобках

Всего сообщений: 5 | Присоединился: декабрь 2008 | Отправлено: 11 дек. 2008 20:06 | IP
KMA



Долгожитель

HosT в правилах все написано. Вообще надо вот так писать [ i ] или заменять другой буквой Просто это символ курсива в BBCode.

SneGG, твой алгоритм, конечно хорош, я не знаю, чего препод придрался.

Я так понял, ему нужен, совсем дебильный метод решения, типа подставь в формулу сразу факториал. Напишем небольшую функцию, которая будет считать значение факториала:

Code Sample:
 
function fact(n:byte):longInt;
var i: byte;
     r: longint;
begin
       r:=1;
       for i:=2 to n do
         r:=r*n;
       fact:=r;
end;




Тогда вся твоя задача, сведется к:
Code Sample:
 
P:=1; {Инициализируем мультипликатор}
f:=1; {Инициализируем переменную под значение факториала}
i:=1; {Счетчик}
f1:=fact(i);
while i<= N do
begin
  f2:=fact(i+2);
  P:=P*(cos(f1)+sin(f2));  {Умножаем на очередной член ряда}  
  i:=i+2;
  f1:=f2;                  {Увеличиваем значение счетчика}
end;



И изменяй как хочешь... ОДНАКО, счет при таком алгоритме, будет куда дольше, чем при твоем (хотя я здесь и постарался, кое-как оптимизировать, введя переменные, чтобы не считать два раза один и тот же факториал) Кроме того, тебе никто не мешает, не вводить этих двух переменных, тогда а бухнуть зависимость сразу в выражение с P.

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

P.S. Для самых умных, кто захочет критиковать. Я знаю, как решается эта задача через рекурсию, и о преимуществах я и сам с вами долго поспорю Просто объяснять человеку нужно доступнее

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 13 дек. 2008 1:41 | IP
Roman4eg



Новичок

Здрасте,помогите решить пожалуйста 2 задачки,я так понимаю они очень лёгкие,но я ту тему вообще не понял,и так вот они:
Задачи решить при помощи цикла с параметрами.
1)Дан список оценок 10 учеников,подсчитать кол-во сдавших экзамен и кол-во не славших
2)Найти произведение натуральных чисел,кратных 3.
Зарание спасибо


(Сообщение отредактировал Roman4eg 13 дек. 2008 11:22)

Всего сообщений: 2 | Присоединился: декабрь 2008 | Отправлено: 13 дек. 2008 9:59 | IP
konfetka


Новичок

учусь на гуманитарном факультете, поэтому с программированием совсем плохо. помогите решить две простенькие задачи. заранее спасибо)
1. Дана строка. удалить из нее лишние, т.е несколько подряд идущих пробелов, оставляя только один.
2. Дана строка. определить сколько раз встречаются в ней двухсимвольные сочетания.

Всего сообщений: 1 | Присоединился: декабрь 2008 | Отправлено: 13 дек. 2008 20:27 | IP
KMA



Долгожитель


учусь на гуманитарном факультете, поэтому с программированием совсем плохо. помогите решить две простенькие задачи. заранее спасибо)
1. Дана строка. удалить из нее лишние, т.е несколько подряд идущих пробелов, оставляя только один.
2. Дана строка. определить сколько раз встречаются в ней двухсимвольные сочетания.[/qoute]

Задачи разбирались на форуме. Тем более это классические задачи на строки. Их решений миллион можно найти и в интернете.

Поэтому внешняя ссылка удалена тебе в помощь.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 13 дек. 2008 23:11 | IP
Roman4eg



Новичок

А мне как быть?=(
KMA подскажешь может )

Всего сообщений: 2 | Присоединился: декабрь 2008 | Отправлено: 14 дек. 2008 7:36 | IP

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]

Форум работает на скрипте © Ikonboard.com