Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Задача на массивы 
:(
    Опции темы
Alex103
Дата 24.10.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: -1
Всего: нет



Дело в следующем мне нужно решить задачку по информатике а я так и не понял что от меня хотят! Может кто подскажет или поможет решить!

Заранее благодарен Александр!!!!!



1. Даны два массива: М1 = (-5, 10, 21, 35, -9, 11, 4, 5) и М2 = (1, 5, 10, -3, 4, -15, 36, 6, 11). Найти их объединение и результат записать в массив М3.


2. 




Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  __________.JPG 13,50 Kb


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Snowy
Дата 24.10.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 4
Всего: 484



Модератор: Перенесено из Паскаля
PM MAIL   Вверх
Palladin
Дата 25.10.2006, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Объединения это те места в которых элементы сошлись, короче строй на листе бумаги по точкам две линии, по одной на каждый из массивов, где пересекутся когда пересекутся это и будут твои точки
 М1 = (-5, 10, 21, 35, -9, 11, 4, 5) и М2 = (1, 5, 10, -3, 4, -15, 36, 6, 11).
допустим 
-5 и 1 =разошлись
10 и 5=пересеклись
21 и 10=пересеклись и расходятся ну и т.д. 

Но мне чёто кажется что задача у тебя не такая, скорее всего тебе нужно просто найти элементы которые есть и в первом и во втором массиве и вывести на экран
P.S. Может я и не прав smile 



--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Alex103
Дата 25.10.2006, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: -1
Всего: нет



Да задача именно на то что нужно сделать третий масив в котором будут те элементы которых нет в одном из масивов! Тоесть нужно третему масиву началь6но значение дать 2-го масива а потом сравнить его с первым! ТОлько я не знаю как записать это на паскале! Помогите сложить код!!!!!!! Плиз! Очень нужно!Я просто в масивах плохо разбираюсь!!!!!!!!!!1


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
SoWa
Дата 25.10.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 3
Всего: 74



Код

for i:=1 to n do
for j:=1 to n do
 begin
  if m1[i]=m2[j] then m3[i]:=m1[i];
 end;


C учетом того, что пересечения множеств- это одинаковые элементы.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Palladin
Дата 25.10.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Вот тебе вся программа, благо время есть свободно smile 
Короче я немного улучшу программу пользователь сам будет вводить два массиваsmile
Код

program RooR;
var
m1,m2,m3:array[1..100]of integer;
i,j,m,n,k:integer;
begin
 Writeln('Vvedite kol-vo elementov massiva M1: ');
 Readln(m);
 Writeln('Vvedite kol-vo elementov massiva M2:  ');
 readln(n);
 if (m1>0)and(m2>0)and(n<=100)and(m<=100) then
  begin
   Writeln('-------------------------------Vvedite massiv M1------------------------------');
   
   for i:=1 to m do
    begin
     Write('M1[',i,']= ');
     Readln(m1[i]);
    end;  
    Writeln('-------------------------------Massiv M1 VVEDEN------------------------------');
    Writeln('-------------------------------Vvedite massiv M2------------------------------');
    
    for j:=1 to n do
     begin
     Write('M2[',j,']= ');
     Readln(m2[i]);
     end;
     k:=1;
      if n>m then begin
    for j:=1 to n do
    for i:=1 to m do
     begin
     if m1[j]=m2[i] then begin m3[k]:=m1[j]; k:=k+1;
     end; 
     end;
     end
     else
    for j:=1 to m do
    for i:=1 to n do
     begin
      if m1[j]=m2[i] then begin m3[k]:=m1[j]; k:=k+1;
     end; 
    t:=k;
    Writeln('------------------MASSIV M1--------------');
    for i:=1 to m do
    Write(m1[i]);
     
    Writeln('------------------MASSIV M2--------------');
    for j:=1 to n do
    Write(m2[i]);

        Writeln('------------------MASSIV M3--------------');
    for k:=1 to t do
    Write(m3[k]);

 end 
  else writeln('Vi vveli nekorektnuyoyu informaciyou!!!!!!');

 Readln;
end.
 
P.S. Не тестил, писал на форуме:) 
2SoWa твой вариант подходит но если кол-во элементов массивов будет разным то возможны лаги ;-) 


