Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Паскаль Одномерные массивы 
V
    Опции темы
syoksana
Дата 19.2.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Привет! Решала Задачи,но не получаются, где ошибка
1)пусть даны целые числа a1...an каждое из которых отлично от нуля. если в последовательности отрицательные и положительные элементы чередуются, то ответом должна служить сама исходная последовательность, иначе получить все отрицательные элементы последовательности сохранив порядок их следования
for i:=1 to n do
if (a[i]>a[i+1])or(a[i]<a[i+1]) then write (a[i])
else if a[i]<0 then write(a[i]) я не знаю как записать чередование положительных и отрицательных

2)пусть дана последовательность из 100 различных целых чисел найти среднее арифметическое чисел этой последовательности расположенных между первым максимальным и последним минимальным числами (в сумму включить и оба этих числа)
max:=a[1];man:=a[1];
for i:=1 to n do 
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
for i:=1 to n do
.....что дальше как найти 1 максимальный и посследний минимальный
А это вот вообще не понимаю и не знаю как решить
3)пусть даны целые числа a1..a20 преобразовать эту последовательность по правилу большее из ai и a10+i примите в качестве нового значения ai меньшее в качестве нового значения a10+i

Пожалуйста ответе мне


Это сообщение отредактировал(а) syoksana - 19.2.2008, 16:06
PM MAIL   Вверх
kuzyara
Дата 19.2.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



Цитата(syoksana @  19.2.2008,  20:15 Найти цитируемый пост)

Решала Задачи,но не получаются, где ошибка.
1)пусть даны целые числа a1...an каждое из которых отлично от нуля. если в последовательности отрицательные и положительные элементы чередуются, то ответом должна служить сама исходная последовательность, иначе получить все отрицательные элементы последовательности сохранив порядок их следования
for i:=1 to n do
if (a[i]>a[i+1])or(a[i]<a[i+1]) then write (a[i])
else if a[i]<0 then write(a[i]) я не знаю как записать чередование положительных и отрицательных

Как говорится, ошибка тут одна.
Про 1 задачу: в условии не случайно говорится, что элементы отличны от нуля. Если a[i]*a[i+1]<0 то числа разные по знаку, вот как реализуем:
Код

chered:=true;
for i:=1 to N-1 do {! а не N}
if a[i]*a[i+1]>0 then {<-- если число не отличается знаком от следующего}
 begin
  chered:=false;  {<-- то элементы не чередуются}
  for j:=1 to N do if a[j]<0 then write(a[j]); {<-- выводим все отриц. элементы}
  break; {<-- и выходим из цикла}
 end;
if chered then for i:=1 to N do write(a[i]); {<-- если все эл-ты чередуются, то выводим всё}


Цитата(syoksana @  19.2.2008,  20:15 Найти цитируемый пост)

2)пусть дана последовательность из 100 различных целых чисел найти среднее арифметическое чисел этой последовательности расположенных между первым максимальным и последним минимальным числами (в сумму включить и оба этих числа)
max:=a[1];man:=a[1];
for i:=1 to n do 
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
for i:=1 to n do
.....что дальше как найти 1 максимальный и посследний минимальный
А это вот вообще не понимаю и не знаю как решить

А здесь просто нужно ввести ещё переменные: индекс максимального и минимального элемента.
Начала ты правильно, только begin...end поставить забыла.
Код

max:=a[1];min:=a[1];
for i:=2 to n do 
begin
 if a[i]>max then begin max:=a[i]; IndexMaxElement:=i; end;
 if a[i]<=min then begin min:=a[i]; IndexMinElement:=i; end;
end;
if IndexMinElement<IndexMaxElement 
 then
  {--- а дальше среднеарифметируем )) все элементы от IndexMinElement до IndexMaxElement}
  for i:=IndexMinElement to IndexMaxElement do Summ:=Summ+a[i];
 else
  for i:=IndexMinElement downto IndexMaxElement do Summ:=Summ+a[i];
write('Среднее арифм равно=',summ/(IndexMaxElement-IndexMinElement+1)

Цитата(syoksana @  19.2.2008,  20:15 Найти цитируемый пост)

3)пусть даны целые числа a1..a20 преобразовать эту последовательность по правилу большее из ai и a10+i примите в качестве нового значения ai меньшее в качестве нового значения a10+i

Ну здесь вообще пару строчек, просто ПОДУМАТЬ надо.
Код

