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

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

Форум «Всё о Паскале» _ Задачи _ Дан вектор...

Автор: kvadrat 17.05.2008 18:40

Вот условие:
Прикрепленное изображение

Правильно ли я решил задачу?

program wersagfwqe;
uses crt;
var d:array[1..6] of integer;z,i:integer;
begin
clrscr;
writeln('vvedite elementi vektora');
for i:=1 to 6 do
begin
readln(d[i]);
end;
z:=d[3]+d[4]+d[5]+d[6];
writeln('summa=',z);
end.

Ведь вектор состоит из 6 чисел, почему тогда дали отрезок от 3 до 7? мб тут какойто подвох?

Автор: volvo 17.05.2008 18:48

Разницу между длиной вектора и интервалом, в котором находятся значения его элементов, понимаешь? Какая разница, сколько элементов в векторе? Значение (а не индекс, как тебе кажется) любого из них может попасть в интервал 3 .. 7, а может не попасть...

Соответственно, задача решена неверно... Начиная с того, integer - это не вещественный...

Автор: kvadrat 17.05.2008 19:05

Вещественый это какой?
Вот глядите перерешал, правильно?

program derdsfgsd;
uses crt;
var d:array[1..6] of real;z,i:integer;
begin
clrscr;
z:=0;
writeln('vvedite elementi vektora');
for i:=1 to 6 do
begin
readln(d[i]);
if (d[i]>=3) and (d[i]<=7) then z:=z+d[i]
end;
writeln('summa=',z);
end.

Автор: volvo 17.05.2008 19:28

А ты попробуй откомпилировать... Вот когда исправишь ошибку, тогда будет правильно...

Автор: kvadrat 17.05.2008 20:21

У меня всё компилировалось:
Прикрепленное изображение

Но я узнал что вещественные это Real, Single, Double, Extended, Comp
поэтому выходит так:

program wersagfwqe;
uses crt;
var d:array[1..6] of real;z:real;i:integer;
begin
clrscr;
z:=0;
writeln('vvedite elementi vektora');
for i:=1 to 6 do
begin
readln(d[i]);
if (d[i]>=3) and (d[i]<=7) then z:=z+d[i]
end;
writeln('summa=',z:2:2);
end.

Автор: volvo 17.05.2008 20:27

Цитата
У меня всё компилировалось:
Ты сказки-то в другом месте рассказывай, ладно? Тип Integer с типом Real по присваиванию несовместим, то есть, запихать Real := Integer можно, а вот обратно: Integer := Real - нельзя... Это не вызывает вопросов? А теперь расскажи, переменной какого типа и что ты пытаешься (в смысле, пытался, в посте №3) присвоить здесь:
Цитата
... then z:=z+d[i]
Это не то же самое Integer := Real?

Автор: kvadrat 17.05.2008 21:46

У меня тогда было

var d:array[1..6] of integer;z,i:integer;

good.gif