Добавлено @ 12:41 
Да вот тебе вторая задача smile 
ТОже пишу на форуме такчто траблы возможныsmile

Код

Program RooR;
var
z:array[1..100,1..100]of real;
i,j,n,m:integer;
begin
Writeln('Vvedite kol-vo strok: ');
Readln(n);
Writeln('Vvedite kol-vo stolbcov: ');
Readln(m);
 for i:=1 to n do
 for j:=1 to m do
  begin
  Write('Z[',i,j,']= ');
  readln(z[i,j]);
  end;

 for i:=1 to n do
 for j:=1 to m do
  begin
   if z[i,j]<=0 then begin  z[i,j]:=z[i,j]*z[i,j]; end
   else
  z[i,j]:=z[i,j]*z[i,j]*z[i,j];
  end;

 //Ну а тут обычный вывод массива(матрицы) на экран, сам уже напишеш :thumbs-up 
  end.


Добавлено @ 12:42 
С тебя репа smile  smile  smile 

Это сообщение отредактировал(а) RooR - 25.10.2006, 12:32


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
volvo877
Дата 25.10.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(RooR @  25.10.2006,  11:31 Найти цитируемый пост)
P.S. Не тестил, писал на форумеsmile 

Это теперь везде так пишется. Чтобы потом было что сказать, если вдруг обнаружатся ошибки... А они обнаружатся, даже не сомневайся:

1) ты некорректно вводишь массив m2 - все введенные значения записываются в одну и ту же ячейку, меняем i на j (та же ошибка - при выводе массивов на печать)...
2) m1 и m2 нельзя сравнивать с нулем, это, извини, массивы... Меняем на m, n
3) комбинация 
Код

      if n>m then begin
    for j:=1 to n do
    for i:=1 to m do
     begin
     if m1[j]=m2[i] then begin m3[k]:=m1[j]; k:=k+1;
     end; 
     end;
     end
     else
    for j:=1 to m do
    for i:=1 to n do
     begin
      if m1[j]=m2[i] then begin m3[k]:=m1[j]; k:=k+1;
     end; 
мало того, что ужасно выглядит (зачем одно и то же писать 2 раза, если можно сделать проще), так еще пропущен End, и будет ошибка...
4) T надо было описывать, если уж взялся писать программы.
5) K после заполнения массива m3 у тебя будет на 1 больше, чем нужно, следовательно проще изначально k := 0, и увеличивать его ПЕРЕД занесением очередного элемента...

Вот рабочий вариант:
Код
function max(a, b: integer): integer;
begin
  max := a;
  if b > a then max := b;
end;

var
m1,m2,m3:array[1..100]of integer;
i,j,m,n,k, T:integer;
begin
 Writeln('Vvedite kol-vo elementov massiva M1: ');
 Readln(m);
 Writeln('Vvedite kol-vo elementov massiva M2:  ');
 readln(n);

 if (m>0)and(n>0)and(n<=100)and(m<=100) then begin

   Writeln('-------------------------------Vvedite massiv M1------------------------------');

   for i:=1 to m do begin
     Write('M1[',i,']= ');
     Readln(m1[i]);
   end;

   Writeln('-------------------------------Massiv M1 VVEDEN------------------------------');
   Writeln('-------------------------------Vvedite massiv M2------------------------------');

   for j:=1 to n do begin
     Write('M2[',j,']= ');
     Readln(m2[j]);
   end;

   k:=0;
   for j := 1 to max(n, m) do
     for i := 1 to (n + m) - max(n, m) do
       if m1[j] = m2[i] then begin
         inc(k); m3[k] := m1[j];
       end;

    t := k;
    Writeln('------------------MASSIV M1--------------');
    for i:=1 to m do Write(m1[i]:4);
    writeln;

    Writeln('------------------MASSIV M2--------------');
    for j:=1 to n do Write(m2[j]:4);
    writeln;

    Writeln('------------------MASSIV M3--------------');
    for k:=1 to t do Write(m3[k]:4);
    writeln;
 end
   else writeln('Vi vveli nekorektnuyoyu informaciyou!!!!!!');
 Readln;
end.


