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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2007, 22:31   #1
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
Вопрос Помогите довести до ума две процедуры!

Нужна помощь в исправлении двух данных обработчиков!

Первый! (Это решение задачи: Вводится число. Определить, является ли оно степенью двойки?!):

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: extended;
begin
i:=StrToFloat(Edit1.Text);
while (((i mod 2)<>1) or (i <> 2)) do
  i:= i/2;
if (i<>2) then
Label1.Caption:=('It is not a power of two!')
  else
Label1.Caption:=('Yes it is!');
end;
А вот тут, нужно подправить вывод результата в СтрингГрид:

Код:
procedure TForm1.Button5Click(Sender: TObject);
var s: string;
    i,k: integer;
    flag: boolean;
begin
k:=0;
flag:=False;
for i:=0 to ListBox1.Items.Count-2 do
begin
if (StrToInt(ListBox1.Items[i])-1=StrToInt(ListBox1.Items[i+1])) then
begin
if not flag then
begin
flag:=True;
s:=IntToStr(ListBox1.Items[i]);
StringGrid1.RowCount:=k+1;
StringGrid1.Cells[0,k]:=s;
inc(k);
end;
 begin
flag:=True;
s:=IntToStr(ListBox1.Items[i+1]);
StringGrid1.RowCount:=k+1;
StringGrid1.Cells[0,k]:=s;
inc(k);
end else
flag:=False;
end;
end;
end;
//Очень нужна ваша помощь!
end;
end.


Последний раз редактировалось Mr.User; 27.11.2007 в 01:19.
Mr.User вне форума Ответить с цитированием
Старый 27.11.2007, 16:22   #2
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

№1.Значит это на паскале, немного переделаешь и вуаля.
Код:
program sd;
uses crt;
var i,z: real;s:string;f,q:integer;
begin
readln(s); q:=0;
i:=StrToFloat(s);
while (i>=2) do
begin
  i:= i/2;
  q:=q+1;// степень двойки
  end;z:=1;
  for f:=1 to q do
  z:=2*z; // число в исходной степени
if (z=StrToFloat(s)) then //если исходное число=числу в нашей степени..
writeln('Yes it is!')
  else
writeln(('Yes not'));
end.
bill вне форума Ответить с цитированием
Старый 27.11.2007, 16:29   #3
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию -=1=-

Код:
//Является ли число степенью двойки?
function is_power_2(x: Word): Boolean;
begin
  is_power_2 := (x > 0) and ((x and Pred(x)) = 0)
end;
Alex21 вне форума Ответить с цитированием
Старый 27.11.2007, 16:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А вот тут, нужно подправить вывод результата в
СтрингГрид:
Совсем код непонятный...
А что в нем не так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2007, 00:19   #5
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Спасибо за помощь!
Цитата:
Сообщение от Stilet Посмотреть сообщение
Совсем код непонятный...
А что в нем не так?
У меня есть исходный код!
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    flag: boolean;
begin
ListBox2.Clear;
flag:=False;
for i:=0 to ListBox1.Items.Count-2 do
begin
if (StrToInt(ListBox1.Items[i])-1=StrToInt(ListBox1.Items[i+1])) then
begin
if not flag then
begin
flag:=True;
ListBox2.Items.Add(IntToStr(i));
end;
ListBox2.Items.Add(IntToStr(i+1));
end else
flag:=False;
end;
end;
Он берёт данные из Лист-Бокса1., а результат выводит в Лист-Бокс2.
Мне понадобилось сделать точно такую-же программу, но только чтобы результат выводился в СтрингГрид1.
Код, который я прошу исправить, - это и есть попытка сделать вывод в СтрингГрид.
А сама задача звучит так:
Дана последовательность чисел. Построить последовательность номеров позиций, откуда начинаются подряд идущие значения, расположенные в порядке убывания.
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 28.11.2007, 01:00   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если наличествуют фиксированные столбцы и строки:
Код:
procedure TForm1.Button1Click(Sender: TObject);   
var i,j: integer;   
    flag: boolean;   
begin   
for i:=1 to StringGrid1.ColCount-1 do
for j:=1 to StringGrid1.RowCount-1 do
StringGrid1.Cells[i,j]:='';
StringGrid1.RowCount:=1;   
flag:=False;   
for i:=0 to ListBox1.Items.Count-2 do   
begin   
if (StrToInt(ListBox1.Items[i])-1=StrToInt(ListBox1.Items[i+1])) then   
begin   
if not flag then   
begin   
flag:=True;   
Inc(StringGrid1.RowCount);
StringGrid1.Cells[1,StringGrid1.RowCount]:=IntToStr(i); 
end;   
Inc(StringGrid1.RowCount);
StringGrid1.Cells[1,StringGrid1.RowCount]:=IntToStr(i+1); 
end else   
flag:=False;   
end;   
end;
З.Ы. Это только у меня глюк? Или в предыдущих постах повторы кодовых вставок по 3-5 раза?
mihali4 вне форума Ответить с цитированием
Старый 28.11.2007, 01:34   #7
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Большое СПАСИБО!

Цитата:
Сообщение от mihali4 Посмотреть сообщение
З.Ы. Это только у меня глюк? Или в
предыдущих постах повторы кодовых вставок по 3-5 раза?
Не только у Вас! Помоему у всех так!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 28.11.2007, 01:50   #8
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Что у вас не так? есть специальная тема о форуме, где уже сообщили о ошибке, ошибка была исправлена. Если есть вопросы пишие, пожалуйста, здесь - http://programmersforum.ru/forumdisplay.php?f=37
Alar вне форума Ответить с цитированием
Старый 28.11.2007, 01:58   #9
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Уже всё нормально!

92. Inc(StringGrid1.RowCount);

[Pascal Error] Unit1.pas(92): E2064 Left side cannot be assigned to

А что тут нужно подкоректировать?
end;
end.


Последний раз редактировалось Mr.User; 28.11.2007 в 02:24.
Mr.User вне форума Ответить с цитированием
Старый 28.11.2007, 10:21   #10
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

StringGrid1.RowCount:=StringGrid1.R owCount+1;
Alex21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с написанием процедуры... Bkmz66 Помощь студентам 1 15.05.2008 13:27
Помогите с оформлением процедуры Absent Помощь студентам 2 01.12.2007 18:33