Katya Grodno
Удален
|
Помогите, ПОЖАЛУЙСТА, еще написать задачку на Паскале: ОПРЕДЕЛИТЬ КОЛ-ВО ПОВТОРОВ КАЖДОЙ ЦИФРЫ ОТ 0-9 В ЧИСЛЕ N В СТЕПЕНИ N (N<= 1000). Я понимаю, что число N в степени N должно быть представлено не как обыкновенное число, а как массив, из которого нужно будет отслеживать кол-во повторов той или иной цифры. Но как это сделать???
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 19 янв. 2007 16:46 | IP
|
|
sssuuupppeeerrr
Удален
|
Всем привет!!!Подскажите, пожалуйста, как решить задачу. Задан массив a[1 .. n] из натуральных чисел. Для заданного натурального числа определить можно ли его представить суммой элементов массива. Каждый элемент массива может входить в сумму только один раз. (Замечание: сумма может состоять из одного слагаемого)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 19 янв. 2007 21:47 | IP
|
|
KMA
Долгожитель
|
Katya Grodno, в общем то самый лучший вариант это все преобразовать в строку, а потом запустить цикл от 1 до length (s); Далее сравнивать if s{i}=1 then inc(n1); if s{i}=2 then inc(n2); ... if s{i}=9 then inc(n9); Мысль такая, вполне оправдана, простой перебор. Как это исполнить да очень просто, возводишь n в степень n и все преобразуешь это все в строку =). Поможет тебе в этом процедура str (n, s), которая преобразует число n в строку. Zolti я от тебя ничего не хочу, номер моей аськи надо переводить в десятиричную систему =) Вот, а если хочешь, чтобы тебе помогли, то выкладывай или код, или хотя бы мысли. sssuuupppeeerrr а есть у тебя у самой какие-нибудь мысли? Выкладывай.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 янв. 2007 0:03 | IP
|
|
sssuuupppeeerrr
Удален
|
Вот все, что смог написать. Ребят, помогите, а то завтра экзамен!!! Спасибо. Uses crt; const n=5; Var i,b,j,k,z:integer; a,c:array[1..100] of integer; f:boolean; sum:real; BEGIN write('Danniy massiv '); for i:=1 to n do begin write('a[',i,']='); readln(a); write(' '); end; for i:=1 to n do for j:=1 to (n-i) do begin if a>a[i+1] then begin k:=a; a:=a[i+1]; a[i+1]:=k; end; end; write('vvedennoe chislo= '); readln(b); sum:=0; f:=true; for j:=1 to n do for i:=1 to n do begin if b=a then begin f:=true; break; end else begin f:=false; repeat sum:=sum+a; i:=i+1; until(sum<>b) or (i<>5); end; end; writeln; if f=true then begin write('mogno'); end else begin if sum=n then write('toge mogno') else write('nelyzya'); end; END. (Сообщение отредактировал sssuuupppeeerrr 20 янв. 2007 13:56)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 20 янв. 2007 13:53 | IP
|
|
KMA
Долгожитель
|
Бууу, вообще ужас =( Массив состоит из 100 элементов, ты ведь задолбаешься вводить. Хм, да и выводить тоже =) Здесь простыми методами не решить. В общем все дело состоит в сравнении. Ты вначале упорядочиваешь массив потом отсекаешь все элементы, которые больше твоего, потом уже смотришь вначале по следующему алгоритму. Берешь последний элемент, который меньше первоначально твоего числа в этом массиве... да что я распинаюсь. Вообще задача относящаясь к олимпиадным, ее решить уже как-то здесь пробовали, но никто не смог, я предложил алгоритм, но все меня дружно послали =) Т. к. все думают, что есть решение проще. Может оно и есть, но я предлагаю таким методом. Выкладываю код, но только потому, что ты сам старался и задача более или менее интересная. const n=5; type mas=array [1..n] of integer; Var a: mas; b, buf: integer; j, i: byte; flag: boolean; function func (m, sum: integer; fExit: boolean): boolean; begin if not (fExit) then if m=0 then func:=false else begin repeat m:=m-1; if (a[m]<=sum) then begin if ((sum-a[m])=0) then fExit:=true; fExit:=func (m, sum-a[m], fExit) end; until (m=0) or (fExit); func:=fExit; end else func:=true; end; BEGIN {вводим} for j:=1 to n do begin write('[', j, ']='); readLn (a[j]) end; write ('Chislo ->'); readLn (b); {сортируем} for i:=1 to n-1 do for j:=1 to (n-i) do begin if a[j]>a[j+1] then begin buf:=a[j]; a[j]:=a[j+1]; a[j+1]:=buf end; end; {Начинаем отсекать, ведем поиск номера элемента массива, который первым с конца будет меньше или равен заданному числу (ведь элементы большие нас не интересуют, из них суммы не получиться)} j:=n; while (a[j]>b) and (j<>1) do j:=j-1; {Суть такова. Берем первый элемент с конца (он будет максимальным), вычитаем его из суммы, эту сумму сравниваем со вторым с конца, если элемент меньше этой суммы то вычитаем его и суммы и продолжаем сравнивать с третим с конца, если больше, то сразу сравниваем с третьим оставшуюся сумму ну и т. д. Итак мы проверим есть ли с последним с конца сумма остальных любых других членов, которые бы образовывали заданную сумму. Значит на это число укорачиваем массив. Опять из заданного числа вычитаем последний элемент, оставшуюся сумму сравниваем с предпоследним, если сумма больше, то вычитаем, если нет, то сравниваем со 2 с конца и т. д. В общем рекурсия сложно объяснить, сдесь надо понять. } flag:=false; repeat if (a[j]<=b) then begin if ((b-a[j])=0) then flag:=true; flag:=func (j, b-a[j], flag) end; j:=j-1; until (j<=0) or (flag); if flag then writeLn ('Moget') else writeLn ('Ne moget'); readLn; END. Вписал значит сейчас все в комменты. (Сообщение отредактировал KMA 21 янв. 2007 4:19)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 21 янв. 2007 3:49 | IP
|
|
sssuuupppeeerrr
Удален
|
Огромное спасибо!!!!!!!!!!!!!!!!!
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 янв. 2007 7:34 | IP
|
|
3ak
Удален
|
Если есть кто то помощь нужна срочно Вычислить бесконечную сумму с заданной точностью eps (eps>0). Считать, что точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать. S=1 - 2/1! + 2^2/2! - ... + (-2)^n/n! + ...
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 янв. 2007 15:00 | IP
|
|
3ak
Удален
|
Посещение раз в неделю наверно
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 янв. 2007 15:23 | IP
|
|
zaika
Удален
|
Решите, пожалуйста Задачи!!! Очень нужно!! 1.Дана матрица размера 5*10.Найти максимальное значение в каждом столюце. 2.Дана матрица 5*10. Найти максимальное значение среди сумм элементов всех ее строк и номер строки с этим максимальным значением. 3.Дана матрица размером 5*10. Вывести номер ее первой строки,содержащей только положительные элементы.Если таких строк нет, то вывести 0 4.Дана квадратная матрица порядка М.Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы. 5. Даны два числа К1 и К2 и матрица размером 4*10. Поменять местами столбцы матрицы с номерами К1 и К2
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 янв. 2007 19:50 | IP
|
|
3ak
Удален
|
Решите пожалуйста, это все что мне надо Вычислить бесконечную сумму с заданной точностью eps (eps>0). Считать, что точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать. 1часть: S=1 - 2/1! + 2^2/2! - ... + (-2)^n/n! + ... 2часть: Дана непустая последовательность не нулевых целых чисел, за которой следует 0. Определить, сколько из них принимает наименьшее значение. P=(cos1! + sin2!)(cos3! + sin4!) ... (cos(n-1)! + sin(n)!) Текст задан последовательностью литер, за которыми идет '.' . Написать программу, которая определяет выполнено ли следующее условие: В тексте больше английских букв, чем знаков препинания Const n=20; Type vector= array[1..n] of integer; Вычислить для вектора x: Среднее геометрическое |x[1]*x[2]*...x[n]| (корень n степени из модуля произведения) Даны натуpальное число n и действительная матpица (N x 9). Найти сpеднее аpифметическое: a) каждого из столбцов; б) каждого из стpок.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 янв. 2007 20:58 | IP
|
|
|