Это сообщение отредактировал(а) volvo877 - 25.10.2006, 15:46
PM MAIL   Вверх
Palladin
Дата 25.10.2006, 15:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Значит так Volvo, по порядку
1) Не мог бы ты не нервничать и держатся в руках????
2) Там написано не два раза одно и тоже, "смотри внимательнее" это заметь твоя любимая фраза, там идёт проверка на размерность, т.е. если получится что первый массив больше другого то именно каждый элемент первого нужно сверять со всеми второго, и наоборот, если  не заметил там иф есть для этого smile 
3) Писал на форуме и это действительно так
4) По поводу end согласен мог пропустить т.к. ПИСАЛ НА ФОРУМЕ
5) С индексом лоханулся спорить не буду, но это именно потому что ПИСАЛ НА ФОРУМЕ И ЭТО УКАЗАЛ!!!
6)m1 и m2 тоже согласен сравнивать ясное дело нельзя, но это ПОТОМУ ЧТО ПИСАЛ НА ФОРУМЕ
7) По поводу убожества, то это твоё личное мнение
8) Доработал мой код до рабочего, ну и молодец, тебе попозже спасибо скажут, но мне чёто кажется что если бы я не написал эту программу ты бы даже не зашёл сюда, моё мнение: ты просто захотел в очередной раз попытатся показать своё превосходство(которого на мой взгляд нет, или же ты его оч хорошо скрываеш)


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Alex103
Дата 26.10.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: -1
Всего: нет



Цитата(volvo877 @ 25.10.2006,  15:45)
Цитата(RooR @  25.10.2006,  11:31 Найти цитируемый пост)
P.S. Не тестил, писал на форумеsmile 

Это теперь везде так пишется. Чтобы потом было что сказать, если вдруг обнаружатся ошибки... А они обнаружатся, даже не сомневайся:

1) ты некорректно вводишь массив m2 - все введенные значения записываются в одну и ту же ячейку, меняем i на j (та же ошибка - при выводе массивов на печать)...
2) m1 и m2 нельзя сравнивать с нулем, это, извини, массивы... Меняем на m, n
3) комбинация 
Код

      if n>m then begin
    for j:=1 to n do
    for i:=1 to m do
     begin
     if m1[j]=m2[i] then begin m3[k]:=m1[j]; k:=k+1;
     end; 
     end;
     end
     else
    for j:=1 to m do
    for i:=1 to n do
     begin
      if m1[j]=m2[i] then begin m3[k]:=m1[j]; k:=k+1;
     end; 
мало того, что ужасно выглядит (зачем одно и то же писать 2 раза, если можно сделать проще), так еще пропущен End, и будет ошибка...
4) T надо было описывать, если уж взялся писать программы.
5) K после заполнения массива m3 у тебя будет на 1 больше, чем нужно, следовательно проще изначально k := 0, и увеличивать его ПЕРЕД занесением очередного элемента...

Вот рабочий вариант:
Код
function max(a, b: integer): integer;
begin
  max := a;
  if b > a then max := b;
end;

var
m1,m2,m3:array[1..100]of integer;
i,j,m,n,k, T:integer;
begin
 Writeln('Vvedite kol-vo elementov massiva M1: ');
 Readln(m);
 Writeln('Vvedite kol-vo elementov massiva M2:  ');
 readln(n);

 if (m>0)and(n>0)and(n<=100)and(m<=100) then begin

   Writeln('-------------------------------Vvedite massiv M1------------------------------');

   for i:=1 to m do begin
     Write('M1[',i,']= ');
     Readln(m1[i]);
   end;

   Writeln('-------------------------------Massiv M1 VVEDEN------------------------------');
   Writeln('-------------------------------Vvedite massiv M2------------------------------');

   for j:=1 to n do begin
     Write('M2[',j,']= ');
     Readln(m2[j]);
   end;

   k:=0;
   for j := 1 to max(n, m) do
     for i := 1 to (n + m) - max(n, m) do
       if m1[j] = m2[i] then begin
         inc(k); m3[k] := m1[j];
       end;

    t := k;
    Writeln('------------------MASSIV M1--------------');
    for i:=1 to m do Write(m1[i]:4);
    writeln;

    Writeln('------------------MASSIV M2--------------');
    for j:=1 to n do Write(m2[j]:4);
    writeln;

    Writeln('------------------MASSIV M3--------------');
    for k:=1 to t do Write(m3[k]:4);
    writeln;
 end
   else writeln('Vi vveli nekorektnuyoyu informaciyou!!!!!!');
 Readln;
