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

Code: Select all

  Readln(y); 
  begin


Вот этот бегин явно лишний. Я же написал: в двух местах, а ты воткнул в трех. Кроме того, сосчитай-ка количество 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.