N:=20; {- по условию}
for i:=1 to N-10 do
 if a[i]<a[10+i] then {<-- если большее не a[i], то...}
  begin
   {меняем местами}
   Temp:=a[i];
   a[i]:=a[i+10];
   a[i+10]:=Temp;
  end; 


Думай над задачами, они хитренькие. Мне такие нравяться)) 
syoksana, пожалуйста больше внимания уделяй правилам пунктуации, трудно читать.
А то, что попыталась решить, это есть хорошо smile 

зы: volvo, зачот? smile 

Это сообщение отредактировал(а) kuzyara - 20.2.2008, 06:54
--------------------
подпись
PM MAIL   Вверх
syoksana
Дата 19.2.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Спасибо за ответ, только во второй задачи я не пойму: нужен 1 максимальный, как мне его найти?
и последний минимальный. например дана последовательность 3 5 -4 4 3 6 9. я наверное буду не права, но как я понимаю 1 максимальный это 3, а последний минимальный -4?

Это сообщение отредактировал(а) syoksana - 19.2.2008, 19:41
PM MAIL   Вверх
Bug_Hunter
Дата 19.2.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.2.2008
Где: Бл. Подмосковье

Репутация: нет
Всего: нет



Цитата(kuzyara @  19.2.2008,  17:46 Найти цитируемый пост)
зы: volvo, зачот?

А ничего, если я за второй пример контрпримером по лбу стукну?

Ладно, подумай пока сам.

PM MAIL   Вверх
syoksana
Дата 20.2.2008, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



в 3 задаче: пусть даны целые числа a1..a20 преобразовать эту последовательность по правилу большее из ai и a10+i примите в качестве нового значения ai, меньшее в качестве нового значения a10+i
Что-то я снова  ничего не поняла разъясните?
For i:=1 to n-1 (почему, получается, что до 19?)
Вообще говоря условие какое-то странное, как я понимаю, рассматривается вся последовательность и большее из этой последовательности записывается до а 10+1, меньшее после а10+1. возьмём пример из 6 элементов:3 2 4 -3 4 3, результатом должна служить последовательность  4 4 3 3 2 -3. верно? 

Если Вас не затруднит, помогите найти ошибку
Пусть даны вещественные числа а1..аn, b1.. bn. Вычислите произведение (a1+bn)*(a2+bn-1)…(an+b1). 
Задаче лёгкая, но у мне надо сдать задачи  по массивам какие решила, какие нет, посмотрите... 
Const n=5;
Var a:array[1..n]of integer;
     B:array[1..n]of integer;
I,j,p:integer;
Begin
Writeln (‘вв массив а’);
For i:=1 to n do readln(a[i]);
Writeln (‘вв массив b’);
For j:=1 to n do readln (b[j]);
P:=1;
For i:=1 to n do
For j:=n downto 1 do
P:=p*(a[i]+b[n]);
Writeln(p);
End.
 smile 

PM MAIL   Вверх
kuzyara
Дата 20.2.2008, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



Цитата(Bug_Hunter @  20.2.2008,  00:33 Найти цитируемый пост)
А ничего, если я за второй пример контрпримером по лбу стукну?Ладно, подумай пока сам.

 smile Точно, исправил! Ведь индекс максимального элемента не всегда больше индекса минимального.
--------------------
подпись
PM MAIL   Вверх
kuzyara
Дата 20.2.2008, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



Цитата(syoksana @  19.2.2008,  23:37 Найти цитируемый пост)
например дана последовательность 3 5 -4 4 3 6 9. я наверное буду не права, но как я понимаю 1 максимальный это 3, а последний минимальный -4?

Тебя наверно смутило, что именно первый максимальный и именно последний минимальный. Я так понимаю, что в ряду может быть несколько мин. и макс. элементов, а нужно выбрать только первый и последний соответственно. В твоем примере первый максимальный это 9, а последний минимальный это -4. 
А вот если бы ряд был вот такой: 9 5 4 9 4 3 6 5 8 3, то первый минимальный элемент это шестое число в последовательности(3), а последний максимальный это четвертая цифра(9)
--------------------
подпись
PM MAIL   Вверх
kuzyara
Дата 20.2.2008, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



Цитата

Код

For i:=1 to n-1
(почему, получается, что до 19?)
 о_0 у меня такого в 3 задаче отродясь небыло
Цитата(syoksana @  20.2.2008,  07:12 Найти цитируемый пост)
 возьмём пример из 6 элементов:3 2 4 -3 4 3, результатом должна служить последовательность  4 4 3 3 2 -3. верно? 
