IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задачи, Способы решение к задачам с использованием for, minmax, array/
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Превет всем!
Я новичок в єтом деле , и както не задумывался весь учебный период что прийдется учить но вот пришла сесия и теперь надо по трудиться, начал сам изучать Паскаль, структуру написания его понял , єто не трудно.
Но вот математические алгоритмы для меня сложнее сделать,

ЛЮДИ кто неплохо програмирует пожалуйста помогите решить 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. Найти сумму.

Если что не так как я понял поправьте меня.

А теперь вот как я понял как надо написать код.
 
program for_11;
var c, b, N:integer;
begin
b:=0;
n:=0;
writeln ('Введите число');
readln©
for b:=1 to c do
b=b+(N+C)^2
if C<N then
C:=+1 " И надо что бы она вернулась опять в строчку b=b+(N+C)^2"
else
end.



вот мое представление , поправьте меня потому как программа не работает.
Вот пример пользователь водит 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, .... . Условный оператор не использовать.

Если не сложно то выложите код а если сложно то хотяб алгоритм и структуру прог.

ЗАРАНЕЕ ВСЕМ СПАСИБО КТО ОТВЕТИТ В ЭТОЙ ТЕМЕ.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


1. смотри: общий вид слагаемого (N+i)^2, где i изменяется от 0 до n. (вот границы твоего цикла)
тебе надо посчитать сумму, то есть на каждом шаге к какой-то переменной (изначально она равна 0) прибавлять текущее слагаемое.
Сможешь написать?
Из переменных тебе понадобится:
n - задается пользователемж
sum - вычисляется
i - счетчик цикла, который будет использоваться и внутри скобок.

2. в поиск


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(мисс_граффити @ 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.

Мне кажется что я что-то упустил , так ли это


 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
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.



--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Зачем тебе этот кусок:
if i<n then
for i:=0 to n do
i:=+n;

?
В цикле от 0 до n i ВСЕГДА меньше n
Вложенный цикл по той же переменной делать нельзя.
Изменять внутри цикла счетчик цикла тоже нельзя...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Привіт! wink.gif
Цитата
Задача с массивом вот єа не работает.
Відает три нуля и предлагает ввести

Почему же не работает, чем тебе нули не угодили? Другое вопрос в том, что она и другого ничего не может вывести, так как в начале Паскаль сам обнуляет все элементы массива. Заполни массив числами перед циклом while , и увидишь, может она все-таки работает... wink.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Bokul @ 12.12.2006 8:55) *

Привіт! wink.gif

Почему же не работает, чем тебе нули не угодили? Другое вопрос в том, что она и другого ничего не может вывести, так как в начале Паскаль сам обнуляет все элементы массива. Заполни массив числами перед циклом while , и увидишь, может она все-таки работает... wink.gif


Слушай спасибо smile.gif с твоей помощью задачу сдела вот выкладываю код
Но в твоей программе даже если вести элементы массива программа не выдает номер числа в массиве который был кратны 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.



но что сдесь моя логика подводит

 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


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


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(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?

Еще раз огромное спасибо
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Но в твоей программе даже если вести элементы массива программа не выдает номер числа в массиве который был кратны k. Вот смотри как я ее сделал

Ну так добавь его вывод:

{-----------------------------------}
while i<=N do
begin
writeln (a [i]);
writeln(i);
i:=i+k;
end;
{-----------------------------------}



--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Цитата(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 число есть экстремальным.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 3:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name