Помощь - Поиск - Пользователи - Календарь
Полная версия: Оператор цикла while
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
kvadrat
Привет друзья, помогите пожалуйсто решить вот такую задачю через цикл while:

Даны целые числа a,n,x(с индексом 1),.......,x(с индексом n) (n>0). Определить каким по счёту в последовательности x(с индексом 1),......,x член равный a. Если такого члена нет, то ответом должно быть число 0.

Вот я тут попытался её решить, но она работает неправильно:

program vail;
var x,s,n,i:integer;
begin
writeln('vvedite kolichestvo chisel');
readln(n);
s:=0;
i:=0;
writeln('vvedite x');
readln(x);
while i<=n do
begin
i:=i+1;
begin
if x<2 then
x:=0;
end;
s:=s+x;
end;
writeln('symma ravna ',s);
end.
Ozzя
Ничего ты НЕ пытался решать. Подсунул задачу по вычислению суммы членов последовательности. Или это юмор такой?
kvadrat
Серьёзно для меня эта задача сложная поэтому я прошу у вас помощи.
Ozzя
Ну и что? Помощь подразумевает некое твое участие в процессе. А ты подсовываешь какую-то левую программу, выдавая ее за свою якобы написанную.
Вот когда хотя бы переменные, участвующие в твоей программе, правильно опишешь, тогда и жди какой-то помощи.
kvadrat
А ты можеш хотябы нормальным понятным языком объяснить условие задачи? если тя канешно незатруднит
andriano
Вообще-то объяснить нормальным понятным языком условие задачи - обязанность того, кто создает тему.
Ибо кроме него об этой задаче никто ничего не знает (кроме телепатов).
kvadrat
Вот поглядите решил, но он прекращает ввод чисел как только ты вводиш значение равное a, как тут исправить чтобы сначало вводить все числа в ряду, а потом уже после нажатия alt+F5 он выдавал каким по счёту число равное а в ряду расположено, иначе выводил 0

program vail;
var a,n,i,x:integer;
begin
writeln('vvedite chislo a');
readln(a);
writeln('vvedite kolichestvo chisel v ryady');
readln(n);
while a<>x do
begin
i:=0;
for x:=1 to n do
i:=i+1;
writeln('vvedite chisla ryada');
readln(x);
end;
if a=x then writeln('chislo v ryady po schety ',i) else writeln('0')
end.
мисс_граффити
Так пойдет?
Без alt+f5, правда... зачем здесь это сочетание - не поняла.
var a,n,x,i,num: integer;

begin
writeln('n=?');
readln(n);
writeln('a=?');
readln(a);
i:=1;
num:=0;
while i<=n do
begin
writeln('x=?');
readln(x);
if x=a then
num:=i;
inc(i);
end;
writeln;
writeln('number=',num);
readln;
end.
kvadrat
Ну в твоём варианте решения вводиться только одно число, а необходимо ввести столько чисел, чему равно n, и среди них програма должна выбрать какое по счёту было введёно число равное a, если такого числа необнаружено то ответ 0
мисс_граффити
Цитата
Ну в твоём варианте решения вводиться только одно число

неужели?
kvadrat
Цитата
неужели?

Всё кароче я в тебя влюбился всё правильно решено, просто у меня ни дискетки ни флэшки нету я на листке напечатал решение и понёс в технарь, а там видимо неправильно перепечатал. А дома потом через копипэст проверил всё правильно.
Вот обработаное решение:
program qweret;
uses crt;
var a,n,i,num: integer;x:real;
begin
clrscr;
writeln('n=?');
readln(n);
writeln('a=?');
readln(a);
i:=1;
num:=0;
while i<=n do
begin
writeln('x=?');
readln(x);
if x=a then
num:=i;
i:=i+1;
end;
writeln('number=',num);
end.
Айра
хм.. а в чем заключается обработка, если не секрет? в замене inc(i) на i:=i+1 (но это ничего не меняет), или в смене типа x на real? (так по заданию - целое число..) Ааа.. все дело в том что теперь отступов нет и код выглядит более.. эм.. загадочно? smile.gif)
kvadrat
1) В таком виде у училки непоявиться подозрения что тебе ктото помогал делать задачу и она не начнёт загружать тебя левыми вопросами smile.gif
2)При x:integer не будут вводиться дробные и отрицательные числа, а надо чтоб вводились.
3)
writeln;
writeln('number=',num);
readln;

убрал пустые врайтлн и ридлн, т.к. незнаю зачем они а учитель полюбому спросит.
4) inc(i) заменил на i:=i+1 т.к. такую команду мы ещё непроходили.
5) вставил очистку экрана, т.к. я её во всех задачах которые показываю учителю применяю.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.