Ты вообще не имеешь права брать последовательность из 6 элементов, минимум из 11(=10+1).

Цитата

Вообще говоря условие какое-то странное, как я понимаю, рассматривается вся последовательность и большее из этой последовательности двух чисел записывается до в а 10+1 a[i], меньшее послев а10+1. возьмём пример из 6 12 элементов:3 2 4 -3 4 3 4 7 2 7 3 7, результатом должна служить последовательность  3 7 4 -3 4 3 4 7 2 7 3 2. 



Это сообщение отредактировал(а) kuzyara - 20.2.2008, 07:30
--------------------
подпись
PM MAIL   Вверх
syoksana
Дата 20.2.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Да-да, прошу прощения, это я что-то напутала, сегодня она работает,а вчера почему-то нет, спасибо за РАЗЪЯСНЕНИЯ!!! 
PM MAIL   Вверх
syoksana
  Дата 20.2.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



]
Ну посмотрите задачку, если Вас не затруднит, помогите найти ошибку
Пусть даны вещественные числа а1..аn, b1.. bn. Вычислите произведение (a1+bn)*(a2+bn-1)…(an+b1). 
Задаче лёгкая, но у мне надо сдать задачи  по массивам какие решила, какие нет, посмотрите... 
Сдавать нада smile 
Const n=5;
Var a:array[1..n]of integer;
     B:array[1..n]of integer;
I,j,p:integer;
Begin
Writeln (‘вв массив а’);
For i:=1 to n do readln(a[i]);
Writeln (‘вв массив b’);
For j:=1 to n do readln (b[j]);
P:=1;
For i:=1 to n do
For j:=n downto 1 do
P:=p*(a[i]+b[n]);
Writeln(p);
End.
 

Это сообщение отредактировал(а) syoksana - 20.2.2008, 14:45
PM MAIL   Вверх
kuzyara
Дата 20.2.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



перед_во_первых: для кода используй теги! Куда только смотрят модераторы...


Цитата(syoksana @  20.2.2008,  18:34 Найти цитируемый пост)
Код

Const n=5;
Var a:array[1..n]of integer;     
B:array[1..n]of integer;
I,j,p:integer;
Begin
Writeln (‘вв массив а’);
For i:=1 to n do readln(a[i]);
Writeln (‘вв массив b’);
For j:=1 to n do readln (b[j]);
P:=1;
For i:=1 to n do
For j:=n downto 1 do
P:=p*(a[i]+b[n]);
Writeln(p);
End.
 

Во-первых, переменную j можно вообще убрать и вместо неё использовать i.
Во-вторых в условии сказано, что это вещественные числа, а у тебя?
Во-третьих, что за абракадабра в последних строчках? В этом твоя беда. Сначала нужно продумать задачу, накрайняк записать мат. модель, если в уме не получается, а уже потом переводить эту математическую модель в язык програмирования! Математически это выглядит так: 
user posted image
где "П" - значек произведения, так же как и "Е" - значек суммы.
А код вот так:
Код

Const n=5;
Var a,b:array[1..n] of real;     
I:word; p:real;
Begin
Writeln (‘вв массив а’);
For i:=1 to n do readln(a[i]);
Writeln (‘вв массив b’);
For i:=1 to n do readln (b[i]);
P:=1;
For i:=1 to n do
P:=p*(a[i]+b[n+1-i]);
Writeln(p);
end.


Это сообщение отредактировал(а) kuzyara - 20.2.2008, 16:31
--------------------
подпись
PM MAIL   Вверх
syoksana
Дата 20.2.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата(kuzyara @ 20.2.2008,  15:29)
Во-вторых в условии сказано, что это вещественные числа, а у тебя?

 smile Спасибо, с числами согласна
Цитата

Во-третьих, что за абракадабра в последних строчках? В этом твоя беда. Сначала нужно продумать задачу, накрайняк записать мат. модель, если в уме не получается, а уже потом переводить эту математическую модель в язык програмирования! Математически это выглядит так: 


 да я всегда пытаюсь понять с точки зрения математики, но вот про ...b[n-1+i], я не поняла, всё время отнимается единица и прибавляется, что?
Я только учусь, и стараюсь, и пытаюсь научиться понимать, и решать самостоятельно не прибегая к помощи, но почему-то умишка не хватает, вот посмотрите на задачу:

