Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Оператор цикла while

Автор: kvadrat 3.05.2008 3:17

Привет друзья, помогите пожалуйсто решить вот такую задачю через цикл 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я 3.05.2008 10:11

Ничего ты НЕ пытался решать. Подсунул задачу по вычислению суммы членов последовательности. Или это юмор такой?

Автор: kvadrat 3.05.2008 17:55

Серьёзно для меня эта задача сложная поэтому я прошу у вас помощи.

Автор: Ozzя 3.05.2008 18:16

Ну и что? Помощь подразумевает некое твое участие в процессе. А ты подсовываешь какую-то левую программу, выдавая ее за свою якобы написанную.
Вот когда хотя бы переменные, участвующие в твоей программе, правильно опишешь, тогда и жди какой-то помощи.

Автор: kvadrat 4.05.2008 1:48

А ты можеш хотябы нормальным понятным языком объяснить условие задачи? если тя канешно незатруднит

Автор: andriano 4.05.2008 2:44

Вообще-то объяснить нормальным понятным языком условие задачи - обязанность того, кто создает тему.
Ибо кроме него об этой задаче никто ничего не знает (кроме телепатов).

Автор: kvadrat 6.05.2008 1:25

Вот поглядите решил, но он прекращает ввод чисел как только ты вводиш значение равное 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.

Автор: мисс_граффити 6.05.2008 4:01

Так пойдет?
Без 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 7.05.2008 2:38

Ну в твоём варианте решения вводиться только одно число, а необходимо ввести столько чисел, чему равно n, и среди них програма должна выбрать какое по счёту было введёно число равное a, если такого числа необнаружено то ответ 0

Автор: мисс_граффити 7.05.2008 4:24

Цитата
Ну в твоём варианте решения вводиться только одно число

неужели?

Автор: kvadrat 14.05.2008 16:08

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

Всё кароче я в тебя влюбился всё правильно решено, просто у меня ни дискетки ни флэшки нету я на листке напечатал решение и понёс в технарь, а там видимо неправильно перепечатал. А дома потом через копипэст проверил всё правильно.
Вот обработаное решение:
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.

Автор: Айра 14.05.2008 19:39

хм.. а в чем заключается обработка, если не секрет? в замене inc(i) на i:=i+1 (но это ничего не меняет), или в смене типа x на real? (так по заданию - целое число..) Ааа.. все дело в том что теперь отступов нет и код выглядит более.. эм.. загадочно? smile.gif)

Автор: kvadrat 14.05.2008 23:17

1) В таком виде у училки непоявиться подозрения что тебе ктото помогал делать задачу и она не начнёт загружать тебя левыми вопросами smile.gif
2)При x:integer не будут вводиться дробные и отрицательные числа, а надо чтоб вводились.
3)

writeln;
writeln('number=',num);
readln;

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