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

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

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

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

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

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

Здравствуйте!

Помогите пожалуйста с задачей, текст программы написан почти полностью, остается только добавить совсем немножко.
Ниже написано условие и текст программы, сдавал его на проверку, преподаватель написал, цитирую:
"I не определено! После цикла I:=N+1!"
Уважаемые, подправьте пожалуйста программу. То ли я уже одурел сидеть у компьютера (целый день задачи делаю), то ли еще что-то - не пойму что и куда нужно подписать... (((

Разработать программу с единственным циклом и ветвлением в теле цикла.
При заданных X1, X2....Xn и Y1, Y2....Yn
получить массив T1, T2....T3
элементы которого получают значения по правилу Ti = max(Xi, Yi)
и подсчитать, сколько элементов Ti получило значение Xi.



Код:
procedure TForm1.Button1Click(Sender: TObject);
Const
NMAX = 20; {Максимальное кол-во элементов массива}
Type
TMas = Array [1..NMAX] of Real; {Диапазон значений массива и тип переменных в массиве}
Var
X: TMas; {Исходный массив}
Y: TMas; {Исходный массив}
T: Tmas; {Массив который нам надо получить}
N: Integer; {Кол-во элементoв массива}
I: Integer; {Параметр цикла}
KolX: Integer; {Счетчик}
begin
N := StrToInt(EditN.Text); //Задаем N (Кол-во элементов массива)
For I:=1 To N Do 
  Begin
    X[I] := StrToFloat(StringGrid1.Cells[I-1, 0]); // Вводим X
    Y[I] := StrToFloat(StringGrid1.Cells[I-1, 1]); // Вводим Y
End;
KolX:=0; //Присваиваем счетчику 0 
For I:=1 To N Do
  If X[I]>Y[I]
    Then
        Begin 
        T[I]:=X[I];
        KolX:=KolX+1; 
End 
Else 
T[I]:=Y[I];
EditR.Text:=IntToStr(KolX); //Вывод результата
StringGridT.Cells[0,I-1]:=FloatToStr(T[I]); //Вывод Т
end; 
end
Kawun вне форума Ответить с цитированием
Старый 12.12.2008, 20:12   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

я не пойму программа работает ? ! - Судя по тексту вроде ДА .... - А если преподу не нравиться пусть доказывает ... =))
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 12.12.2008, 20:28   #3
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

А вот с работой какая-то петрушка получается, то она работала..то запускаю тест, пишет:
[Warning] Unit1.pas(63): FOR-Loop variable 'I' may be undefined after loop
И при этом делфи ничего красным не выделяет, просто строчка скачет вниз и запускаться не хочет...
Kawun вне форума Ответить с цитированием
Старый 12.12.2008, 20:33   #4
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Kawun Посмотреть сообщение
StringGridT.Cells[0,I-1]:=FloatToStr(T[I]);

[/CODE]
Посмотри на эту строку .... Откуда ты тут берешь І ??? =)))
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 12.12.2008, 20:34   #5
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

это предупреждение а не ошибка
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 12.12.2008, 20:37   #6
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Хм, не пойму тогда, почему из-за предупреждения у меня программа не запускается..

Цитата:
Откуда ты тут берешь І ??? =)))
Эээ, незнаю)
Ребят я в этом деле бамбук совсем)) Утром сидел-сидел, днем сидел - не понимаю что куда надо написать =)
Kawun вне форума Ответить с цитированием
Старый 12.12.2008, 20:42   #7
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Kawun Посмотреть сообщение


Код:
procedure TForm1.Button1Click(Sender: TObject);
Const
NMAX = 20; {Максимальное кол-во элементов массива}
Type
TMas = Array [1..NMAX] of Real; {Диапазон значений массива и тип переменных в массиве}
Var
X: TMas; {Исходный массив}
Y: TMas; {Исходный массив}
T: Tmas; {Массив который нам надо получить}
N: Integer; {Кол-во элементoв массива}
I: Integer; {Параметр цикла}
KolX: Integer; {Счетчик}
begin
N := StrToInt(EditN.Text); //Задаем N (Кол-во элементов массива)
For I:=1 To N Do 
  Begin
    X[I] := StrToFloat(StringGrid1.Cells[I-1, 0]); // Вводим X
    Y[I] := StrToFloat(StringGrid1.Cells[I-1, 1]); // Вводим Y
End;
KolX:=0; //Присваиваем счетчику 0 

[I]{Начало цикла}
For I:=1 To N Do
  If X[I]>Y[I]
    Then
        Begin 
        T[I]:=X[I];
        KolX:=KolX+1; 
End 
Else 
T[I]:=Y;
{Конец цикла}

EditR.Text:=IntToStr(KolX); //Вывод результата

{Вот тут походу нужег цикл ... Потому как I не изменяется ... =)) }

StringGridT.Cells[0,I-1]:=FloatToStr(T[I]); //Вывод Т По условию тебе Вообще цикл Т не надо выводить ! !! =)) Удали строку и будет Счастье =)) 
end; 
end
Вроде так ... Посмотри =))
Skype : UASm1Le.

Последний раз редактировалось Sm1Le; 12.12.2008 в 20:45.
Sm1Le вне форума Ответить с цитированием
Старый 12.12.2008, 20:50   #8
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Цитата:
По условию тебе Вообще цикл Т не надо выводить ! !! =)) Удали строку и будет Счастье =))
Да изначально я только KolX вывел, а тут препод пристал - выводи Т говорит)
Kawun вне форума Ответить с цитированием
Старый 12.12.2008, 20:52   #9
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Куда именно ? выводить то надо ? Если в Таблицу то в какие ячейки ?
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 12.12.2008, 20:54   #10
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Эм, этого препод не пояснил)

Короче говоря, форма должна быть таковой:
1Эдит - ввод N
2Эдит - вывод KolX

1Сетка - ввод Х и Y
2Сетка - вывод Т (тоесть Т выводиться должен в отдельную сеточку стрнггрид)
Kawun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста - все очень просто. alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 2 09.12.2008 16:41
срочная помощь. очень не просто! sverhuVniz Паскаль, Turbo Pascal, PascalABC.NET 0 02.12.2008 19:12
Sorry за флуд,просто очень помощь нужна... gluk9090 Microsoft Office Access 4 12.05.2008 00:53
Ну просто очень нужно помощь Doget Помощь студентам 5 26.03.2008 14:28
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10