Пусть даны натуральные числа n,a1…an. Определите количество элементов ak последовательности a1…an удовлетворяющих условию 2K < ak < k!

Как понимаю, аk – это количество элементов
К – текущий элемент, да?
Ну к! – это понятно, и 2K  - тоже ясно,
Тогда, не понимаю, например, дана последовательность: 2 1 4 3 5
2!=1*2=2           < ak <    22 =4
1!=1               < ak <    21=2
4!=1*2*3*4=24      < ak <    24=16      
3!=1*2*3=6         < ak <    23=8
5!=1*2*3*4*5=120   < ak <    25 =32

Что должно стоять на месте ак???  smile И что в  получится??? smile 

PM MAIL   Вверх
kuzyara
Дата 21.2.2008, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



Цитата(syoksana @  20.2.2008,  22:42 Найти цитируемый пост)
да я всегда пытаюсь понять с точки зрения математики, но вот про ...b[n-1+i], я не поняла, всё время отнимается единица и прибавляется, что?

Если ты не поняла это, то и не поняла мат. модель.
П(a[i]+b[N-1+i]) означает, что для каждого i нужно взять i член массива а и i член с конца массива b и сложить, что означает соответственно a[i] и b[N+1-i]. Если не можешь понять код с первого взгляда, то нужно выполнить его у себя в голове, стать как бы компилятором и откомпилировать в мозгу. Тогда ты поймешь, что обозначает ...b[n-1+i] при i от 1 до N. А обозначает это пары (a[1],b[N]), (a[2],b[n-1]),(a[3],b[n-3]) ... (a[N],b[1]). 
Ещё раз: если i - это переменная, которая перебирает все числа от 1 до N, то N-1+i - перебирает все числа от N до 1.


Цитата(syoksana @  20.2.2008,  22:42 Найти цитируемый пост)
Пусть даны натуральные числа n,a1…an. Определите количество элементов ak последовательности a1…an удовлетворяющих условию 2K < ak < k!

Если вникнуть, можно понять, что от нас требуют:
Пускай количество элементов это kol, тогда матмодель такая:
user posted image
Цитата

Тогда, не понимаю, например, дана последовательность: 2 1 4 3 5
2!=1*2=2           < ak <    22 =4
1!=1               < ak <    21=2
4!=1*2*3*4=24      < ak <    24=16      
3!=1*2*3=6         < ak <    23=8
5!=1*2*3*4*5=120   < ak <    25 =32

И всё-таки возникает ощущение, что прочитав в первый раз задачу и не поймя её - сразу пишешь на форум. Не все программы сразу пишутся. Подумай разок - другой, третий. Если сразу ничего не пришло в голову - это не значит, что не придет и в другой. Иначе как объяснить твой пример неравенств, когда по условию знак неравенства в-точности, да в другую сторону  smile  Невнимательность?... У меня тоже такое бывает, но для этого нужно не просто "пробежаться" по задаче, а вникнуть в каждую букву, не пропуская ни одного слова. Ведь бывает всего в одном слове кроется вся хитрость в задаче. Пример тому твоя первая задача, "с элементами, не равными нулю". smile 

Это сообщение отредактировал(а) kuzyara - 21.2.2008, 06:27

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  formul.gif 1,49 Kb
--------------------
подпись
PM MAIL   Вверх
syoksana
Дата 21.2.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата

 неравенства в-точности, да в другую сторону    Невнимательность?... 

Конечно, у меня тут дома цело общежитие!!!  smile 
Цитата

Пускай количество элементов это kol, тогда матмодель такая:


 я поняла, но вот только что такое а[k]? где ошибка? текуший?
Код

kol:=0;
for i:=1 to n do begin
for k:=1 to n do
p:=2*k;
factor:=k*i;
end;
if (a[k]<factor) and (a[k]>p)then
kol:=kol+1;



Это сообщение отредактировал(а) syoksana - 21.2.2008, 14:20
PM MAIL   Вверх
kuzyara
Дата 21.2.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



Цитата(syoksana @  21.2.2008,  15:47 Найти цитируемый пост)
что такое а[k]? где ошибка? текуший?

a[k] текущий элемент. Вместо k могло бы стоять и i, просто составителям наверно надоело, все "ай", да "ай", вот "ка" и поставили. И ещё, оформляй код правильно, с отступами, самой же потом будет легче разобраться в чем ошибка. И все-таки для того, чтобы я понял, ЧТО ты не поняла, комментируй каждую сторочку кода.

--------------------
подпись
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.