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

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

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

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


Новичок
*

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

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


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


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
vovka239
сообщение 12.11.2009 18:27
Сообщение #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 
 К началу страницы 
+ Ответить 
RathaR
сообщение 12.11.2009 18:54
Сообщение #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 - 12.11.2009 19:00


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


Гость






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

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

 



- Текстовая версия 8.08.2025 8:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"