Page 2 of 2
Posted: 2007-10-25 21:59:30
by -=JoKeR=-
Code: Select all
Program zadacha;
var
F,W:Array [1..10] of integer;
k:integer;
x:integer;
y:integer;
Sf:integer;
Sw:integer;
Begin
F[1..10]:=(0,1,2,3,4,5,6,7,8,9);
W[1..10]:=(0,1,2,3,4,5,6,7,8,9);
Writeln('Write X: ');
Readln(x);
Writeln('Write Y: ');
Readln(y);
begin
If x>y then
Writeln('Error. Number X > Y !!!')
else
begin
if x=y then
Writeln('Error. Number X = Y !!!')
else
begin
Sf:=0;
Sw:=0;
for k:=1 to 10 do
begin;
if (F[k]>=x) and (F[k]<=y) then
begin
Sf:=k+1;
Writeln('Count elements > X = ', Sf);
end;
if (W[k]>=x) and (W[k]<=y) then
begin
Sw:=k+1;
Writeln('Count elements < Y = ', Sw);
end;
end;
end;
end;
End.
Помоему так =)
------------------------------
А насчёт компиляторов...
Я запускал програму на двух компиляторах ( Pascal ABC и Turbo Pascal 7.0 ) и оба выдавали ошибку в том месте где я говорил.
Проверить код и поинтересоваться насчёт массивов смогу только на следующей неделе.
Posted: 2007-10-26 15:34:14
by Edred
Вот этот бегин явно лишний. Я же написал: в двух местах, а ты воткнул в трех. Кроме того, сосчитай-ка количество begin и количество end в скрипте. Их должно быть равное количество.
Posted: 2007-10-26 15:52:42
by -=JoKeR=-
Точно. Провтыкал =)
Ладно, спасиба за помощь, подъеду в универ, узнаю у препада что и как. Отпишусь если что-то не то или всё именно то =)
Posted: 2007-10-26 22:00:29
by Edred
не, ну ты можешь заменить эти две строки
Code: Select all
F[1..10]:=(0,1,2,3,4,5,6,7,8,9);
W[1..10]:=(0,1,2,3,4,5,6,7,8,9);
вот такой конструкцией, работать точно должно на любом компиляторе:
Code: Select all
for k:=1 to 10 do
begin
F[k]:= k-1;
W[k]:= k-1;
end;
Posted: 2007-10-27 00:16:10
by -=JoKeR=-
завтра попробую =)
Posted: 2007-10-27 16:41:30
by -=JoKeR=-
Code: Select all
Program zadacha;
var
F,W:Array [1..10] of integer;
k:integer;
x:integer;
y:integer;
Sf:integer;
Sw:integer;
Begin
Writeln('Write X: ');
Readln(x);
Writeln('Write Y: ');
Readln(y);
If x>y then
Writeln('Error. Number X > Y !!!')
else
begin
if x=y then
Writeln('Error. Number X = Y !!!')
else
begin
Sf:=0;
Sw:=0;
for k:=1 to 10 do
begin
F[k]:= k-1;
W[k]:= k-1;
if (F[k]>=x) and (F[k]<=y) then
begin
Sf:=k+1;
end;
if (W[k]>=x) and (W[k]<=y) then
begin
Sw:=k+1;
end;
end;
Writeln('Count elements > X = ', Sf);
Writeln('Count elements < Y = ', Sw);
end;
end;
End.
Блин, что-то не так всё равно.
Ввожу x=2 y=7 , оно выдаёт
Count elements > X = 9
Count elements < Y = 9

Posted: 2007-10-27 21:44:44
by Edred
Конечно не так. Потому что тебе советуют одно, а ты делаешь другое. Я тебе пишу куда вставить инициализацию массива, а ты ее втыкаешь в ж... Вот через эту самую ж... программа и работает.
Posted: 2007-10-27 22:54:00
by -=JoKeR=-
Code: Select all
Program zadacha;
var
F,W:Array [1..10] of integer;
k:integer;
x:integer;
y:integer;
Sf:integer;
Sw:integer;
Begin
for k:=1 to 10 do
begin
F[k]:= k-1;
W[k]:= k-1;
end;
Writeln('Write X: ');
Readln(x);
Writeln('Write Y: ');
Readln(y);
If x>y then
Writeln('Error. Number X > Y !!!')
else
begin
if x=y then
Writeln('Error. Number X = Y !!!')
else
begin
Sf:=0;
Sw:=0;
for k:=1 to 10 do
begin
if (F[k]>=x) and (F[k]<=y) then
begin
Sf:=k+1;
end;
if (W[k]>=x) and (W[k]<=y) then
begin
Sw:=k+1;
end;
end;
Writeln('Count elements > X = ', Sf);
Writeln('Count elements < Y = ', Sw);
end;
end;
End.
Вот вставил туда где и было.
Результат тот же.

Posted: 2007-10-28 22:22:54
by Edred
Значит, что-то не так в логике реализации задачи. Я ведь и не пытался ее понять, я тебе указывал только на ошибки самой программы. А что ты хочешь от этой программы получить - это твое дело. Программа же работает. Если она не делает то, что нужно - значит она написана не так, как нужно.
Опиши задачу, напиши последовательный алгоритм (делаем то-то, получаем то-то, если то-то, то делаем то-то). А потом уже смотри, что же в программе не то. Не сможешь - кидай написанное сюда. Посмотрим. Но за тебя я это делать не буду.
Posted: 2007-10-30 19:50:11
by -=JoKeR=-
Вот она =)
Ехал сегодня в маршрутке и стукнуло в голову решение
Спасиба, Edred, за помощь.
Code: Select all
Program zadacha1;
const
n=10;
var
F,W:Array [1..n] of integer;
k:integer;
x:integer;
y:integer;
Sf:integer;
Sw:integer;
Begin
for k:=1 to n do
begin
F[k]:= k-1;
W[k]:= k-1;
end;
Writeln('Enter X: ');
Readln(x);
Writeln('Enter Y: ');
Readln(y);
if x=y then
Writeln('Error. Number X = Y !!!')
else
begin
Sf:=0;
Sw:=0;
for k:=1 to n do
begin
if (F[k]>=x) and (F[k]<=y) then
begin
Sf:=n-x;
end
else
begin
Sf:=n-x
end;
if (W[k]>=x) and (W[k]<=y) then
begin
Sw:=y-1;
end
else
begin
Sw:=y-1;
end;
end;
Writeln('Count elements > X = ', Sf);
Writeln('Count elements < Y = ', Sw);
end;
End.