Превет всем! Я новичок в єтом деле , и както не задумывался весь учебный период что прийдется учить но вот пришла сесия и теперь надо по трудиться, начал сам изучать Паскаль, структуру написания его понял , єто не трудно. Но вот математические алгоритмы для меня сложнее сделать,
ЛЮДИ кто неплохо програмирует пожалуйста помогите решить 3 задачи, я знаю для вас єто не составит труда а мне вы окажете большую услугу.
Вот выкладываю задачи.Они на таки вот темы на оператор : for. Потом по тему массивов : array. И minmax.
1. В єтой задаче я не пойму как составить мат. алгоритм Дано целое число N (> 0).Найти сумму N^2 + (N + 1)^2 + (N + 2)^2 + ... + (2*N)^2 N - (целое число).
То есть описываю как я понял ее алгоритм и строение Вот 1. N>0, В=Експонента bn , bn=(2*N)^2/ 2. Найти сумму.
вот мое представление , поправьте меня потому как программа не работает. Вот пример пользователь водит 1 N=1 сума= 5 N=2 сума= 29 N=7 сума= 924
Всем заранее спасибо за ответ.
P.S. Пожалуйста модераторы не закрывайте тему потому как я действительно не пойму как решить данное задание. Хотелось бы услышать помощь до завтра - послезавтра.
2. Дано целое число N и набор из целых чисел N. Найти номер первого экстремального ( то есть минимального и максимально ) элемента из даного набора.
3.Дан массив А размера N и целое число К (1 < K < N).ввывести элементы массива с порядковыми номерами, кратными K: AK, A2*K, A3*K, .... . Условный оператор не использовать.
Если не сложно то выложите код а если сложно то хотяб алгоритм и структуру прог.
ЗАРАНЕЕ ВСЕМ СПАСИБО КТО ОТВЕТИТ В ЭТОЙ ТЕМЕ.
Автор: мисс_граффити 11.12.2006 3:46
1. смотри: общий вид слагаемого (N+i)^2, где i изменяется от 0 до n. (вот границы твоего цикла) тебе надо посчитать сумму, то есть на каждом шаге к какой-то переменной (изначально она равна 0) прибавлять текущее слагаемое. Сможешь написать? Из переменных тебе понадобится: n - задается пользователемж sum - вычисляется i - счетчик цикла, который будет использоваться и внутри скобок.
2. в поиск
Автор: -SLAX- 11.12.2006 11:49
Цитата(мисс_граффити @ 10.12.2006 23:46)
1. смотри: общий вид слагаемого (N+i)^2, где i изменяется от 0 до n. (вот границы твоего цикла) тебе надо посчитать сумму, то есть на каждом шаге к какой-то переменной (изначально она равна 0) прибавлять текущее слагаемое. Сможешь написать? Из переменных тебе понадобится: n - задается пользователемж sum - вычисляется i - счетчик цикла, который будет использоваться и внутри скобок.
2. в поиск
что значит будет использоваться внутри скобок ? ну и вот что у меня получилось но что-то не то
program for_11; var i, sum, n:integer; begin i:=0; sum:=0; writeln ('Ââåäèòå ÷èñëî'); readln(n); for i:=0 to n do begin if i<n then for i:=0 to n do i:=+n; sum:=sqr(N+i); end; writeln('Ñóììà',sum); end.
ну и вот у меня ответі не совпадают с нужными. Например я должен ввести один ответ должен быть 5 , а тут оно выдает 4. Если 9 то 324 , а должэен быть 1905.
Мне кажется что я что-то упустил , так ли это
Автор: Bokul 11.12.2006 11:58
Цитата
3.Дан массив А размера N и целое число К (1 < K < N).ввывести элементы массива с порядковыми номерами, кратными K: AK, A2*K, A3*K, .... . Условный оператор не использовать.
const n=10; var mas:array[1..n] of byte; i,k:byte; begin i:=1; k:=3; while (i*k<=n) do begin writeln(mas[i*k]); inc(i); end; readln; end.
Автор: мисс_граффити 11.12.2006 14:34
Зачем тебе этот кусок:
if i<n then for i:=0 to n do i:=+n;
? В цикле от 0 до n i ВСЕГДА меньше n Вложенный цикл по той же переменной делать нельзя. Изменять внутри цикла счетчик цикла тоже нельзя...
Автор: Гость 12.12.2006 12:31
Цитата(Bokul @ 11.12.2006 7:58)
const n=10; var mas:array[1..n] of byte; i,k:byte; begin i:=1; k:=3; while (i*k<=n) do begin writeln(mas[i*k]); inc(i); end; readln; end.
Задача с массивом вот єа не работает. Відает три нуля и предлагает ввести
1. РЕШИЛ
var n, i: integer; s:integer; begin write('N='); readln(n); s:=0; for i:=n to 2*n do begin s:=s+sqr(i); end; writeln(s); readln; end.
2. А вот насчет второй
program min_max; uses crt; var i:integer; m:array[1..30] of Real; max:real; t:integer; begin for i:=1 to 30 do begin writeln('Ââåäèòå ºëåìåíò ïîñëåäîâàòåëüíîñòè N',i); readln(m[i]); end; max:=m[1]; t:=1; for i:=1 to 30 do if m[i]>max then begin max:=m[i]; t:=i; end; writeln(' Massiv ',m[i]); writeln('Максимальный эл ',max); writeln ('номер эл',t); end.
Автор: Bokul 12.12.2006 12:55
Привіт!
Цитата
Задача с массивом вот єа не работает. Відает три нуля и предлагает ввести
Почему же не работает, чем тебе нули не угодили? Другое вопрос в том, что она и другого ничего не может вывести, так как в начале Паскаль сам обнуляет все элементы массива. Заполни массив числами перед циклом while , и увидишь, может она все-таки работает...
Автор: -SLAX- 13.12.2006 0:53
Цитата(Bokul @ 12.12.2006 8:55)
Привіт!
Почему же не работает, чем тебе нули не угодили? Другое вопрос в том, что она и другого ничего не может вывести, так как в начале Паскаль сам обнуляет все элементы массива. Заполни массив числами перед циклом while , и увидишь, может она все-таки работает...
Слушай спасибо с твоей помощью задачу сдела вот выкладываю код Но в твоей программе даже если вести элементы массива программа не выдает номер числа в массиве который был кратны k. Вот смотри как я ее сделал
program array; uses crt; const n=10 var a: array [0..10] of real; k, i:integer;
begin writeln(' Введите k '); readln(k); for i:=1 to n do begin writeln('Введите ' ,i, ' -й элемент массива '); readln(a[i]); end; i:=k; while i<=N do begin writeln (a [i]); i:i+k; end; end.
Но вот задачу про массив где например пользователь вводит 10 єлементов массива и программа выводит на экран номер из массива числа который есть экстремальным то есть минимум ил максимум. Например: 2 2 3 2 4 5 3 2 3 5 и пользователю выводит что это 10 элемент
Вот мои соображения насчет этого
program minmax; uses crt; const n=10 var a: array [0..10] of real; i:integer; tmp,tmp1: real;
begin for i:=1 to n do begin writeln('Введите ' ,i, ' -й элемент массива '); readln(a[i]); end; if a>a[i] then a[i]=tmp; else a[i]=tmp1; writeln ('Номер максимального числа в массиве', tmp ); writeln ('Номер минимального числа в массиве', tmp );
end.
но что сдесь моя логика подводит
Автор: arhimag 13.12.2006 1:03
[pascode] program minmax;
const n=10; var a: array [0..10] of real; i:integer; tmp,tmp1: real;
begin for i:=1 to 10 do begin writeln('Ââåäèòå ' ,i, ' -é ýëåìåíò ìàññèâà '); readln(a[i]); end; tmp := -10000; tmp1 := 10000; for i:= 1 to 10 do begin if tmp<a[i] then tmp:=a[i]; if tmp1>a[i] then tmp1:=a[i]; end; writeln ('Íîìåð ìàêñèìàëüíîãî ÷èñëà â ìàññèâå', tmp ); writeln ('Íîìåð ìèíèìàëüíîãî ÷èñëà â ìàññèâå', tmp1 ); readln; end. [/pascode]
Автор: -SLAX- 13.12.2006 4:24
Цитата(arhimag @ 12.12.2006 21:03)
[pascode] program minmax;
const n=10; var a: array [0..10] of real; i:integer; tmp,tmp1: real;
begin for i:=1 to 10 do begin writeln('Ââåäèòå ' ,i, ' -é ýëåìåíò ìàññèâà '); readln(a[i]); end; tmp := -10000; tmp1 := 10000; for i:= 1 to 10 do begin if tmp<a[i] then tmp:=a[i]; if tmp1>a[i] then tmp1:=a[i]; end; writeln ('Íîìåð ìàêñèìàëüíîãî ÷èñëà â ìàññèâå', tmp ); writeln ('Íîìåð ìèíèìàëüíîãî ÷èñëà â ìàññèâå', tmp1 ); readln; end. [/pascode]
Очень большое спасибо, просто немного перепутал и значениям но можно спросить а можно так было чтобы оно выводило просто один номер любого экстремального числа( то есть будь то число минунимумом или максимум) просто программа выдавала что номер экстремального числа 10?
Еще раз огромное спасибо
Автор: Bokul 13.12.2006 4:46
Цитата
Но в твоей программе даже если вести элементы массива программа не выдает номер числа в массиве который был кратны k. Вот смотри как я ее сделал
Ну так добавь его вывод:
{-----------------------------------} while i<=N do begin writeln (a [i]); writeln(i); i:=i+k; end; {-----------------------------------}
Автор: SLAX 13.12.2006 20:37
Цитата(arhimag @ 12.12.2006 21:03)
[pascode] program minmax;
const n=10; var a: array [0..10] of real; i:integer; tmp,tmp1: real;
begin for i:=1 to 10 do begin writeln('Ââåäèòå ' ,i, ' -é ýëåìåíò ìàññèâà '); readln(a[i]); end; tmp := -10000; tmp1 := 10000; for i:= 1 to 10 do begin if tmp<a[i] then tmp:=a[i]; if tmp1>a[i] then tmp1:=a[i]; end; writeln ('Íîìåð ìàêñèìàëüíîãî ÷èñëà â ìàññèâå', tmp ); writeln ('Íîìåð ìèíèìàëüíîãî ÷èñëà â ìàññèâå', tmp1 ); readln; end. [/pascode]
слушайте а можно что бі программа выдавала только экстремальные числа то есть или минимальное число или максимальное число в этом массиве Например пользователь вводит 0 1 0 0 2 0 1 0 1 2 а программа выдает 10 число есть экстремальным.