end.

Твоя программа работает ! Но делает она не то что нужно! Мне нужно что-бы 3-й массив содержал в себе только те элементы которы встречаються и в одном и другом массиве и еще те елементы которых нет в одном из массивов Короче говоря массив М3 должен иметь вид 

(1, 5, 10, -3, 4, -15, 36, 6, 11, -5, 21, 35, -9,)



--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Alexeis
Дата 26.10.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
const
 l1 = 10;
 l2 = 14;

var
 mas1 : array [1..l1] of Integer = (33, 17, 24, 82, 4, 39, 57, 97, -14, 71);
 mas2 : array [1..l2] of Integer = (-45, 39, 86, -13, 17, 71, 56, 33, 61, 67,
                                    2, 24, 13, 28);
                                    
 mas3 : array [1..l1 + l2] of Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
 I, j, k : Integer;
 Fl: Boolean;
 s : AnsiString;

begin
  k := 1;
  for i := 1 to l1
  do
    begin
      fl := false;
      for j := 1 to l2
      do
        if mas1[i] = mas2[j]
        then
          Begin
            mas3[k] := mas1[i];
            fl := True;
            Inc(k);
            Break;
          end;
    end;

  for i := 1 to l1
  do
    begin
      fl := false;
      for j := 1 to l2
      do
        if mas1[i] = mas2[j]
        then
          Begin
            fl := True;
            Break;
          end;

        if Not Fl
        then
          begin
            mas3[k] := mas1[i];
            Inc(k);
          end;
    end;

  for i := 1 to l2
  do
    begin
      fl := false;
      for j := 1 to l1
      do
        if mas1[j] = mas2[i]
        then
          Begin
            fl := True;
            Break;
          end;

        if Not Fl
        then
          begin
            mas3[k] := mas2[i];
            Inc(k);
          end;
    end;

  s := '';
  for i := 1 to l1
  do
    s := S + IntToStr(mas1[i]) + ' ';

  Memo1.Lines.Add(S);

  s := '';
  for i := 1 to l2
  do
    s := S + IntToStr(mas2[i]) + ' ';

  Memo1.Lines.Add(S);

  s := '';
  for i := 1 to k - 1
  do
    s := S + IntToStr(mas3[i]) + ' ';

  Memo1.Lines.Add(S);
end;

end.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
volvo877
Дата 27.10.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(Alex103 @  26.10.2006,  16:58 Найти цитируемый пост)
Мне нужно что-бы 3-й массив содержал в себе только те элементы которы встречаються и в одном и другом массиве и еще те елементы которых нет в одном из массивов
А тебе не кажется, что ЭТО надо было писать в задании???  smile 

А ты что написал?
Цитата(Alex103 @  24.10.2006,  22:08 Найти цитируемый пост)
1. Даны два массива: М1 = (-5, 10, 21, 35, -9, 11, 4, 5) и М2 = (1, 5, 10, -3, 4, -15, 36, 6, 11). Найти их объединение и результат записать в массив М3.
Какое же к чертям собачьим объединение, если 
Цитата(Alex103 @  26.10.2006,  16:58 Найти цитируемый пост)
еще те елементы которых нет в одном из массивов
??? Думаешь, что пишешь, или как?

PM MAIL   Вверх
Alexeis
Дата 27.10.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Цитата(volvo877 @  27.10.2006,  08:58 Найти цитируемый пост)
А тебе не кажется, что ЭТО надо было писать в задании??? 


Да этим страдают многие новички. Что поделаешь...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alex103
Дата 27.10.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: -1
Всего: нет



Возникла проблемма с последней 2-ой задачей! Тот код не работает хотя должен работать!Вроди все записано правильно!Но может я не правильно вывожу на экран массив!Помогите разобраться!

Код

  for i:=1 to n do
 for j:=1 to m do
  begin
  Write(Z[i,j]:4);



Заранее благодарен!


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Kuvaldis
Дата 28.10.2006, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



Alex103
вывод 2-мерного массива делается обычно так (построчно)
Код

 for i := 1 to n do
begin    
     for j := 1 to m do    
         Write(Z[i, j] : 4);
     Writeln;                       // переход на новую строку
end;



--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1073 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.