Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2008, 13:53   #1
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию Программа в Delphi не хочет работать. (Одномерный массив).

Добрый день.
Столкнулся я с проблемой в задаче.

Условие:
Разработать программу с единственным циклом для обработки одномерных массивов.
При заданных Х1, Х2….Хn найти отношение A / B, где:
А = Х1 + Х2 +….+ Хn
B = Х1 * Х2 *….* Хn.

Текст программы:
Код:
procedure TForm1.Button1Click(Sender: TObject);
Const NMAX = 20; {Максимальное кол-во элементов массива}
Type TMas= Array [1..NMAX] of Real;
Var
X: TMas; {Исходный массив Х}
A: Real;
B: Real;
N: Integer; {Кол-во элементов массива X}
I: Integer; {Параметр цикла}
begin
N:=StrToInt (EditN.Text);
For I:=1 To N Do
A:=0;
B:=1;
begin
X[i]:=StrToFloat (StringGridX.Cells [I-1, 0]);
end;
For I:=1 To N Do
A:=A+X[i];
B:=B*X[i];
StringGridX.Cells[I-1,0]:=FloatToStr(X[I]);
end;

end.
Проблема показана на картинке-скриншоте: http://s47.radikal.ru/i117/0811/28/dedd2017a9aa.gif

Как видно на картинке я вводил в строчку N число 10, при нажатии кнопки "Использовать" вылетает ошибка.

Подскажите пожалуйста где я натупил...то ли код программы совсем кривой, то ли я в форму забыл что-то добавить - никак не пойму(
Спасибо.
Kawun вне форума Ответить с цитированием
Старый 14.11.2008, 14:11   #2
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Подправил.
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  NMAX = 20; {Максимальное кол-во элементов массива}
type
  TMas = Array [1..NMAX] of Real;
var
  Mas: TMas; {Исходный массив Х}
  A: Real;
  B: Real;
  N: Integer; {Кол-во элементов массива X}
  I: Integer; {Параметр цикла}
begin
  N := StrToInt(Edit1.Text);
  A := 0;
  B := 1;
  for I := 1 to N do
    Mas[i] := StrToFloat(StringGrid1.Cells[0, I - 1]);
  for I := 1 to N do
  begin
    A := A + Mas[i];
    B := B * Mas[i];
    StringGrid1.Cells[I - 1, 0] := FloatToStr(Mas[i]);
  end;
  ShowMessage('A = ' + FloatToStr(A) + #13 + 'B = ' + FloatToStr(B));
end;
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 14.11.2008, 14:17   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  NMAX = 20; {Максимальное кол-во элементов массива}
type
  TMas = Array [1..NMAX] of Real;
var
  Mas: TMas; {Исходный массив Х}
  A: Real;
  B: Real;
  N: Integer; {Кол-во элементов массива X}
  I: Integer; {Параметр цикла}
begin
  N := StrToInt(Edit1.Text);
  A := 0;
  B := 1;
  for I := 1 to N do
     begin
       Mas[i] := StrToFloat(StringGrid1.Cells[0, I - 1]);
       A := A + Mas[i];
       B := B * Mas[i];
     end;
  ShowMessage('A /B= ' + FloatToStrF(A/b,ffFixed,5,2) ;
end;
puporev вне форума Ответить с цитированием
Старый 14.11.2008, 14:22   #4
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

странный какой-то код..... после первого For у вас нету begin'а....... а это значит што у вас в цикле только A:=0; остальное вне цикла.... со вторым циклом то же самое.... затем A и B у вас просчитывается (в идеале, если бегины добавить), но не выводится..... т.е. впринципе то что вы ввели из ячейки (которые на картинке у вас не заполнены) выводится обратно....
Блин...... малях опоздал)))) столько внимания эта тема привлекла)))
Надо бы избавиться от привычки ставить многоточие.....

Последний раз редактировалось Min; 14.11.2008 в 14:26. Причина: я опоздун))))
Min вне форума Ответить с цитированием
Старый 14.11.2008, 14:34   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если человек что-то делает, но не получается, грех не помочь.
puporev вне форума Ответить с цитированием
Старый 14.11.2008, 14:59   #6
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Большое спасибо за код!
Но все еще у меня не получается закончить этот проект(.
Мне кажется, что я допускаю ошибку/забываю что-то сделать непосредственно в самой форме.
Другими словами - код верный, но "приделать" к оболочке я его не могу. (Прошу прощения за такой жаргон))

Сейчас я подробно распишу свои действия с формой:

Создаю новый проект, размещаю на форме Edit1, Button1, StringGrid1. Больше ничего не создаю в ней.

Далее выделяю кнопку Button1, иду в Events и ставлю OnClick - Button1Click.
Потом копирую код puporev'a.

Все. Больше ничего не делаю.
Нажимаю F9, ввожу в текстовое поле число, жму кнопку Buton1 - и снова ошибка.

Как мне кажется я чего-то не сделал со StringGrid1, а что там нужно сделать - я не знаю.
Подскажите, пожалуйста, как код прикрутить к оболочке.
Kawun вне форума Ответить с цитированием
Старый 14.11.2008, 15:01   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Как мне кажется я чего-то не сделал со StringGrid1, а что там нужно сделать - я не знаю.
Наверное данные надо ввести.
puporev вне форума Ответить с цитированием
Старый 14.11.2008, 15:08   #8
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Наверное данные надо ввести.
Подскажите как это сделать. У меня StringGrid1 не активна. (Кликую по ней - а толку никакого, она никак не выделяется и ввести в нее ничего не получается.
Kawun вне форума Ответить с цитированием
Старый 14.11.2008, 16:05   #9
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Kawun, держи. Только учти, что у меня Delphi 2009.
Вложения
Тип файла: rar Array.rar (242.8 Кб, 13 просмотров)
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.

Последний раз редактировалось VVM; 14.11.2008 в 16:08.
VVM вне форума Ответить с цитированием
Старый 14.11.2008, 16:26   #10
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от VVM Посмотреть сообщение
Kawun, держи. Только учти, что у меня Delphi 2009.
Спасибо! Вроде проблем нет (несмотря что у меня 7ая версия).
Kawun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив в delphi d3[Z.oRg] Помощь студентам 7 18.06.2011 15:04
Одномерный массив в Delphi (Задача) Kawun Помощь студентам 10 18.06.2011 14:21
одномерный массив ldx Паскаль, Turbo Pascal, PascalABC.NET 4 06.06.2008 17:45
поиск ни как не хочет работать Gooch БД в Delphi 6 05.04.2008 20:53
одномерный массив fatdog Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 23.02.2008 10:05