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
|
|
|