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

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

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

 
 Ответить  Открыть новую тему 
> Массивы
сообщение
Сообщение #1


Новичок
*

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

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


Помогите пожалуйста решить задачу:
"Даны целые числа а, n, x1, x2, x3,...,xn. Определить, каким по счету идет в последовательности х1, х2, хn член, равный а. Если такого члена нет, то ответом должен быть ноль."
Я в массивах почти ничего не понимаю, проболел эту тему. Сам пробовал написать, по шаблонам, так у меня либо программа вовсе не компилировалась, либо Nod32 яростно матерился на программу)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

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

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


Уточнение: а если членов равных а будет больше одного? вывести номер первого?

Фактически тебе надо пройтись по масиву, и сравнить каждый его элемент с а, и если он ровняеться а, то запомнить его номер. Естественно лучше всего это выполнить в цыкле с параметром, цыкл
For I:=1 to N do

где N - длина последовательности;
Тоесть, из чего должна состоять програма:
1) - блок описания переменных, где у тебя будет обьявлено 3 переменных целого типа А,N,K - переменная в которую ты запишешь результат , и масив заведомо большей длинны(в условии должна быть указана макс. длинна последовательности).
2) - ввод переменных а, N, и ввод масива - это я думаю не нужно розъяснять;
3) - один цыкл:
For I:=1 to N do
If Mas[I]=a then K:=I;


4) Вывод

Хотя, по поводу ввода масива:
для того чтобы ввести массив с экрана необходимо знать его длинну, тоесть сначала вводишь переменную N
writeln('Введите кол-во елементов массива');
read(N);

Далее ввод массива осуществляеться в цыкле с параметром, в котором ты N раз повторяеш операцию чтения єлемента массива:

for I:=1 to N do
begin
writeln('Введите ', I,'-ый член последовательности');
read(Mas[I]);
end;


Как видишь обращение к элементам масива происходит точно также как и к строкам...
Обьявлять массив я думаю ты умеешь...

З.Ы.
Цитата
Если такого члена нет, то ответом должен быть ноль."
розберись сам как поступать в этом случае, как определить нашли мы элемент равный а или нет...

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


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


У меня не получается, я не знаю как можно объявить массив в переменной, а потом указать ему N:

Var 
Mas : array [1..N] of integer;
Begin
Writeln('vvedite N:');
Read(N);
End.


Выдаёт ошибку.
Решил пока попробовать явно задать массив чтоб хоть как-то работало. Но в итоге тоже лажа какая получилась:
program Project1;
Var 
Mas : Array [1..100] Of Integer;
a : Integer;
n : Integer;
i : Integer;
Begin
writeln('vvedite a:');
read(a);
For i:=1 to 100 do
writeln('vvedite', i,'); 
 read(i);/*Я вообще не понимаю эти 2 строки, для чего они? Хотя если их убрать, то становится интересней и непонятней как отрабатывается код*/
Begin
If Mas[i]=A then n:=i;
Writeln(n);
readln
End
End.


Пока переписывал код на форум, ещё много пробовал, так что записал может чуть не так.
Помогите пожалуйста разобраться..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

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

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


для того чтобы обьявить массив тебе необходимо заранее знать его длинну, она должна быть в условии, например 0<n<100.
Когда обьявляеш можешь писать так как ты сделал, а можешь так:
const 
n=100;
var
Mas:array[1..n] of integer; 


Терь по поводу кода, что ты привёл:
program Project1;
Var 
Mas : Array [1..100] Of Integer;
a : Integer;
n : Integer;
i : Integer;
k:integer;
Begin
writeln('vvedite a:');
read(a);
writeln('Vvedite K');  {<===== К - кол-во членов последовательности, меньше 100}
read(K);
For i:=1 to K do
begin {<========= иначе будет отрабатывать только один оператор}
  writeln('Введите', i,'-ый член последовательности'); 
  read(Mas[i]);                {<===в цыкле считываеш каждый введённый елемент}
end;
for I:=1 to K do  {<==== в цыкле пробегаешся по всему масиву}
If Mas[i]=A then n:=i;
Writeln(n);
readln
End.


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


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Спасибо большое!!!:) Так вроде логику понял, но смутно. Наверное если будет задача с чуть другим условием решить пока не смогу...
 К началу страницы 
+ Ответить 

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

 



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